Implementasi uWSGI dan Nginx Sebagai Server Python Apps di Ubuntu

Dapatkan update terbaru Linuxku.com di kanal Telegram https://telegram.me/linuxkudotcom.

Sebelumnya kita telah membahas tentang Nginx sebagai webserver yang menjalankan skrip PHP.

Pada tulisan kali ini kita akan membahas tentang bagaimana cara menjalankan skrip python di web server dengan menggunakan Nginx. Saya tidak membahas tentang teori, fokus pada tulisan ini hanyalah praktek.
Langsung saja kita mulai praktek. Pertama-tama kita pasang dahulu Python dan Nginx di Ubuntu.

$ sudo apt-get update
$ sudo apt-get install python-dev python-pip nginx

Lalu kita pasang virtualenv dengan pip.

$ sudo pip install virtualenv
$ sudo pip install uwsgi

Sebagai contoh kita buat direktori di /home dengan nama mypy:

$ mkdir ~/mypy/
$ cd ~/mypy

Kemudian kita buat virtualenv.

$ virtualenv myapp

Lalu buat skrip python sederhana

$ nano ~/mypy/wsgi.py

Dan isikan skrip python itu seperti di bawah ini:

def application(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/html')])
    return ["<h1 style='color:blue'>Halo Linuxku.com!</h1>"]

Lalu coba kita jalankan:

$ uwsgi --socket 0.0.0.0:8080 --protocol=http -w wsgi

Jika sudah seperti gambar di bawah ini, berarti kita susah sukses memasang uWSGI.

Langkah selanjutnya kita buat uWSGI tersebut jalan di deamon. Berikut ini saya sediakan hanya skrip untuk Ubuntu 14.04 yang mana menggunakan Upstart.

Buat berkas myapp.ini

$ nano ~/mypy/myapp.ini

Lalu isikan seperti berikut:

[uwsgi]
module = wsgi:application

master = true
processes = 5

socket = myapp.sock
chmod-socket = 664
vacuum = true

die-on-term = true

Dan kita buat skrip untuk Upstart:

$ sudo nano /etc/init/myapp.conf 

Masukan skrip berikut:

description "uWSGI instance to serve myapp"

start on runlevel [2345]
stop on runlevel [!2345]

setuid ali
setgid www-data

script
    cd /home/ali/mypy
    . myapp/bin/activate
    uwsgi --ini myapp.ini
end script

Dan coba kita jalankan
$ sudo start myapp
Jika sudah seperti gambar di bawah ini:

Berati sudah sukses. Lalu kemudian coba kita implentasikan di Nginx:

$ sudo nano /etc/nginx/sites-available/default

Kemudian isikan seperti berikut:

server {
    listen 80;
    server_name server_domain_or_IP;

    location / {
        include uwsgi_params;
        uwsgi_pass unix:/home/ali/mypy/myapp.sock;
    }
}

Pastikan konfigurasi Nginx berjalan dengan sempurna, coba kita cek terlebih dahulu dengan:

$ sudo nginx -t

Jika sudah beres langsung saja kita restart Nginx

$ sudo service nginx retart

Sekarang Anda bisa langsung akses skrip python Anda di browser seperti gambar berikut:

Semoga bermanfaat 🙂

Yakin Ngga Mau Diskusi ?

Yuk diskusi cerdas. Gunakan nama asli agar komentar Anda disetujui.