2014-01-17 80 views
3

即時運行的,除其他事項外,應該重新啓動gunicorn一個Ubuntu服務器上的織物腳本,該命令是如下:gunicorn ERROR(異常結束)

supervisorctl status projectname:gunicorn | sed "s/.*[pid ]\([0-9]\+\)\,.*/\1/" | xargs kill -HUP 

問題是,是,gunicorn犯規出現在第一個地方是這樣運行的過程中不能被殺死,香港專業教育學院SSH方式登錄到Amazon EC2實例和跑

sudo supervisorctl restart projectname:gunicorn' 

,我得到一個錯誤的反應,說:

項目名稱:gunicorn:ERROR(不運行) 項目名稱:gunicorn ERROR(異常終止)

,所以我試圖通過運行

sudo supervisorctl start projectname:gunicorn 

要啓動gunicorn和錯誤說

'項目名稱:gunicorn:錯誤(異常結束)'

所以我需要gunicorn運行,並有麻煩acheiving這

伊夫還檢查gunicorn日誌和下面的文本即時消息,下面是相關的輸出

2014-01-17 14:58:14 [12260] [INFO] Starting gunicorn 0.14.3 
2014-01-17 14:58:14 [12260] [INFO] Listening at: http://127.0.0.1:9000 (12260) 
2014-01-17 14:58:14 [12260] [INFO] Using worker: sync 
2014-01-17 14:58:14 [12263] [INFO] Booting worker with pid: 12263 
2014-01-17 14:58:14 [12264] [INFO] Booting worker with pid: 12264 
2014-01-17 14:58:14 [12265] [INFO] Booting worker with pid: 12265 
2014-01-17 14:58:14 [12266] [INFO] Booting worker with pid: 12266 
2014-01-17 14:58:14 [12263] [INFO] Worker exiting (pid: 12263) 
2014-01-17 14:58:14 [12264] [INFO] Worker exiting (pid: 12264) 
2014-01-17 14:58:14 [12265] [INFO] Worker exiting (pid: 12265) 
2014-01-17 14:58:14 [12266] [INFO] Worker exiting (pid: 12266) 
Traceback (most recent call last): 
File "/opt/screening/env/bin/gunicorn_django", line 9, in <module> 
load_entry_point('gunicorn==0.14.3', 'console_scripts', 'gunicorn_django')() 
File "/opt/compliance_engine/env/local/lib/python2.7/site-packages/gunicorn/app/djangoapp.py", line 129, in run 
DjangoApplication("%prog [OPTIONS] [SETTINGS_PATH]").run() 
File "/opt/compliance_engine/env/local/lib/python2.7/site-packages/gunicorn/app/base.py", line 129, in run 
Arbiter(self).run() 
File "/opt/compliance_engine/env/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 184, in run 
self.halt(reason=inst.reason, exit_status=inst.exit_status) 
File "/opt/compliance_engine/env/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 279, in halt 
self.stop() 
File "/opt/compliance_engine/env/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 327, in stop 
self.reap_workers() 
File "/opt/compliance_engine/env/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 413, in reap_workers 
raise HaltServer(reason, self.WORKER_BOOT_ERROR) 
gunicorn.errors.HaltServer: <HaltServer 'Worker failed to boot.' 3> 

也,這裏是conf文件

[program:gunicorn] 
command=/opt/screening/env/bin/gunicorn_django --pythonpath . ce.settings -w 4 --bind    127.0.0.1:9000 
directory=/opt/screening/repository 
user=www-data 
autostart=true 
autorestart=true 
stdout_logfile=/opt/screening/logs/gunicorn.log 
redirect_stderr=true 

[program:celeryd] 
command=/opt/screening/env/bin/python manage.py celeryd --autoscale=16,2 -E -l INFO --pidfile=/opt/screening/tmp/pids/celeryd.pid 
directory=/opt/screening/repository 
user=www-data 
autostart=true 
autorestart=true 
stdout_logfile=/opt/screening/logs/celeryd.log 
redirect_stderr=true 

[program:celerybeat] 
command=/opt/screening/env/bin/python manage.py celerybeat -l INFO -- schedule=/opt/screening/tmp/celerybeat-schedule -- pidfile=/opt/screening/tmp/pids/celerybeat.pid 
directory=/opt/screening/repository 
user=www-data 
autostart=true 
autorestart=true 
stdout_logfile=/opt/screening/logs/celerybeat.log 
redirect_stderr=true 

[program:celerycam] 
command=/opt/screening/env/bin/python manage.py celerycam -- pidfile=/opt/screening/tmp/pids/celerycam.pid 
directory=/opt/screening/repository 
user=www-data 
autostart=true 
autorestart=true 
stdout_logfile=/opt/screening/logs/celerycam.log 
redirect_stderr=true 

[group:screening] 
programs=gunicorn,celeryd,celerybeat,celerycam 

有什麼想法嗎?我明白,這是大量的文字,任何提示或指針將不勝感激

感謝您的閱讀,

編輯:

跑麒麟自身,激活虛擬env和跑

python manage.py run_gunicorn 

終端打印的下面輸出

2014-01-19 22:02:35 [14735] [INFO] Starting gunicorn 0.14.3 
2014-01-19 22:02:35 [14735] [INFO] Listening at: http://127.0.0.1:8000 (14735) 
2014-01-19 22:02:35 [14735] [INFO] Using worker: sync 
2014-01-19 22:02:35 [14742] [INFO] Booting worker with pid: 14742 

也跑在virtualenv中運行服務器:

python manage.py runserver 7000 
Validating models... 

0 errors found 
Django version 1.3, using settings 'ce.settings' 
Development server is running at http://127.0.0.1:7000/ 
Quit the server with CONTROL-C. 

