使用Supervisor管理uWSGI进程的Django应用程序无法读取环境变量问题解决

项目中通过配置环境变量区分生产、开发、测试环境,代码如下:

WSGI_ENV = os.environ.get("DJANGO_CONF_MODULE", "")
RUN_MODE = 'DEVELOP'
if WSGI_ENV.endswith("production"):
    RUN_MODE = "PRODUCT"
    DEBUG = False
elif WSGI_ENV.endswith("testing"):
    RUN_MODE = "TEST"
    DEBUG = False
else:
    RUN_MODE = "DEVELOP"
    DEBUG = True

项目部署在服务器上后,发现配置的环境变量没起作用,这就奇了怪了,一时半会还真没找到原因,只能通过在配置文件里写死环境配置了。

今天一时兴起,又想来揪出这问题,无意中发现在手动启动uwsgi进程时,程序是能读取到配置系统的环境变量,使用Supervisor管理的uwsgi进程无法读取到,好了,问题就此揪出了。

解决方案:
Supervisor在program的配置文件中有environment配置,项目中的环境变量需要配置在此。

[program:xxx]

command=/usr/local/bin/uwsgi --ini /project/xxx/uwsgi.ini
directory=/project/xxx

user=root
numprocs=1

stdout_logfile=/var/log/django/xxx.log
stderr_logfile=/var/log/django/xxx.log
autostart=true
autorestart=true
startsecs=10
priority=997
environment=DJANGO_CONF_MODULE="production"
posted @ 2017-09-11 14:09  寻_FIND  阅读(810)  评论(0编辑  收藏  举报