设置系统环境变量

时间:2020-08-30 19:56:10

标签: python ubuntu flask service

我有一个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 / environment

DATABASE_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

1 个答案:

答案 0 :(得分:1)

详细的here将变量放入server.service时需要更正某些语法。这是我使用的语法。

[Service]
Environment="SECRET=pGNqduRFkB4K9C2vijOmUDa2kPtUhArN"