我有一个 flask 服务器正在运行,如果不转储所有环境变量,我就无法让它作为服务运行。
如果没有 DATABASE_URL 环境变量,这是我应该使用 sqlite 的配置。它每次都有效,除非我将它作为服务运行,而此时它永远不会起作用。
#SQL Alchemy Database config
if os.environ.get('DATABASE_URL') is None:
print('Using SQLITE')
SQLALCHEMY_TRACK_MODIFICATIONS = False
SQLALCHEMY_DATABASE_URI = ('sqlite:///' + os.path.join(basedir, 'app.db') + '?check_same_thread=False')
else:
print('Using MySQL')
SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL')
SQLALCHEMY_TRACK_MODIFICATIONS = False
#SQLALCHEMY_DATABASE_URI = ('mysql+pymysql://username:password@localhost/20200830MYSQL')
#export DATABASE_URL="mysql+pymysql://username:password@localhost/20200830MYSQL"
将它放在/etc/environment 中适用于我手动运行时,但不适用于服务。这里是/etc/environmentDATABASE_URL="mysql+pymysql://username:password@localhost/20200830MYSQL"
在终端中执行以下命令也不适用于我的服务。export DATABASE_URL="mysql+pymysql://username:password@localhost/20200830MYSQL"
我还将它放在/etc/systemd/system 的 server.service 文件中,但它仍然无法正常工作。这是 server.service 文件:[Unit]
Description=Server
After=multi-user.target
[Service]
DATABASE_URL="mysql+pymysql://username:password@localhost/20200830MYSQL"
WorkingDirectory=/home/jon/server
ExecStart=/home/jon/server/env/bin/gunicorn -k gevent -b 0.0.0.0:5080 app:app
Restart=always
[Install]
RequiredBy = multi-user.target
最佳答案
详细here当我将变量放入 server.service 时,我需要更正一些语法。这是我使用的语法。
[Service]
Environment="SECRET=pGNqduRFkB4K9C2vijOmUDa2kPtUhArN"
关于python - 设置系统环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63661587/