2013-03-08 15 views
6

Bir Ubuntu 12.04 sisteminde Supervisor'dan Gunicorn'u çalıştırmaya çalışıyorum. Gunicorn bir Flask uygulaması (Flask'ın yerleşik sunucusu ile test edilen basit REST web servisi) çalıştırır. GIT repo'yu klonlayarak Gunicorn'u yükledim, 'apt-get install' den kaçınmaya çalışıyorum çünkü onu yüklerken Gunicorn sunucusunu çalıştırıyor. Koşmak istemiyorum, sadece Danışman tarafından yönetilecek.Supervisor Gunicorn + Flask ile çalışmıyor

cd /usr/local/bin 
gunicorn my_app:app -c /path/to/gu_config_file 

Gunicorn çalışır: Denersem

Yani sonra yükleyin. Sonra onu öldürürüm. '.py' uzantısı benim için çalışmadığı için, uzantı içermeyen yapılandırma dosyasını not edin. Tez

[program:gunicorn] 
command=/usr/local/bin/gunicorn my_app:app -c /path/to/.gu_setup 
directory=/usr/local/bin/ 
autostart=true 
autorestart=true 
redirect_stderr=True 

Ve güncelleme değişiklikleri: yüzden gibi Kontrolör'ün yapılandırma dosyasını düzenlemek

supervisorctl reread 
# gunicorn: changed 
supervisorctl update 
# gunicorn: stopped 
# gunicorn: updated process group 

dosyada değişikliklerini algılar ve Gunicorn programı için çalışır. Tamam, ama sonra bunu başlatmayı deneyin:

supervisorctl start gunicorn 

sinir bozucu bir Başlarken:

gunicorn: ERROR (abnormal termination) 

denetçinin günlüğünü kontrol etme: Şu anda ne yapacağını bilmiyorum

2013-03-08 13:07:22,378 INFO spawned: 'gunicorn' with pid 3355 
2013-03-08 13:07:22,916 INFO exited: gunicorn (exit status 3; not expected) 
2013-03-08 13:07:23,918 INFO spawned: 'gunicorn' with pid 3361 
2013-03-08 13:07:24,492 INFO exited: gunicorn (exit status 3; not expected) 
2013-03-08 13:07:26,496 INFO spawned: 'gunicorn' with pid 3367 
2013-03-08 13:07:27,078 INFO exited: gunicorn (exit status 3; not expected) 
2013-03-08 13:07:30,085 INFO spawned: 'gunicorn' with pid 3373 
2013-03-08 13:07:30,628 INFO exited: gunicorn (exit status 3; not expected) 
2013-03-08 13:07:31,630 INFO gave up: gunicorn entered FATAL state, too many start retries too quickly 

.. . Bana yardımcı olabilir misiniz? Çok fazla!/Usr/local/bin olduğunu

export PYTHONPATH=/usr/local/bin:/usr/local/lib/project 

'MY_APP':

DÜZENLEME: ben PYTHONPATH değişkeni ihraç var demeyi unuttun üzgün. Diğer modüller için lib yolu gereklidir. ben gibi, çevre değişkeni belirtmek için ayrıca Danışman yapılandırma dosyasını düzenledikten:

environment=PYTHONPATH=/usr/local/bin:/usr/local/lib/project/ 

Ama işe yaramadı.

DÜZENLEME 2: onun yorumunda önermek @robertklep gibi bu günlüğünün çıktısı şöyledir: ...

Traceback (most recent call last): 
    File "/tmp/gunicorn/gunicorn/arbiter.py", line 485, in spawn_worker 
    worker.init_process() 
    File "/tmp/gunicorn/gunicorn/workers/base.py", line 100, in init_process 
    self.wsgi = self.app.wsgi() 
    File "/tmp/gunicorn/gunicorn/app/base.py", line 103, in wsgi 
    self.callable = self.load() 
    File "/tmp/gunicorn/gunicorn/app/wsgiapp.py", line 25, in load 
    return util.import_app(self.app_uri) 
    File "/tmp/gunicorn/gunicorn/util.py", line 369, in import_app 
    __import__(module) 
    File "/usr/local/bin/my_app.py", line 4, in <module> 
    import const 
ImportError: No module named const 
2013-03-08 13:29:35 [3670] [INFO] Worker exiting (pid: 3670) 
2013-03-08 13:29:36 [3665] [INFO] Shutting down: Master 
2013-03-08 13:29:36 [3665] [INFO] Reason: Worker failed to boot. 

'const' modülü/usr/local/lib/projede olduğu

cevap

8

ı don

: bu işe yaramazsa

[program:gunicorn] 
environment=PYTHONPATH=/usr/local/bin:/usr/local/lib/project 
command=/usr/local/bin/gunicorn my_app:app -c /path/to/.gu_setup 
... 

, hata ayıklama modunda gunicorn başlatmayı deneyin: 't Eğer yönetici yapılandırma dosyasında çevreyi ayarı bkz

command=/usr/local/bin/gunicorn --debug --log-level debug my_app:app -c /path/to/.gu_setup 

Veya yolunu geçmesi doğrudan gunicorn için:

command=/usr/local/bin/gunicorn --pythonpath /usr/local/bin,/usr/local/lib/project my_app:app -c /path/to/.gu_setup 

DÜZENLEME:, yalnızca bir dizin geçebilir --pythonpath bozuldu gunicorn en: Bu gerekli geçiş --pythonpath değil

command=/usr/local/bin/gunicorn --pythonpath /usr/local/lib/project my_app:app -c /path/to/.gu_setup 
+0

Evet, bunu yaptım ve aynı zamanda bana yanıt verirken sorumu düzenlediler ... üzgünüm! Söylediklerinizi yapıyorum, bekle! :) –

+0

Bu yüzden bana 'const' modülünü bulamıyor, ama/usr/local/lib/projesinde, Supervisor'un konfigürasyon dosyasında çevreye eklenmiş olduğunu söylüyor ... –

+0

Patronu doğrudan patikadan geçirme hakkındaki düzenlememe bakın. – robertklep

3

.Eğer virtuanenv çalışıyorsan, topçu silahı ekledin. Örnek: Flask kodu olduğunda

command=/home/virtualenv/bin/gunicorn application:app -c /home/virtualenv/deploy/gunicorn.conf.py 

Ve dizin, örnek olarak:

directory=/home/virtualenv/myapp 

kullanıcı köküdür unutmayın!

user=root