在生产/暂存环境中设置DJANGO_SETTINGS_MODULE的正确方法是什么?

时间:2015-07-28 20:56:02

标签: django gunicorn django-settings virtualenvwrapper django-wsgi

This question问道,但答案并不是关于使用Gunicorn。

如何在生产环境中正确设置DJANGO_SETTINGS_MODULE到生产,并在我的暂存环境中暂存?

我有两个设置文件 - staging.pyproduction.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的正确方法是什么?

0 个答案:

没有答案