Deployment Aplikasi Flask di Ubuntu 24.04: Difference between revisions
From OnnoCenterWiki
Jump to navigationJump to search
No edit summary |
No edit summary |
||
| (One intermediate revision by the same user not shown) | |||
| 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 | |||
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` | |||
Buat | ==(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== | |||
Gunicorn | * 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) | |||
==Pranala Menarik== | |||
* [[Web Programming]] | |||
[ | |||
[ | |||
Latest revision as of 01: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)