我试图设置我的django“SECRET_KEY”在一个环境variables。
我使用virtualenv + virtualenvwrapper的环境。
打完之后
workon mydomain.com
我input
export SECRET_KEY=xxxxxx
当我尝试做
echo $SECRET_KEY
我得到我的价值(xxxxxx)
到现在为止还挺好。 但是,当我尝试访问我的网站在浏览器中(使用ngnix和gunicorn),我得到一个错误。
这是我的gunicorn supervisord脚本
[program:gunicorn] directory = /home/<USER>/.virtualenvs/<DOMAIN>/<PROJECT>/ command=/home/<USER>/.virtualenvs/<DOMAIN>/bin/gunicorn <PROJECT>.wsgi:application -c /home/<USER>/.virtualenvs/<DOMAIN>/<PROJECT>/<APP>/gunicorn_conf.py user = <USER>
这是我的gunicorn_conf.py:
bind = "127.0.0.1:8000" logfile = "/home/<USER>/logs/gunicorn.log"
这是我的settings.py:
def get_env_variable(var_name): try: return os.environ[var_name] except KeyError: error_msg = "Set the %s environment variable" % var_name raise ImproperlyConfigured(error_msg) SECRET_KEY = get_env_variable("SECRET_KEY")
如何正确设置我的环境variables,使ngnix可以读取它?
Traceback (most recent call last): File "/home/<USER>/.virtualenvs/<DOMAIN>/local/lib/python2.7/site-packages/gunicorn/workers/sync.py", line 125, in handle_request respiter = self.wsgi(environ, resp.start_response) File "/home/<USER>/.virtualenvs/<DOMAIN>/downloads/django-trunk/django/core/handlers/wsgi.py", line 236, in __call__ self.load_middleware() File "/home/<USER>/.virtualenvs/<DOMAIN>/downloads/django-trunk/django/core/handlers/base.py", line 46, in load_middleware for middleware_path in settings.MIDDLEWARE_CLASSES: File "/home/<USER>/.virtualenvs/<DOMAIN>/downloads/django-trunk/django/conf/__init__.py", line 53, in __getattr__ self._setup(name) File "/home/<USER>/.virtualenvs/<DOMAIN>/downloads/django-trunk/django/conf/__init__.py", line 48, in _setup self._wrapped = Settings(settings_module) File "/home/<USER>/.virtualenvs/<DOMAIN>/downloads/django-trunk/django/conf/__init__.py", line 126, in __init__ mod = importlib.import_module(self.SETTINGS_MODULE) File "/home/<USER>/.virtualenvs/<DOMAIN>/downloads/django-trunk/django/utils/importlib.py", line 35, in import_module __import__(name) File "/home/<USER>/.virtualenvs/<DOMAIN>/<PROJECT>/<APP>/settings/staging.py", line 2, in <module> from .base import * File "/home/<USER>/.virtualenvs/<DOMAIN>/<PROJECT>/<APP>/settings/base.py", line 40, in <module> SECRET_KEY = get_env_variable("SECRET_KEY") File "/home/<USER>/.virtualenvs/<DOMAIN>/<PROJECT>/<APP>/settings/base.py", line 31, in get_env_variable raise ImproperlyConfigured(error_msg) ImproperlyConfigured: Set the SECRET_KEY environment variable
您可以使用指令environment=VAR1=<VAR1>,VAR2=<VAR2>
来定义管理员配置中的环境变量。
类似的东西:
[program:gunicorn] directory=/home/<USER>/.virtualenvs/<DOMAIN>/<PROJECT>/ command=/home/<USER>/.virtualenvs/<DOMAIN>/bin/gunicorn <PROJECT>.wsgi:application -c /home/<USER>/.virtualenvs/<DOMAIN>/<PROJECT>/<APP>/gunicorn_conf.py user = <USER> environment=SECRET_KEY=<SECRET_KEY>