我正在尝试配置nginx + uWSGI来为我的Django应用程序提供服务。
当我将环境变量放入myapp_uwsgi.ini
:
uid = username
gid = username
env = DJANGO_SITE_KEY="..."
它按预期工作。
但是,我的应用程序有一些management commands,它也应该可以访问我定义的环境变量。
如果我将环境变量放到/home/username/.bashrc
:
export DJANGO_SITE_KEY="..."
uWSGI不加载它们。
我试图将环境变量放入一个单独的文件中:
#!/bin/sh
export DJANGO_SITE_KEY="..."
然后从.bashrc
:
. /home/username/environment
和myapp_uwsgi.ini
:
exec-pre-app = . /home/username/environment
在uWSGI日志中,我看到这一行:
running ". /home/username/environment" (pre app)...
但我的Django应用程序无法使用os.environ
访问环境变量。
我也尝试将export
命令放到virtualenvwrapper的preactivate
钩子上并使用uWSGI的virtualenv =
设置,但它也不起作用(我假设钩子只是在使用像workon
这样的virtualenvwrapper命令时执行。
答案 0 :(得分:26)
以下是来自uWSGI开发人员的the answer:
将它们中的每一个(每行一个)放在
形式的文本文件中VAR = VALUE
然后在uWSGI配置
[uwsgi] for-readline = yourfile env = %(_) endfor =
这也适用于yml配置文件:
for-readline: filename
env: %(_)
endfor:
答案 1 :(得分:2)
我使用django-dotenv。将您的env变量放在项目中的.env文件中,然后将其加载到manage.py和wsgi.py中。无需其他配置。 uwsgi和manage.py命令将按预期工作,所有env变量只存储在一个文件中。
答案 2 :(得分:1)