django:在/ etc / apache2 / envvar中设置环境变量不起作用

时间:2017-10-23 14:07:51

标签: python django apache

我的Ubuntu服务器上有一个Django (v1.11.6)应用Python 3.5 (not using virtualenv)

但是,我想在mod_wsgi中为Django设置环境变量。

由于我未使用virtualenv,因此我在/etc/apache2/envvar中进行了设置。但是apache2服务无法获得它们。

在settings.py中我有SECRET_KEY = get_env_variable("GA_SECRET_KEY")但是apache引发了以下错误:

[Mon Oct 23 14:03:29.180611 2017] [wsgi:error] [pid 30062] [client 194.42.16.145:13576]     SECRET_KEY = os.environ("GA_SECRET_KEY")
[Mon Oct 23 14:03:29.180630 2017] [wsgi:error] [pid 30062] [client 194.42.16.145:13576] TypeError: '_Environ' object is not callable

你知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

我必须在apache2.conf文件中设置environent变量,如:

SetEnv SECRET_KEY '123456778877'

然后在wsgi.py文件中有以下代码:

来自django.core.wsgi导入get_wsgi_application

_application = get_wsgi_application()

def application(environ, start_response):
    # pass the WSGI environment variables on through to os.environ
    os.environ['SECRET_KEY'] = environ['GA_SECRET_KEY']
    return _application(environ, start_response)

然后在settings.py文件中有:

SECRET_KEY = os.environ[SECRET_KEY]