This question问道,但答案并不是关于使用Gunicorn。
如何在生产环境中正确设置DJANGO_SETTINGS_MODULE
到生产,并在我的暂存环境中暂存?
我有两个设置文件 - staging.py
和production.py
。
因为我在设置变量时遇到了问题,所以我只是在manage.py和wsgi.py中设置了默认行:
manage.py
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings.production")
wsgi.py
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings.production")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
...所以在生产中,无论有这个讨厌的变量的恶作剧,如果DJANGO_SETTINGS_MODULE
没有设置,我的制作应用程序将保留在制作设置上。
问题在于我希望我的暂存应用程序保持在暂存设置中,以便电子邮件不会从该(单独)服务器发出。
我在暂存中有上述文件,以及正确设置settings.staging
的这些尝试:
gunicorn.conf:
description "Gunicorn daemon for Django project"
start on (local-filesystems and net-device-up IFACE=eth0)
stop on runlevel [!12345]
# If the process quits unexpectadly trigger a respawn
respawn
setuid django
setgid django
chdir /src
script
export DJANGO_SETTINGS_MODULE="settings.staging"
exec /opt/Envs/mysite/bin/gunicorn \
--name=mysite \
--pythonpath=/opt/Envs/mysite/lib/python2.7/site-packages \
--bind=127.0.0.1:9000 \
--config /src/bin/gunicorn/gunicorn.py \
mysite.wsgi:application
end script
此外,名为/etc/profile.d/myenvvars.sh
的文件包含:
export DJANGO_SETTINGS_MODULE=settings.staging
最后,我使用virtualenvwrapper,/opt/Envs/myappenv/bin
中的这一行:
export DJANGO_SETTINGS_MODULE=settings.staging
正如您所看到的,我尝试使用腰带和吊带技术将设置保持在临时服务器上进行暂存。但是,尽管尝试设置DJANGO_SETTINGS_MODULE=settings.staging
有四种方法,但它仍有时默认为settings.production
并发送电子邮件。
在我的登台服务器和生产服务器上一劳永逸地设置DJANGO_SETTINGS_MODULE
的正确方法是什么?