在wsgi中获取设置文件中的虚拟环境变量
我有一个使用环境变量的Django应用程序(出于安全考虑),这些变量在我的 settings.py
文件中设置:
SECRET_KEY = os.environ['SECRET_KEY']
SECRET_KEY
这个变量是在我的 <virtualenv_path>/bin/postactivate
文件中设置的:
export SECRET_KEY='trololo'
我已经用Apache部署了这个应用,所以我使用了 wsgi.py
文件来激活虚拟环境:
activate_env=os.path.expanduser(envP + "/bin/activate_this.py")
execfile(activate_env, dict(__file__=activate_env))
不幸的是,Apache
出现了崩溃,错误信息是:
KeyError: 'SECRET_KEY'
我的配置哪里出了问题呢?
1 个回答
1
postactivate
文件是一个钩子,当你在 bash 中使用 workon
命令时会被调用。在你的情况下,你调用的是 Python 脚本 activate_this.py
。
我管理我的设置也是这样,但我有一个 postactivate_this.py
文件,用来设置我的环境变量,就像在我的 postactivate
文件中一样:
from os import environ
environ["DJANGO_SECRET_KEY"] = "..."
# etc.
然后在你的 wsgi.py
文件中,你可以写:
activate_env = os.path.expanduser(envP + '/bin/activate_this.py')
postactivate_env = os.path.expanduser(envP + '/bin/postactivate_this.py')
execfile(activate_env, dict(__file__=activate_env))
execfile(postactivate_env, dict(__file__=postactivate_env))
你不需要一个单独的设置文件。