Difference between revisions of "Deployment Aplikasi Flask di Ubuntu 24.04"
Jump to navigation
Jump to search
Onnowpurbo (talk | contribs) |
Onnowpurbo (talk | contribs) |
||
| Line 1: | Line 1: | ||
| − | + | 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 | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | python app.py | ||
| − | |||
Tambahkan ini kalau kamu mau bisa akses langsung: | Tambahkan ini kalau kamu mau bisa akses langsung: | ||
| − | + | if __name__ == '__main__': | |
| − | if __name__ == '__main__': | + | app.run(host='0.0.0.0') |
| − | |||
| − | |||
| − | + | ==Jalankan dengan Gunicorn== | |
| − | + | gunicorn --bind 0.0.0.0:8000 app:app | |
| − | |||
| − | |||
| − | gunicorn --bind 0.0.0.0:8000 app:app | ||
| − | |||
Cek dengan: `http://YOUR_SERVER_IP:8000` | Cek dengan: `http://YOUR_SERVER_IP:8000` | ||
| − | + | ==(Opsional) Buat File Service Systemd== | |
| − | + | sudo nano /etc/systemd/system/flaskapp.service | |
| − | |||
| − | |||
| − | sudo nano /etc/systemd/system/flaskapp.service | ||
| − | |||
Isi dengan: | Isi dengan: | ||
| − | + | [Unit] | |
| − | [Unit] | + | Description=Gunicorn instance to serve flaskapp |
| − | Description=Gunicorn instance to serve flaskapp | + | After=network.target |
| − | After=network.target | + | |
| − | + | [Service] | |
| − | [Service] | + | User=ubuntu |
| − | User=ubuntu | + | Group=www-data |
| − | Group=www-data | + | WorkingDirectory=/home/ubuntu/flaskapp |
| − | WorkingDirectory=/home/ubuntu/flaskapp | + | Environment="PATH=/home/ubuntu/flaskapp/venv/bin" |
| − | Environment="PATH=/home/ubuntu/flaskapp/venv/bin" | + | ExecStart=/home/ubuntu/flaskapp/venv/bin/gunicorn --workers 3 --bind unix:flaskapp.sock -m 007 app:app |
| − | ExecStart=/home/ubuntu/flaskapp/venv/bin/gunicorn --workers 3 --bind unix:flaskapp.sock -m 007 app:app | + | |
| − | + | [Install] | |
| − | [Install] | + | WantedBy=multi-user.target |
| − | WantedBy=multi-user.target | ||
| − | |||
> Ganti `ubuntu` sesuai user kamu, dan `WorkingDirectory` sesuai folder. | > Ganti `ubuntu` sesuai user kamu, dan `WorkingDirectory` sesuai folder. | ||
| Line 100: | Line 68: | ||
Lalu: | Lalu: | ||
| − | + | sudo systemctl daemon-reexec | |
| − | sudo systemctl daemon-reexec | + | sudo systemctl daemon-reload |
| − | sudo systemctl daemon-reload | + | sudo systemctl start flaskapp |
| − | sudo systemctl start flaskapp | + | sudo systemctl enable flaskapp |
| − | sudo systemctl enable flaskapp | ||
| − | |||
| − | |||
| − | |||
| − | + | ==Konfigurasi Nginx== | |
| − | + | sudo nano /etc/nginx/sites-available/flaskapp | |
| − | sudo nano /etc/nginx/sites-available/flaskapp | ||
| − | |||
Isi dengan: | Isi dengan: | ||
| − | + | nginx | |
| − | server { | + | 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: | Aktifkan config-nya: | ||
| − | + | sudo ln -s /etc/nginx/sites-available/flaskapp /etc/nginx/sites-enabled | |
| − | sudo ln -s /etc/nginx/sites-available/flaskapp /etc/nginx/sites-enabled | + | sudo nginx -t |
| − | sudo nginx -t | + | sudo systemctl restart nginx |
| − | sudo systemctl restart nginx | ||
| − | |||
| − | |||
| − | |||
| − | + | ==(Opsional) Tambah HTTPS dengan Let's Encrypt== | |
Install Certbot: | Install Certbot: | ||
| − | + | sudo apt install certbot python3-certbot-nginx -y | |
| − | sudo apt install certbot python3-certbot-nginx -y | ||
| − | |||
Dapatkan SSL gratis: | Dapatkan SSL gratis: | ||
| − | + | sudo certbot --nginx -d your_domain.com | |
| − | sudo certbot --nginx -d your_domain.com | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | ==Final Cek== | |
| − | |||
| − | |||
| − | + | * Akses aplikasi: `http://your_domain.com` atau `http://your_server_ip` | |
| + | * Gunicorn berjalan sebagai service | ||
| + | * Nginx mengarahkan trafik ke Flask | ||
| − | + | ==Bonus: Struktur Folder== | |
| − | + | flaskapp/ | |
| − | flaskapp/ | + | │ |
| − | │ | + | ├── app.py |
| − | ├── app.py | + | ├── venv/ |
| − | ├── venv/ | + | └── flaskapp.sock (auto created by gunicorn) |
| − | └── flaskapp.sock (auto created by gunicorn) | ||
| − | |||
| − | |||
| − | + | ==Pranala Menarik== | |
| − | + | * [[Web Programming]] | |
Latest revision as of 08:15, 8 April 2025
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
- Akses aplikasi: `http://your_domain.com` atau `http://your_server_ip`
- Gunicorn berjalan sebagai service
- Nginx mengarahkan trafik ke Flask
Bonus: Struktur Folder
flaskapp/ │ ├── app.py ├── venv/ └── flaskapp.sock (auto created by gunicorn)