Cara Menjalankan Flask dengan Gunicorn dan Nginx di Ubuntu 16.04

Pada artikel Cara Install Flask di Ubuntu 16.04, Flask dijalankan dengan menggunakan developement server. Tutorial kali ini akan membahas tentang cara menjalankan Flask dengan menggunakan Gunicorn dikombinasikan dengan Nginx di distro Linux Ubuntu 16.04. Ini juga merupakan salah satu cara dalam deployment Flask di server online / VPS.

Gunicorn (Green Unicorn) adalah sebuah WSGI (Web Server Gateway Interface) HTTP Server untuk bahasa pemrograman Python. Gunicorn mengimplementasikan PEP3333 sebuah standar spesifikasi WSGI server sehingga dapat menjalankan aplikasi web Python yang juga mengimplementasikan standar tersebut. Misalnya framework Django, Flask, atau Bottle.

Komunikasi Nginx, Gunicorn, dan Flask (sumber: codingnetworker.com)

Penghubung pertama antara request dari browser pengunjung dengan aplikasi web dilayani oleh Nginx karena berjalan pada port 80, port default dari HTTP. Jika file yang direquest adalah file static seperti gambar, html, css, dan js atau disebut juga frontend maka tetap Nginx yang bekerja. Namun jika yang direquest adalah Flask atau backend maka Nginx menghubungi Gunicorn melalui reverse proxy atau unix-socket. Respon dari Flask dikirim ke Gunicorn lalu ke Nginx dan terakhir ditampilkan pada browser.

-Install pip dan Nginx-

Install pip dan Nginx jika menggunakan Python 2

[INPUT]

1 sudo apt-get install python-pip python-dev nginx

Install pip dan Nginx jika menggunakan Python 3

[INPUT]

1 sudo apt-get install python3-pip python3-dev nginx

-Membuat Virtual Environment-

Selanjutnya membuat virtual environment untuk mengisolasi aplikasi Flask dari Python sistem operasi utama.

Install virtualenv Python 2

[INPUT]

1 sudo pip install virtualenv

Install virtualenv Python 3

[INPUT]

1 sudo pip3 install virtualenv

Membuat folder project Flask

[INPUT]

1 2 mkdir ~/belajar-flask cd ~/belajar-flask

Membuat virtualenv Jika ingin menggunakan Python 2 pada virtualenv

[INPUT]

1 virtualenv -p python2 env

Jika ingin menggunakan Python 3 pada virtualenv

[INPUT]

1 virtualenv -p python3 env

Mengaktifkan virtualenv

[INPUT]

1 source env/bin/activate

Menginstall Flask dan Gunicorn

[INPUT]

1 pip install flask gunicorn

Membuat aplikasi Flask sederhana, menampilkan tulisan

[INPUT]

1 nano aplikasi.py

Isinya

[INPUT]

1 2 3 4 5 6 7 8 9 from flask import Flask appku = Flask(__name__)   @appku.route(“/”) def hello():     return “

Belajar Flask

”   if __name__ == “__main__”:     appku.run(host=’0.0.0.0′)

Menjalankan aplikasi FLask dengan development server

[INPUT]

1 python aplikasi.py

Browsing http://localhost:5000. Jika berhasil menampilkan tulisan Belajar Flask lanjut ke tahap berikutnya.

Membuat file WSGI

[INPUT]

1 nano wsgi.py

Isinya

[INPUT]

1 2 3 4 from aplikasi import appku   if __name__ == “__main__”:     appku.run()

Menguji menjalankan aplikasi dengan Gunicorn

[INPUT]

1 gunicorn –bind 0.0.0.0:5000 wsgi:appku

Nonaktifkan virtual environment

[INPUT]

1 deactivate

-Membuat service untuk aplikasi Flask-

Service ini dibuat agar Gunicorn secara otomatis sejak boot menjalankan aplikasi Flask.

[INPUT]

1 sudo nano /etc/systemd/system/belajarflask.service

Isinya

[INPUT]

1 2 3 4 5 6 7 8 9 10 11 12 13 [Unit] Description=Gunicorn untuk menjalankan aplikasi BelajarFlask After=network.target   [Service] User=musa Group=www-data WorkingDirectory=/home/musa/belajar-flask Environment=”PATH=/home/musa/belajar-flask/env/bin” ExecStart=/home/musa/belajar-flask/env/bin/gunicorn –workers 3 –bind unix:belajar-flask.sock -m 007 wsgi:appku   [Install] WantedBy=multi-user.target

Jalankan service dan enable agar aktif sejak boot

[INPUT]

1 2 sudo systemctl start belajarflask sudo systemctl enable belajarflask

-Konfigurasi Nginx-

Tahap berikutnya mengkonfigurasi Nginx agar berkomunikasi dengan Gunicorn melalui proxy.

[INPUT]

1 sudo nano /etc/nginx/sites-available/belajarflask

Isinya

[INPUT]

1 2 3 4 5 6 7 8 9 server {     listen 80;     server_name NOMOR_IP_ATAU_DOMAIN;       location / {         include proxy_params;         proxy_pass http://unix:/home/musa/belajar-flask/belajar-flask.sock;     } }

Mengaktifkan virtual host/blok konfigurasi Nginx yang baru saja dibuat dengan membuat link ke sites-enabled.

[INPUT]

1 sudo ln -s /etc/nginx/sites-available/belajarflask /etc/nginx/sites-enabled

Menguji apakah ada konfigurasi Nginx yang salah.

[INPUT]

1 sudo nginx -t

Jika tidak ada kesalahan, restart service nginx

[INPUT]

1 sudo systemctl restart nginx

Terakhir browsing http://IP_SERVER_ATAU_DOMAIN

selamat mencoba:)

Leave a Reply

Your email address will not be published.