Difference between revisions of "Deployment Aplikasi Flask di Ubuntu 24.04"

From OnnoWiki
Jump to navigation Jump to search
 
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.   
+
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==
  
βˆ’
## 🧰 1. **Install Dependensi Dasar**
+
sudo apt update && sudo apt upgrade -y
 +
sudo apt install python3 python3-pip python3-venv nginx -y
  
βˆ’
```bash
+
==Siapkan Direktori Project==
βˆ’
sudo apt update && sudo apt upgrade -y
 
βˆ’
sudo apt install python3 python3-pip python3-venv nginx -y
 
βˆ’
```
 
  
βˆ’
---
+
mkdir ~/flaskapp
 +
cd ~/flaskapp
 +
python3 -m venv venv
 +
source venv/bin/activate
  
βˆ’
## πŸ› οΈ 2. **Siapkan Direktori Project**
+
==Install Flask dan Gunicorn==
  
βˆ’
```bash
+
pip install flask gunicorn
βˆ’
mkdir ~/flaskapp
 
βˆ’
cd ~/flaskapp
 
βˆ’
python3 -m venv venv
 
βˆ’
source venv/bin/activate
 
βˆ’
```
 
  
βˆ’
---
+
==Buat Aplikasi Flask (`app.py`)==
  
βˆ’
## πŸ“¦ 3. **Install Flask dan Gunicorn**
+
# app.py
 +
 +
from flask import Flask
 +
 +
app = Flask(__name__)
 +
 +
@app.route('/')
 +
def home():
 +
    return "Hello, Metro TV from Flask on Ubuntu 24.04!"
  
βˆ’
```bash
+
==Test Jalankan Lokal==
βˆ’
pip install flask gunicorn
 
βˆ’
```
 
  
βˆ’
---
+
python app.py
βˆ’
 
 
βˆ’
## πŸ§ͺ 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:
 
Tambahkan ini kalau kamu mau bisa akses langsung:
  
βˆ’
```python
+
if __name__ == '__main__':
βˆ’
if __name__ == '__main__':
+
    app.run(host='0.0.0.0')
βˆ’
    app.run(host='0.0.0.0')
 
βˆ’
```
 
  
βˆ’
---
+
==Jalankan dengan Gunicorn==
  
βˆ’
## πŸ”₯ 6. **Jalankan dengan Gunicorn**
+
gunicorn --bind 0.0.0.0:8000 app:app
βˆ’
 
 
βˆ’
```bash
 
βˆ’
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==
  
βˆ’
## 🧾 7. **(Opsional) Buat File Service Systemd**
+
sudo nano /etc/systemd/system/flaskapp.service
βˆ’
 
 
βˆ’
```bash
 
βˆ’
sudo nano /etc/systemd/system/flaskapp.service
 
βˆ’
```
 
  
 
Isi dengan:
 
Isi dengan:
  
βˆ’
```ini
+
[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:
  
βˆ’
```bash
+
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
 
βˆ’
```
 
βˆ’
 
 
βˆ’
---
 
  
βˆ’
## 🌐 8. **Konfigurasi Nginx**
+
==Konfigurasi Nginx==
  
βˆ’
```bash
+
sudo nano /etc/nginx/sites-available/flaskapp
βˆ’
sudo nano /etc/nginx/sites-available/flaskapp
 
βˆ’
```
 
  
 
Isi dengan:
 
Isi dengan:
  
βˆ’
```nginx
+
nginx
βˆ’
server {
+
server {
βˆ’
    listen 80;
+
    listen 80;
βˆ’
    server_name your_domain.com;  # Atau IP kamu
+
    server_name your_domain.com;  # Atau IP kamu
βˆ’
 
+
βˆ’
    location / {
+
    location / {
βˆ’
        include proxy_params;
+
        include proxy_params;
βˆ’
        proxy_pass http://unix:/home/ubuntu/flaskapp/flaskapp.sock;
+
        proxy_pass http://unix:/home/ubuntu/flaskapp/flaskapp.sock;
βˆ’
    }
+
    }
βˆ’
}
+
}
βˆ’
```
 
  
 
Aktifkan config-nya:
 
Aktifkan config-nya:
  
βˆ’
```bash
+
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
 
βˆ’
```
 
βˆ’
 
 
βˆ’
---
 
  
βˆ’
## πŸ” 9. **(Opsional) Tambah HTTPS dengan Let's Encrypt**
+
==(Opsional) Tambah HTTPS dengan Let's Encrypt==
  
 
Install Certbot:
 
Install Certbot:
  
βˆ’
```bash
+
sudo apt install certbot python3-certbot-nginx -y
βˆ’
sudo apt install certbot python3-certbot-nginx -y
 
βˆ’
```
 
  
 
Dapatkan SSL gratis:
 
Dapatkan SSL gratis:
  
βˆ’
```bash
+
sudo certbot --nginx -d your_domain.com
βˆ’
sudo certbot --nginx -d your_domain.com
 
βˆ’
```
 
βˆ’
 
 
βˆ’
---
 
βˆ’
 
 
βˆ’
## βœ… 10. **Final Cek**
 
  
βˆ’
- Akses aplikasi: `http://your_domain.com` atau `http://your_server_ip`
+
==Final Cek==
βˆ’
- Gunicorn berjalan sebagai service
 
βˆ’
- Nginx mengarahkan trafik ke Flask
 
  
βˆ’
---
+
* Akses aplikasi: `http://your_domain.com` atau `http://your_server_ip`
 +
* Gunicorn berjalan sebagai service
 +
* Nginx mengarahkan trafik ke Flask
  
βˆ’
## 🎁 Bonus: Struktur Folder
+
==Bonus: Struktur Folder==
  
βˆ’
```
+
flaskapp/
βˆ’
flaskapp/
+
β”‚
βˆ’
β”‚
+
β”œβ”€β”€ app.py
βˆ’
β”œβ”€β”€ app.py
+
β”œβ”€β”€ venv/
βˆ’
β”œβ”€β”€ venv/
+
└── flaskapp.sock (auto created by gunicorn)
βˆ’
└── 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.
+
==Pranala Menarik==
  
βˆ’
Mau lanjut ke deploy + domain + SSL?
+
* [[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

Bonus: Struktur Folder

flaskapp/
β”‚
β”œβ”€β”€ app.py
β”œβ”€β”€ venv/
└── flaskapp.sock (auto created by gunicorn)


Pranala Menarik