2013-01-22 73 views
1

我跟着this tutorial兩次,但在第二臺運行它的機器上,我得到了一個監督者運行的gunicorn錯誤。當我告訴上司啓動gunicorn使用:Gunicorn Supervisor啓動錯誤

$ sudo supervisorctl start gunicorn 
gunicorn: ERROR (abnormal termination) 

的gunicorn_err.log重複這個:

Unknown command: 'run_gunicorn' 
Type 'manage.py help' for usage. 

監督員的配置是這樣的:

[program:gunicorn] 
command=/home/ubuntu/.virtualenvs/<VIRTUALENV>/bin/python /home/ubuntu/<APPNAME>/manage.py run_gunicorn -w 4 -k gevent 
directory=/home/ubuntu/<APPNAME> 
user=www-data 
autostart=true 
autorestart=true 
stdout_logfile = /var/log/supervisor/gunicorn.log 
stderr_logfile = /var/log/supervisor/gunicorn_err.log 

的gunicorn.log是空的。我已經嘗試將用戶更改爲ubuntu並在沒有virtualenv的情況下運行(我的'默認'python環境也準備好了,因爲它具有所有先決條件包。)我甚至嘗試刪除gunicorn中變量賦值之間的空格。 CONF 其實如果我手動運行:

$ /usr/bin/python /home/ubuntu/<APPNAME>/manage.py run_gunicorn -w 4 -k gevent 
2013-01-22 19:20:33 [1231] [INFO] Starting gunicorn 0.17.2 
2013-01-22 19:20:33 [1231] [INFO] Listening at: http://127.0.0.1:8000 (1231) 
2013-01-22 19:20:33 [1231] [INFO] Using worker: gevent 
2013-01-22 19:20:33 [1236] [INFO] Booting worker with pid: 1236 
2013-01-22 19:20:33 [1237] [INFO] Booting worker with pid: 1237 
2013-01-22 19:20:33 [1238] [INFO] Booting worker with pid: 1238 
2013-01-22 19:20:33 [1239] [INFO] Booting worker with pid: 1239 

而且同樣用的virtualenv蟒蛇運行:

$ /home/ubuntu/.virtualenvs/<VIRTUALENV>/bin/python /home/ubuntu/<APPNAME>/manage.py run_gunicorn -w 4 -k gevent 
2013-01-22 19:21:53 [1246] [INFO] Starting gunicorn 0.17.2 
2013-01-22 19:21:53 [1246] [INFO] Listening at: http://127.0.0.1:8000 (1246) 
2013-01-22 19:21:53 [1246] [INFO] Using worker: gevent 
2013-01-22 19:21:53 [1251] [INFO] Booting worker with pid: 1251 
2013-01-22 19:21:53 [1252] [INFO] Booting worker with pid: 1252 
2013-01-22 19:21:53 [1253] [INFO] Booting worker with pid: 1253 
2013-01-22 19:21:53 [1254] [INFO] Booting worker with pid: 1254 

這怎麼可能是上司發起gunicorn不能當我找到「run_gunicorn」命令可以運行它使用任何python環境,它的工作原理?是的'gunicorn',在INSTALLED_APPS

回答

1

原來,這是一個環境變量,我得到的settings.py不存在supervisord的啓動gunicorn下。

此外,被壓了下去環境變量錯誤並沒有把它給gunicorn_err.log

當我切換gunicorn.conf命令:

command = /usr/local/bin/gunicorn_django -w 4 -k gevent 

我能看到更清晰的錯誤在gunicorn_err.log

raise KeyError(key) 
KeyError: 'AWS_STORAGE_BUCKET_NAME' 
2013-01-22 22:51:09 [2290] [INFO] Worker exiting (pid: 2290) 

爲了解決這個問題我只是不使用環境變量使用了不同的方法變量。它的工作那麼我又恢復到原來的virtualenv run_gunicorn命令

command=/home/ubuntu/.virtualenvs/<VIRTUALENV>/bin/python /home/ubuntu/<APPNAME>/manage.py run_gunicorn -w 4 -k gevent 

如果繼續在設置使用環境變量是很重要的,看看supervisord-configuration似乎有配置鍵/值的環境變量對的方式爲supervisord執行的應用程序。