Supervisord, Supervisorctl, Nginx, Gunicorn dan Django

Bingung mau ngasih judul apa, intinya saya mau setup django yang menggunakan gunicorn dan di run secara daemon menggunakan supervisor. Sebelumnya pastikan Anda sudah memasang supervisor di komputer (mengikuti tutorial dari sini):

pip install supervisor
echo_supervisord_conf > supervisord.conf

Jalankan supervisor

supervisor -c supervisord.conf

Jika tidak ada pesan kesalahan, sekarang tambahkan command gunicorn di bagian paling bawah dari file supervisord.conf tadi. Di saya berikut ini perintah untuk gunicorn:

[program:kesuwen]
command=/Users/macbookpro/git/kesuwen/bin/gunicorn --env DJANGO_SETTINGS_MODULE=/Users/macbookpro/git/kesuwen/app --pythonpath=/Users/macbookpro/git/kesuwen/ --bind=127.0.0.1:8000 app

Jalankan lagi supervisor, dan django + gunicorn sekarang sudah di run via supervisor. Anda dapat juga mencoba supervisorctl untuk fleksibilitas yang lebih, misalnya untuk start/stop program tertentu. Caranya adalah dengan sebelumnya masuk dulu ke console supervisorctl dengan mengetikkan perintah:

supervisorctl -c ~/supervisord.conf

Setelah masuk ke prompt, jalankan perintah berikut untuk start/stop program.

start kesuwen
stop kesuwen

Selamat mencoba

Advertisements

Auto-restart Gunicorn Setiap Menerima Request

Tentu ini bukan untuk production ya, hanya trik untuk level development sehingga tidak perlu capek2 Ctrl+c kemudian running ulang si gunicorn. Caranya adalah dengan menambahkan parameter:

--max-request 1

Jadi perintah utuhnya adalah

bin/gunicorn --log-file=-1 --max-request 1

Atau kalau cuma ingin melakukan restart sesekali, gunakan perintah ini:

pkill -HUP -f gunicorn

Selamat mencoba!