Deployment Aplikasi Flask di Ubuntu 24.04: Difference between revisions

From OnnoCenterWiki
Jump to navigationJump to search
No edit summary
No edit summary
 
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 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

Bonus: Struktur Folder

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


Pranala Menarik