2013-06-21 30 views
3

我試圖在環境變量中設置我的django「SECRET_KEY」。如何設置nginx的環境變量來讀取?

對於環境,我使用virtualenv + virtualenvwrapper。

後我輸入

workon mydomain.com 

我輸入

export SECRET_KEY=xxxxxx 

當我嘗試做

echo $SECRET_KEY 

我讓我的值(XXXXXX)

到目前爲止好。但是當我嘗試在瀏覽器中訪問我的網站時(使用ngnix和gunicorn),我得到一個錯誤。

這裏是我的gunicorn

[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> 

這裏supervisord劇本是我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") 

如何正確地做我設置我的環境變量,讓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 
+0

什麼是你的錯誤?你能顯示堆棧跟蹤嗎? – karthikr

+0

添加了錯誤的追溯。 –

回答

2

你可以用指令定義主管的配置環境變量中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> 
+0

你使用哪個版本的supervisord?可用環境3.0 – krasnoperov

+0

運行版本:3.0a8-1.1 –

+1

看起來好像是導致問題的密鑰格式。我的祕密包含了像'=''+''''''''''這樣的字符,如果我刪除了這些字符,並且只有普通字母,它就會起作用。 –