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

Django + Nginx di Localhost

Prinsip utama yang harus dipahami adalah nginx disini menjadi proxy untuk port 8000 (port default django untuk dev), caranya dengan menambahkan di nginx.conf atau di sites-available/default baris berikut:

server {
    listen 80;
    server_name localhost;
    location / {
        proxy_pass 127.0.0.1:8000;
    }
}

Setelah itu jalankan perintah ./manage.py runserver dan buka localhost di browser, sekarang nginx menjadi web server di local development Anda, kalau mau lebih yakin lagi, buka tools chrome inspect -> network -> Server, localhost dilayani oleh:

Server: nginx/1.10.3

sedangkan URL localhost:8000 dilayani oleh:

Server: WSGIServer/0.2 CPython/3.6.1

Selamat mencoba!

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”

Contoh nginx regex match URL

Contoh:

location ~ ^/read/([0-9]+)/([0-9a-z-]+\.png$) {
    alias /home/kholidfu/awesome/image/$1/$2;
}

Pola regex akan cocok dengan URL berikut:

/read/9999/some-awesome-image.png

Dan nginx akan mencari image tersebut di direktori

/home/kholidfu/awesome/image/9999/some-awesome-image.png

OOT dikit, kenapa menggunakan directive alias bukan root? Jawabannya di sini

Nginx — static file serving confusion with root & alias

Selamat mencoba…

Tentang TTFB (Time To First Byte)

Jika kita membaca artikel dari Google disini, kita akan dapati bahwa Google menyarankan waktu respon server kita jangan sampai lebih dari 200ms. Karena kecepatan situs merupakan salah satu parameter penilaian SEO, bisa jadi jika waktu respon server lebih dari 200ms akan berpengaruh terhadap posisi kita di mata mesin pencari (utamanya Google).

Continue reading “Tentang TTFB (Time To First Byte)”

Featured

Kitab Nginx

Nginx – sebuah aplikasi web server yang cepat dan multi-fungsi, saya sendiri sering memanfaatkan nginx untuk web server, http_image_filter, melayani statics file, optimasi kecepatan loading sebuah halaman, cache dan masih banyak lagi. Untuk itu pantas kiranya dibuatkan featured post tersendiri, biar lebih mudah dicari. Seperti biasa, tulisan ini juga bersifat continuously improved.

Continue reading “Kitab Nginx”