Sharing seputar Dunia Tkj dan Blogging ^^

Tuesday, November 1, 2016

Implementasi uWSGI dan Nginx Sebagai Server Python Apps di Ubuntu


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 :)

Website ini menganut paham demokrasi wkwk
Jangan lupa gunakan emot biar akrab gan (/ ^.^)/
EmoticonEmoticon