Difference between revisions of "Deployment Aplikasi Flask di Ubuntu 24.04"
Onnowpurbo (talk | contribs) |
Onnowpurbo (talk | contribs) |
||
Line 1: | Line 1: | ||
− | + | Siap Dzaq! Berikut adalah **modul lengkap tentang Deployment Aplikasi Flask di Ubuntu 24.04**, dari awal sampai bisa diakses via browser pakai domain atau IP publik. Kita akan deploy pakai **Gunicorn + Nginx** biar production-ready. | |
− | + | --- | |
− | + | ## 🧰 1. **Install Dependensi Dasar** | |
− | |||
− | ## 1. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
```bash | ```bash | ||
− | sudo apt update | + | sudo apt update && sudo apt upgrade -y |
− | sudo apt upgrade -y | ||
sudo apt install python3 python3-pip python3-venv nginx -y | sudo apt install python3 python3-pip python3-venv nginx -y | ||
``` | ``` | ||
+ | --- | ||
− | + | ## 🛠️ 2. **Siapkan Direktori Project** | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
```bash | ```bash | ||
mkdir ~/flaskapp | mkdir ~/flaskapp | ||
cd ~/flaskapp | cd ~/flaskapp | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
python3 -m venv venv | python3 -m venv venv | ||
source venv/bin/activate | source venv/bin/activate | ||
``` | ``` | ||
− | + | --- | |
− | + | ## 📦 3. **Install Flask dan Gunicorn** | |
```bash | ```bash | ||
− | pip install | + | pip install flask gunicorn |
``` | ``` | ||
− | + | --- | |
− | Buat | + | ## 🧪 4. **Buat Aplikasi Flask (`app.py`)** |
```python | ```python | ||
+ | # app.py | ||
+ | |||
from flask import Flask | from flask import Flask | ||
Line 64: | Line 41: | ||
@app.route('/') | @app.route('/') | ||
− | def | + | def home(): |
− | return " | + | return "Hello, Metro TV from Flask on Ubuntu 24.04!" |
+ | ``` | ||
− | + | --- | |
− | + | ||
+ | ## 🧪 5. **Test Jalankan Lokal** | ||
+ | |||
+ | ```bash | ||
+ | python app.py | ||
``` | ``` | ||
+ | Tambahkan ini kalau kamu mau bisa akses langsung: | ||
− | + | ```python | |
+ | if __name__ == '__main__': | ||
+ | app.run(host='0.0.0.0') | ||
+ | ``` | ||
− | + | --- | |
− | + | ## 🔥 6. **Jalankan dengan Gunicorn** | |
```bash | ```bash | ||
− | + | gunicorn --bind 0.0.0.0:8000 app:app | |
``` | ``` | ||
+ | Cek dengan: `http://YOUR_SERVER_IP:8000` | ||
− | + | --- | |
− | |||
− | |||
− | + | ## 🧾 7. **(Opsional) Buat File Service Systemd** | |
```bash | ```bash | ||
− | + | sudo nano /etc/systemd/system/flaskapp.service | |
``` | ``` | ||
+ | Isi dengan: | ||
+ | |||
+ | ```ini | ||
+ | [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: | |
− | + | ```bash | |
+ | sudo systemctl daemon-reexec | ||
+ | sudo systemctl daemon-reload | ||
+ | sudo systemctl start flaskapp | ||
+ | sudo systemctl enable flaskapp | ||
+ | ``` | ||
− | + | --- | |
− | + | ## 🌐 8. **Konfigurasi Nginx** | |
```bash | ```bash | ||
Line 108: | Line 115: | ||
``` | ``` | ||
− | + | Isi dengan: | |
− | |||
```nginx | ```nginx | ||
server { | server { | ||
listen 80; | listen 80; | ||
− | server_name | + | server_name your_domain.com; # Atau IP kamu |
location / { | location / { | ||
− | proxy_pass http:// | + | include proxy_params; |
− | + | proxy_pass http://unix:/home/ubuntu/flaskapp/flaskapp.sock; | |
− | |||
− | |||
− | |||
} | } | ||
} | } | ||
``` | ``` | ||
− | + | Aktifkan config-nya: | |
− | |||
− | |||
− | |||
− | |||
− | Aktifkan | ||
```bash | ```bash | ||
Line 139: | Line 137: | ||
``` | ``` | ||
+ | --- | ||
− | + | ## 🔐 9. **(Opsional) Tambah HTTPS dengan Let's Encrypt** | |
− | + | Install Certbot: | |
− | + | ```bash | |
+ | sudo apt install certbot python3-certbot-nginx -y | ||
+ | ``` | ||
− | + | Dapatkan SSL gratis: | |
− | |||
− | |||
```bash | ```bash | ||
− | sudo | + | sudo certbot --nginx -d your_domain.com |
``` | ``` | ||
+ | --- | ||
− | + | ## ✅ 10. **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) | |
− | |||
``` | ``` | ||
− | + | --- | |
− | |||
− | |||
− | |||
+ | Kalau kamu mau deployment pakai Docker, atau deploy ke VPS kayak DigitalOcean, tinggal bilang. Mau kubuatin script bash otomatisnya juga bisa. | ||
− | + | Mau lanjut ke deploy + domain + SSL? | |
− | |||
− | |||
− |
Revision as of 19:19, 7 April 2025
Siap Dzaq! Berikut adalah **modul lengkap tentang Deployment Aplikasi Flask di Ubuntu 24.04**, dari awal sampai bisa diakses via browser pakai domain atau IP publik. Kita akan deploy pakai **Gunicorn + Nginx** biar production-ready.
---
- 🧰 1. **Install Dependensi Dasar**
```bash sudo apt update && sudo apt upgrade -y sudo apt install python3 python3-pip python3-venv nginx -y ```
---
- 🛠️ 2. **Siapkan Direktori Project**
```bash mkdir ~/flaskapp cd ~/flaskapp python3 -m venv venv source venv/bin/activate ```
---
- 📦 3. **Install Flask dan Gunicorn**
```bash pip install flask gunicorn ```
---
- 🧪 4. **Buat Aplikasi Flask (`app.py`)**
```python
- app.py
from flask import Flask
app = Flask(__name__)
@app.route('/') def home():
return "Hello, Metro TV from Flask on Ubuntu 24.04!"
```
---
- 🧪 5. **Test Jalankan Lokal**
```bash python app.py ```
Tambahkan ini kalau kamu mau bisa akses langsung:
```python if __name__ == '__main__':
app.run(host='0.0.0.0')
```
---
- 🔥 6. **Jalankan dengan Gunicorn**
```bash gunicorn --bind 0.0.0.0:8000 app:app ```
Cek dengan: `http://YOUR_SERVER_IP:8000`
---
- 🧾 7. **(Opsional) Buat File Service Systemd**
```bash sudo nano /etc/systemd/system/flaskapp.service ```
Isi dengan:
```ini [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:
```bash sudo systemctl daemon-reexec sudo systemctl daemon-reload sudo systemctl start flaskapp sudo systemctl enable flaskapp ```
---
- 🌐 8. **Konfigurasi Nginx**
```bash 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:
```bash sudo ln -s /etc/nginx/sites-available/flaskapp /etc/nginx/sites-enabled sudo nginx -t sudo systemctl restart nginx ```
---
- 🔐 9. **(Opsional) Tambah HTTPS dengan Let's Encrypt**
Install Certbot:
```bash sudo apt install certbot python3-certbot-nginx -y ```
Dapatkan SSL gratis:
```bash sudo certbot --nginx -d your_domain.com ```
---
- ✅ 10. **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) ```
---
Kalau kamu mau deployment pakai Docker, atau deploy ke VPS kayak DigitalOcean, tinggal bilang. Mau kubuatin script bash otomatisnya juga bisa.
Mau lanjut ke deploy + domain + SSL?