Saya memiliki masalah dalam menyebarkan aplikasi Django menggunakan Gunicorn dan Supervisor. Meskipun saya bisa membuat Gunicorn melayani aplikasi saya (dengan mengatur PYTHONPATH yang tepat dan menjalankan perintah yang tepat, yang dari supervisord config) saya tidak bisa membuat supervisor untuk menjalankannya. Itu tidak akan melihat aplikasi saya. Saya tidak tahu bagaimana memastikan apakah file config ok.
Inilah yang dikatakan supervisorctl:
# supervisorctl start myapp_live
myapp_live: ERROR (no such process)
Saya menjalankannya di Ubuntu 10,04 dengan konfigurasi berikut:
File / home / myapp/live/deploy/supervisord_live.ini:
[program:myapp_live]
command=/usr/local/bin/gunicorn_django --log-file /home/myapp/logs/gunicorn_live.log --log-level info --workers 2 -t 120 -b 127.0.0.1:10000 -p deploy/gunicorn_live.pid webapp/settings_live.py
directory=/home/myapp/live
environment=PYTHONPATH='/home/myapp/live/eco/lib'
user=myapp
autostart=true
autorestart=true
Di /etc/supervisor/supervisord.conf, di akhir file, ada:
[include]
files = /etc/supervisor/conf.d/*.conf
dan inilah symlink ke file config saya:
# ls -la /etc/supervisor/conf.d
lrwxrwxrwx 1 root root 48 Dec 4 18:02 myapp-live.conf -> /home/myapp/live/deploy/supervisord_live.ini
semuanya terlihat baik untuk saya tetapi supervisorctl hanya terus berkata myapp_live: ERROR (no such process)
. Ada solusi untuk ini?
sumber
reread
atauupdate
. Ternyata saya telah menyimpan file konfigurasi saya sebagaifoo.conf.py
gantinyafoo.conf
sehingga mereka tidak diidentifikasi.Jawaban:
Saya memiliki masalah yang sama, a
melakukan trik, meskipun saya tidak tahu apakah itu jawaban untuk pertanyaan Anda.
sumber
/etc/init.d/supervisor restart
tidak bekerja ketika manual berhenti dan mulai dilakukan.ps aux | grep supervisor
dan kemudiansudo kill -HUP pid
Jawaban yang benar adalah bahwa penyelia mengharuskan Anda membaca kembali dan memperbarui ketika Anda menempatkan file konfigurasi baru. Restart bukan jawabannya, karena itu akan memengaruhi layanan lain. Mencoba:
sumber
Pastikan file conf supervisor Anda diakhiri dengan .conf
Butuh waktu beberapa saat untuk memikirkannya. Semoga ini membantu orang selanjutnya.
sumber
Reload proses supervisor master mungkin berhasil, tetapi akan memiliki efek samping yang tidak diinginkan jika Anda memiliki lebih dari satu proses yang dipantau oleh supervisor.
Cara yang benar untuk melakukannya adalah dengan mengeluarkan
supervisorctl reread
yang menyebabkannya memindai file konfigurasi untuk setiap perubahan:Kemudian, cukup memuat ulang aplikasi itu:
sumber
avail
. Tambahkan ke proses (kembali) yang dapat dimulai dengan mengeluarkansupervisorctl update
. Lihat juga jawaban Mark serverfault.com/a/479754/125887supervisorctl update
itu perlu.Saya mengalami masalah ini menggunakan paket pengawas, versi 3.0a8-1.1 dari Ubuntu Server 12.10. Saya akhirnya memecahkan masalah dengan membaca bantuan bawaan:
Khususnya Anda ingin menggunakan sintaks:
Seperti yang dinyatakan dalam dokumentasi di http://supervisord.org/configuration.html#programx-section - "Bagian [program: x] sebenarnya mewakili" grup proses yang homogen "kepada penyelia (per 3.0)." Jadi mungkin masalahnya pertama kali muncul di versi 3.0.
PS: Saya baru ke pengawas; Saya menggunakan https://github.com/bdarnell/tornado-production-skeleton/blob/8ad055457646929c0e8f48aaf20d98f054b1787b/production/chat.supervisor sebagai contoh bentuk konfigurasi minimal.
sumber
Saya punya masalah yang sama (
myapp_live: ERROR (no such process)
) dan itu karena definisi proses sayapadahal seharusnya
Meskipun ini tidak menjawab pertanyaan yang diajukan, saya dipimpin di sini oleh Pencarian yang mencari solusi untuk masalah saya, jadi semoga orang lain juga menemukannya di sini.
sumber
[program]
hanya sebagai , mengikuti dokumen, tetapi membuatnya[program:redis]
membuatnya bekerja untuk saya. Terkadang hal-hal menjadi aneh!Saya menemukan solusi ini paling nyaman:
EDIT: sebelum melakukan ini, periksa jalur supervisorctl Anda gunakan
which supervisorctl
untuk memastikan Anda menambahkan jalur yang benar ke sudoers.Tambahkan baris ini ke file sudoers menggunakan
visudo
(di mana:myappuser
- pengguna yang perlu me-restart aplikasi Anda,myapp
- nama aplikasi):Dan kemudian secara sederhana:
Anda tidak terikat dengan skrip startup distribusi dan Anda memberikan hak yang cukup sempit untuk pengguna me-restart aplikasi gunicorn Anda. Juga, Anda tidak perlu peduli dengan pid. Perintah tidak akan meminta kata sandi sehingga cocok untuk skrip bash / fabric auto-deployment. Di sisi lain - Anda harus sadar, bahwa jika supervisorctl rentan terhadap beberapa bug yang menyebabkan eksekusi kode, pengguna jahat dapat menggunakan hak akses sudo ini untuk menjalankan kode sebagai root (tetapi sejauh yang saya tahu tidak ada bug seperti itu ditemukan untuk supervisord dan itu adalah hal besar untuk menemukan kerentanan seperti itu).
sumber
Membaca kode supervisorctl.py di sini: https://github.com/Supervisor/supervisor/blob/master/supervisor/supervisorctl.py
Anda dapat melihat bahwa pembaruan supervisorctl (fungsi do_update) memanggil reloadConfig () persis seperti membaca ulang supervisorctl (fungsi do_reread).
Jadi saya pikir tidak perlu menelepon ulang jika Anda memanggil pembaruan setelahnya.
Dari hasil kesalahan git sudah seperti ini sejak setidaknya sejak Juli 2009.
sumber
Ini daftar periksa:
File config baru harus dinamai sesuai dengan pola include yang dikonfigurasi di /etc/supervisord.conf:
Seperti yang kita lihat dalam kasus saya, spam.ini akan dimasukkan, tetapi spam.conf tidak akan.
Jika Anda membuat file baru dengan menyalin yang lama, pastikan untuk benar-benar mengubah
[program:]
baris. Karena jika Anda sebodoh memiliki dua file untuk program yang sama,supervisorctl reread
akan meninggalkan Anda dengan pesan kesalahan tanpa harapan sebagai hukuman:Jika file Anda terdeteksi,
supervisorctl reread
harus mengatakan sesuatu seperti:Kemudian,
supervisorctl update spam
keduanya harus memulainya dan membuatnya muncul disupervisorctl status
.sumber
Saya telah menemukan skrip init.d tidak dapat diandalkan pada berbagai versi Ubuntu / Debian yang berbeda. Cara melakukannya adalah ini:
sumber
Hati-hati dengan symlink dan sertakan file pada Supervisor. Ini akan memungkinkan siapa pun dengan hak istimewa di /home/myapp/live/deploy/supervisord_live.ini untuk mengubah file ini dan memulai kode berbahaya apa pun. File ini harus di dalam direktori conf atasan Anda atau di subdirektori di bawahnya.
sumber
Saya telah menginstal supervisrod dengan yum install, yang menginstal supervisor versi v2. *. Pengawas mendukung eksternal hanya mencakup dari versi 3. Harus menggunakan easy_install sebagai gantinya, untuk menginstal supervisor v3.
sumber