Flask adalah kerangka kerja (Framework) web yang digunakan untuk mengembangkan aplikasi web berbasis Python
Ukuran framework Flask sangat kecil sehingga disebut microframework
Default dari development server untuk framework Flask tidak cocok untuk di lingkungan production.
Saat kita menjalankan aplikasi Flask diberikan warning untuk tidak memnggunakan built-in development server
Misal kita buat script Ptyhon sederhana untuk Flask di folder helloworld
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'Hai Flask!'
app.run(host='0.0.0.0', port=8080)
Kita jalankan dan output akan diberikan warning untuk menggunakan production WSGI server jika untuk production
Gunicorn adalah klien WSGI sederhana yang dapat digunakan untuk menjalankan aplikasi Flask di tahap production
Kita akan coba implementasi Gunicorn untuk aplikasi Flask di tahap production
Install gunicorn
Pertama kita siapkan EC instance Linux sebagai server yang akan menjalankan aplikasi Flask
Berikan rule untuk Custom TCP dengan port 8080 dan source Anywhere agar service dapat ditampilkan di browser
Buka instance menggunakan ssh dari terminal atau Putty jika anda pengguna Windows
Install gunicorn
sudo apt-get install gunicorn
Coba jalankan service gunicorn
gunicorn -b 0.0.0.0:8080 app:app
dan buka browser, masukkan IP Public dengan port 8000
Systemd untuk mengatur Gunicorn
Buat file .service di /etc/systemd/system
Tambahkan 3 komponen yaitu unit, service dan install
Buat file helloworld.service
sudo nano /etc/systemd/system/helloworld.service
‘dan isikan
[Unit]
Description=Gunicorn instance for a simple hello world app
After=network.target
[Service]
User=ubuntu
Group=www-data
WorkingDirectory=/home/ubuntu/helloworld
ExecStart=/home/ubuntu/.local/bin/gunicorn -b localhost:8080 app:app
Restart=always
[Install]
WantedBy=multi-user.target
untuk atribut ExecStart gunakan perintah which gunicorn untuk melihat lokasi gunicorn
Enable Service
sudo systemctl daemon-reload
sudo systemctl start helloworld
sudo systemctl enable helloworld
Cek di terminal apakah aplikasi sudah berjalan dengan perintah curl localhost:8000
Jika keluar ‘Hai Flask! berarti sudah sukses instalasinya
Setup Nginx Webserver
Selanjutnya kita setup Nginx untuk route request ke Gunicorn
Install Nginx
sudo apt-get install nginx
Run Nginx
sudo systemctl start nginx
sudo systemctl enable nginx
Ketik IP Public di browser untuk cek bahwa Nginx telah berjalan
Edit file default di sites-available
sudo nano /etc/nginx/sites-available/default
Tambahkan script ini dibawah #default
upstream flaskhelloworld {
server 127.0.0.1:8080;
}
Tambahkan proxy_pass di location /
location / {
proxy_pass http://flaskhelloworld;
}
Restart Nginx
sudo systemctl restart nginx
Dan buka IP Public EC2 di browser
Note: jika terjadi perubahan pada code app.py, restart service terlebih dulu
sudo systemctl restart helloworld.service
Sekian Tutorial deployment aplikasi Flask dengan Gunicorn semoga bermanfaat