Gunicorn没有使用正确的设置文件Django?

时间:2018-01-14 11:28:10

标签: python django linux gunicorn

在我的wsgi.py我有条件地将DJANGO_SETTINGS_MODULE设置为两个不同的文件(本地和制作)。
在服务器上我设置了#34; PROD" /etc/profile

中的变量
if "PROD" in os.environ:
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings")
else:
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings_dev")

但是,我仍然收到错误,因为没有设置正确的设置文件。也许如果条件不起作用。见下图。

enter image description here

我的gunicorn.service

[Unit]
Description=gunicorn daemon
After=network.target

[Service]
User=root
Group=www-data
WorkingDirectory=/home/myproject/myproject
ExecStart=/usr/local/bin/gunicorn --access-logfile - --workers 3 --bind unix:/home/myproject/myproject/myproject.sock myproject.wsgi:application

[Install]
WantedBy=multi-user.target

2 个答案:

答案 0 :(得分:0)

您应该以这种方式在Gunicorn配置中设置PROD环境变量:

[Service]
environment=PROD=True
User=root
Group=www-data
WorkingDirectory=/home/myproject/myproject
ExecStart=/usr/local/bin/gunicorn --access-logfile - --workers 3 --bind unix:/home/myproject/myproject/myproject.sock myproject.wsgi:application

//编辑:我忽略了你在/etc/profile中设置ENV var ...你可以尝试我的解决方案,否则我会删除我的答案。

答案 1 :(得分:0)

您可以在Gunicorn.service文件中设置环境变量。 Gunicorn可以从那里访问它。

[Service]
...
ExecStart=/virtuall_env_path/bin/gunicorn --workers 3 --bind
unix:/path_to_myproject.sock 
myproject.wsgi:application -e my_var=value -e my_var2=value2
...