我有一个django网站,它使用环境变量DJANGO_MODE
来决定使用哪些设置 - 开发或暂存。环境变量在bashrc
中,当使用开发服务器运行应用程序时,一切正常。
但是当我使用uWSGI
运行应用程序时,它似乎没有注意到环境变量并使用默认(开发)设置而不是生产。
我在Emperor模式下运行uWSGI
,除了忽略环境变量之外,一切似乎都运行正常。是的,运行uWSGI
的用户与bashrc
设置DJANGO_MODE
的用户相同。
用于运行uWSGI
的命令是 -
exec uwsgi --emperor /etc/uwsgi/vassals --uid web_user --gid --web_user
附庸的ini
文件 -
[uwsgi]
processes = 2
socket = /tmp/uwsgi.sock
wsgi-file = /home/web_user/web/project_dir/project/wsgi.py
chdir = /home/web_user/web/project_dir
virtualenv = /home/web_user/.virtualenvs/production_env
logger = syslog
chmod-socket = 777
答案 0 :(得分:9)
它无法正常工作,因为bash会读取bash配置文件。你必须在皇帝或附庸中设置var(第二个是更好的方法)。只需添加
env=DJANGO_MODE=foobar
到您的配置(不要使用空格)。