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

Mengganti IP Address Ubuntu Server 16.04

Seringkali jika kita order dedicated server, kita akan dapat IP address lebih dari satu, dan kadang karena pertimbangan tertentu, kita ingin mengganti IP ke IP lain. Bagaimana caranya?

Sunting berkas /etc/network/interfaces, sesuaikan IP address dengan yang baru kemudian jalankan perintah:

ifdown eth0; ifup eth0

Kalau sedang login via ssh, maka terminal session pasti nge-freeze, karena koneksi terputus, tidak apa-apa, tunggu beberapa saat kemudian lakukan login kembali menggunakan IP yang baru.

Jangan lupa untuk melakukan restart service2 yang terkait dengan IP lama, misal nginx, dan lain sebagainya.

Reference: Configure Networking on Ubuntu

Cara Setup nginx x-accel-redirect

Belum habis kagum dengan nginx pagespeed, barusan nemu salah satu fungsi lagi dari nginx untuk internal redirection. Contoh kasus penggunaan, kadang dalam sebuah proyek kita menyediakan file yang bisa diunduh oleh user, dan umumnya logic ini kita buat di level web app. Karena ini terkait dengan file, tentu dengan nginx kerja akan lebih efisien dan aplikasi web kita bisa bekerja untuk hal yang lain.

Continue reading “Cara Setup nginx x-accel-redirect”

Jangan Pernah Membiarkan Redis Terbuka

Sebenarnya sudah ada feeling ketika membuat tulisan Redis Bikin Panik ini, dan kemarin sudah tidak panik lagi, tapi pasrah… Pasrah karena server kena hack, diduga kuat karena redis yang dibiarkan blong2an tanpa auth. Seberapa parah? Data diangkut semua sama si hacker, nyaris tidak bersisa. Dan karena hampir tidak pernah backup, ya akhirnya pasrah aja, mulai dari awal.

Kalau ada di antara pembaca memanfaatkan redis sebagai salah satu tools, tolong banget untuk mengaktifkan fitur auth-nya.

Sitemap Django Lambat

Sitemap dengan isi cuma 7 ribuan URL kok lambat banget ya, akhirnya diakali dengan nginx, karena ini masih static file juga, biarin nginx aja yang kerja, dikombinasi dengan perintah wget via crontab 5 menit sekali mengunduh file yang asli, kemudian tambahkan location block yang baru di nginx. Hasilnya cuepet!

location /index.xml {
   alias /home/kholidfu/path/to/index.xml;
}

perintah wget di crontab

*/5 * * * * wget https://example.com/sitemap.xml -O /home/kholidfu/path/to/index.xml

Done