Deployment Aplikasi Flask di Ubuntu 24.04

From OnnoWiki
Jump to navigation Jump to search

Deployment Aplikasi Flask di Ubuntu 24.04, dari awal sampai bisa diakses via browser pakai domain atau IP publik. Kita akan deploy menggunakan Gunicorn + Nginx supaya production-ready.

Install Dependensi Dasar

sudo apt update && sudo apt upgrade -y
sudo apt install python3 python3-pip python3-venv nginx -y

Siapkan Direktori Project

mkdir ~/flaskapp
cd ~/flaskapp
python3 -m venv venv
source venv/bin/activate

Install Flask dan Gunicorn

pip install flask gunicorn

Buat Aplikasi Flask (`app.py`)

# app.py

from flask import Flask 

app = Flask(__name__)

@app.route('/')
def home():
    return "Hello, Metro TV from Flask on Ubuntu 24.04!" 

Test Jalankan Lokal

python app.py

Tambahkan ini kalau kamu mau bisa akses langsung:

if __name__ == '__main__':
    app.run(host='0.0.0.0')

Jalankan dengan Gunicorn

gunicorn --bind 0.0.0.0:8000 app:app

Cek dengan: `http://YOUR_SERVER_IP:8000`

(Opsional) Buat File Service Systemd

sudo nano /etc/systemd/system/flaskapp.service

Isi dengan:

[Unit]
Description=Gunicorn instance to serve flaskapp
After=network.target 

[Service]
User=ubuntu
Group=www-data
WorkingDirectory=/home/ubuntu/flaskapp
Environment="PATH=/home/ubuntu/flaskapp/venv/bin"
ExecStart=/home/ubuntu/flaskapp/venv/bin/gunicorn --workers 3 --bind unix:flaskapp.sock -m 007 app:app

[Install]
WantedBy=multi-user.target

> Ganti `ubuntu` sesuai user kamu, dan `WorkingDirectory` sesuai folder.

Lalu:

sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl start flaskapp
sudo systemctl enable flaskapp

Konfigurasi Nginx

sudo nano /etc/nginx/sites-available/flaskapp

Isi dengan:

nginx
server {
    listen 80;
    server_name your_domain.com;  # Atau IP kamu

    location / {
        include proxy_params;
        proxy_pass http://unix:/home/ubuntu/flaskapp/flaskapp.sock;
    }
}

Aktifkan config-nya:

sudo ln -s /etc/nginx/sites-available/flaskapp /etc/nginx/sites-enabled
sudo nginx -t
sudo systemctl restart nginx

(Opsional) Tambah HTTPS dengan Let's Encrypt

Install Certbot:

sudo apt install certbot python3-certbot-nginx -y

Dapatkan SSL gratis:

sudo certbot --nginx -d your_domain.com

Final Cek

Bonus: Struktur Folder

flaskapp/
│
├── app.py
├── venv/
└── flaskapp.sock (auto created by gunicorn)


Pranala Menarik