この質問は尋ねますが、答えは Gunicorn の使用に関するものではありません。
DJANGO_SETTINGS_MODULE
実稼働環境で実稼働に、ステージング環境でステージングに正しく設定するにはどうすればよいですか?
と の 2 つの設定ファイルがstaging.py
ありproduction.py
ます。
変数の設定に問題があったため、manage.py と wsgi.py のデフォルトの行を次のようにしました。
管理.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
ご覧のとおり、ステージング サーバーでステージングの設定を維持するために、ベルトとサスペンダーの手法を試しています。ただし、これらの 4 つの方法で を設定しようとしてDJANGO_SETTINGS_MODULE=settings.staging
も、デフォルトのままでsettings.production
メールを送信することがあります。
DJANGO_SETTINGS_MODULE
ステージング サーバーと運用サーバーの両方で一度だけ設定する適切な方法は何ですか?