所以沒有明顯的錯誤有

編輯2:

已經談過這個了幾個其他的人,被告知看對於gunicorn日誌的權限,在這裏,他們是:

-rw-rw-r-- 1 www-data ubuntu 3270504 2014-01-19 23:23 gunicorn.log 

的WWW的數據用戶在主管配置了一組匹配

編輯3:我又跑了gunicorn命令,但這次加入登錄信息:

gunicorn_django --pythonpath . ce.settings -w 4 --bind    127.0.0.1:9000 --debug --log-level debug 

並收到以下錯誤消息:

Traceback (most recent call last): 
    File "/opt/screening/env/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 453, in spawn_worker 
    worker.init_process() 
    File "/opt/screening/env/local/lib/python2.7/site-packages/gunicorn/workers/base.py", line 99, in init_process 
    self.wsgi = self.app.wsgi() 
    File "/opt/screening/env/local/lib/python2.7/site-packages/gunicorn/app/base.py", line 101, in wsgi 
    self.callable = self.load() 
    File "/opt/screening/env/local/lib/python2.7/site-packages/gunicorn/app/djangoapp.py", line 87, in load 
mod = util.import_module("gunicorn.app.django_wsgi") 
    File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module 
__import__(name) 
    File "/opt/screening/env/local/lib/python2.7/site-packages/gunicorn/app/django_wsgi.py", line 18, in <module> 
    from django.core.management.validation import get_validation_errors 
    File "/opt/screening/env/local/lib/python2.7/site-packages/django/core/management/validation.py", line 3, in <module> 
    from django.contrib.contenttypes.generic import GenericForeignKey, GenericRelation 
    File "/opt/screening/env/local/lib/python2.7/site-packages/django/contrib/contenttypes/generic.py", line 6, in <module> 
    from django.db import connection 
    File "/opt/screening/env/local/lib/python2.7/site-packages/django/db/__init__.py", line 14, in <module> 
    if not settings.DATABASES: 
    File "/opt/screening/env/local/lib/python2.7/site-packages/django/utils/functional.py", line 276, in __getattr__ 
    self._setup() 
    File "/opt/screening/env/local/lib/python2.7/site-packages/django/conf/__init__.py", line 42, in _setup 
    self._wrapped = Settings(settings_module) 
    File "/opt/screening/env/local/lib/python2.7/site-packages/django/conf/__init__.py", line 89, in __init__ 
    raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" % (self.SETTINGS_MODULE, e)) 
ImportError: Could not import settings 'ce.settings' (Is it on sys.path?): No module named ce.settings 

2014-01-20 09:14:22 [31830] [INFO] Worker exiting (pid: 31830) 
Traceback (most recent call last): 
    File "/opt/screening/env/bin/gunicorn_django", line 9, in <module> 
load_entry_point('gunicorn==0.14.3', 'console_scripts', 'gunicorn_django')() 
    File "/opt/screening/env/local/lib/python2.7/site-packages/gunicorn/app/djangoapp.py", line 129, in run 
    DjangoApplication("%prog [OPTIONS] [SETTINGS_PATH]").run() 
    File "/opt/screening/env/local/lib/python2.7/site-packages/gunicorn/app/base.py", line 129, in run 
    Arbiter(self).run() 
    File "/opt/screening/env/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 184, in run 
    self.halt(reason=inst.reason, exit_status=inst.exit_status) 
    File "/opt/screening/env/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 279, in halt 
    self.stop() 
    File "/opt/screening/env/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 327, in stop 
    self.reap_workers() 
    File "/opt/screening/env/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 413, in reap_workers 
    raise HaltServer(reason, self.WORKER_BOOT_ERROR) 
gunicorn.errors.HaltServer: <HaltServer 'Worker failed to boot.' 3> 

如此看來,突出的信息是這個:

ImportError: Could not import settings 'ce.settings' (Is it on sys.path?): No module named ce.settings 

我的設置是在設置目錄中,init文件存在,所以心不是這個問題。 另外,應用程序啓動於runServer這樣的設置文件必須是可導入

+0

你能發佈你的gunicorn配置嗎?你也可以單獨運行gunicorn,看看會發生什麼?你也可以在那裏運行芹菜(你的主管配置),這使我相信它可能與gunicorn試圖的同一個端口綁定。 – Rico

+0

我跑了gunicorn和運行服務器,並將該信息添加到原始帖子 也我認爲gunicorn的設置是在上面粘貼的supervior conf文件中?有另一個我需要尋找? – Aesthete

+0

更多信息添加 – Aesthete

回答

2

(此問題已通過在一個問題編輯OP回答轉換爲一個社區維基答案見Question with no answers, but issue solved in the comments (or extended in chat)。)

的OP寫道:

解決這個問題(我認爲)

按照這個鏈接https://stackoverflow.com/a/19256794/2049067的信息,我添加項目到Python路徑中

export PYTHONPATH=:/my/path 

然後再次運行gunicorn命令:

gunicorn_django --pythonpath . ce.settings -w 4 --bind    127.0.0.1:9000 --debug --log-level debug 

gunicorn啓動和運行,而該網站是訪問,我退出了ssh和一切(貌似)還在工作。我還要補充一點,我之前設置的PYTHONPATH我改變了ownerwhip上gunicorn日誌:

sudo chown -R www-data:www-data gunicorn.log 

雖然我不知道這是否有助於

&看到如何應用已經運行了年我不知道該項目是如何從pythonpath中刪除的

+0

解決方案是將硬編碼的Python路徑添加到配置中。這是必要的,因爲您可能正在使用虛擬環境,並且Supervisor默認不會使用VirtualEnv。 –

相關問題