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

From OnnoWiki
Jump to navigation Jump to search
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
−
# Modul 4.3: Deployment Aplikasi Flask di Ubuntu 24.04
+
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. 
  
−
## Pendahuluan
+
==Install Dependensi Dasar==
  
−
Mendeploy aplikasi Flask di server Ubuntu 24.04 memerlukan beberapa langkah penting untuk memastikan aplikasi berjalan dengan efisien dan aman di lingkungan produksi. Dalam modul ini, kita akan membahas langkah-langkah untuk mendeploy aplikasi Flask menggunakan **Gunicorn** sebagai WSGI server dan **Nginx** sebagai reverse proxy. Pendekatan ini akan meningkatkan performa dan keamanan aplikasi Anda.
+
sudo apt update && sudo apt upgrade -y
 +
sudo apt install python3 python3-pip python3-venv nginx -y
  
−
## 1. Prasyarat
+
==Siapkan Direktori Project==
  
−
Sebelum memulai, pastikan Anda memiliki:
+
mkdir ~/flaskapp
 +
cd ~/flaskapp
 +
python3 -m venv venv
 +
source venv/bin/activate
  
−
- **Server Ubuntu 24.04** yang telah dikonfigurasi dengan akses root atau pengguna dengan hak sudo.
+
==Install Flask dan Gunicorn==
−
- **Aplikasi Flask** yang telah dikembangkan dan siap untuk dideploy.
 
−
- **Domain** yang telah diarahkan ke server Anda (opsional, tetapi disarankan untuk produksi).
 
  
−
## 2. Memperbarui dan Menginstal Paket yang Diperlukan
+
pip install flask gunicorn
  
−
Langkah pertama adalah memperbarui daftar paket dan menginstal dependensi yang diperlukan:
+
==Buat Aplikasi Flask (`app.py`)==
  
−
```bash
+
# app.py
−
sudo apt update
+
−
sudo apt upgrade -y
+
from flask import Flask
−
sudo apt install python3 python3-pip python3-venv nginx -y
+
−
```
+
app = Flask(__name__)
 +
 +
@app.route('/')
 +
def home():
 +
    return "Hello, Metro TV from Flask on Ubuntu 24.04!"
  
 +
==Test Jalankan Lokal==
  
−
Perintah di atas akan memastikan bahwa Python 3, pip, modul venv, dan Nginx terinstal di server Anda.
+
python app.py
  
−
## 3. Menyiapkan Aplikasi Flask
+
Tambahkan ini kalau kamu mau bisa akses langsung:
  
−
### a. Membuat Direktori Proyek
+
if __name__ == '__main__':
 +
    app.run(host='0.0.0.0')
  
−
Buat direktori untuk aplikasi Flask Anda dan navigasikan ke dalamnya:
+
==Jalankan dengan Gunicorn==
  
−
```bash
+
gunicorn --bind 0.0.0.0:8000 app:app
−
mkdir ~/flaskapp
 
−
cd ~/flaskapp
 
−
```
 
  
−
### b. Membuat Virtual Environment
+
Cek dengan: `http://YOUR_SERVER_IP:8000`
  
−
Buat dan aktifkan virtual environment untuk mengisolasi dependensi aplikasi:
+
==(Opsional) Buat File Service Systemd==
  
−
```bash
+
sudo nano /etc/systemd/system/flaskapp.service
−
python3 -m venv venv
 
−
source venv/bin/activate
 
−
```
 
  
−
### c. Menginstal Flask dan Gunicorn
+
Isi dengan:
  
−
Dengan virtual environment aktif, instal Flask dan Gunicorn:
+
[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
  
−
```bash
+
> Ganti `ubuntu` sesuai user kamu, dan `WorkingDirectory` sesuai folder.
−
pip install Flask gunicorn
 
−
```
 
  
−
### d. Membuat Aplikasi Flask Sederhana
+
Lalu:
  
−
Buat file `app.py` dengan konten berikut:
+
sudo systemctl daemon-reexec
 +
sudo systemctl daemon-reload
 +
sudo systemctl start flaskapp
 +
sudo systemctl enable flaskapp
  
−
```python
+
==Konfigurasi Nginx==
−
from flask import Flask
 
  
−
app = Flask(__name__)
+
sudo nano /etc/nginx/sites-available/flaskapp
  
−
@app.route('/')
+
Isi dengan:
−
def hello():
 
−
    return "Halo, Flask di Ubuntu 24.04!"
 
  
−
if __name__ == '__main__':
+
nginx
−
    app.run(host='0.0.0.0', port=8000)
+
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:
  
−
Kode ini mendefinisikan aplikasi Flask sederhana yang akan dijalankan pada port 8000.
+
sudo ln -s /etc/nginx/sites-available/flaskapp /etc/nginx/sites-enabled
 +
sudo nginx -t
 +
sudo systemctl restart nginx
  
−
## 4. Menguji Aplikasi Flask
+
==(Opsional) Tambah HTTPS dengan Let's Encrypt==
  
−
Sebelum melanjutkan, uji aplikasi Flask Anda dengan menjalankan:
+
Install Certbot:
  
−
```bash
+
sudo apt install certbot python3-certbot-nginx -y
−
python app.py
 
−
```
 
  
 +
Dapatkan SSL gratis:
  
−
Akses aplikasi melalui browser di `http://server_ip:8000` untuk memastikan aplikasi berjalan dengan benar.
+
sudo certbot --nginx -d your_domain.com
  
−
## 5. Mengonfigurasi Gunicorn
+
==Final Cek==
  
−
Gunicorn akan digunakan sebagai WSGI server untuk menjalankan aplikasi Flask. Jalankan perintah berikut untuk menguji aplikasi dengan Gunicorn:
+
* Akses aplikasi: `http://your_domain.com` atau `http://your_server_ip`
 +
* Gunicorn berjalan sebagai service
 +
* Nginx mengarahkan trafik ke Flask
  
−
```bash
+
==Bonus: Struktur Folder==
−
gunicorn --bind 0.0.0.0:8000 app:app
 
−
```
 
  
 +
flaskapp/
 +
│
 +
├── app.py
 +
├── venv/
 +
└── flaskapp.sock (auto created by gunicorn)
  
−
Pastikan aplikasi dapat diakses melalui `http://server_ip:8000`.
 
  
−
## 6. Menyiapkan Nginx sebagai Reverse Proxy
+
==Pranala Menarik==
  
−
Nginx akan berfungsi sebagai reverse proxy yang meneruskan permintaan ke Gunicorn.
+
* [[Web Programming]]
−
 
 
−
### a. Membuat Konfigurasi Nginx
 
−
 
 
−
Buat file konfigurasi Nginx untuk aplikasi Anda:
 
−
 
 
−
```bash
 
−
sudo nano /etc/nginx/sites-available/flaskapp
 
−
```
 
−
 
 
−
 
 
−
Tambahkan konfigurasi berikut:
 
−
 
 
−
```nginx
 
−
server {
 
−
    listen 80;
 
−
    server_name your_domain_or_IP;
 
−
 
 
−
    location / {
 
−
        proxy_pass http://127.0.0.1:8000;
 
−
        proxy_set_header Host $host;
 
−
        proxy_set_header X-Real-IP $remote_addr;
 
−
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 
−
        proxy_set_header X-Forwarded-Proto $scheme;
 
−
    }
 
−
}
 
−
```
 
−
 
 
−
 
 
−
Gantilah `your_domain_or_IP` dengan domain atau alamat IP server Anda.
 
−
 
 
−
### b. Mengaktifkan Konfigurasi dan Merestart Nginx
 
−
 
 
−
Aktifkan konfigurasi dan restart Nginx:
 
−
 
 
−
```bash
 
−
sudo ln -s /etc/nginx/sites-available/flaskapp /etc/nginx/sites-enabled
 
−
sudo nginx -t
 
−
sudo systemctl restart nginx
 
−
```
 
−
 
 
−
 
 
−
Pastikan tidak ada error pada konfigurasi Nginx.
 
−
 
 
−
## 7. Menjalankan Gunicorn sebagai Layanan Sistem
 
−
 
 
−
Untuk memastikan aplikasi berjalan secara otomatis setelah reboot, konfigurasikan Gunicorn sebagai layanan sistem.
 
−
 
 
−
### a. Membuat File Layanan
 
−
 
 
−
Buat file layanan systemd:
 
−
 
 
−
```bash
 
−
sudo nano /etc/systemd/system/flaskapp.service
 
−
```
 
−
 
 
−
 
 
−
Tambahkan konfigurasi berikut:
 
−
 
 
−
```ini
 
−
[Unit]
 
−
Description=Gunicorn instance to serve flaskapp
 
−
After=network.target
 
−
 
 
−
[Service]
 
−
User=your_username
 
−
Group=www-data
 
−
WorkingDirectory=/home/your_username/flaskapp
 
−
Environment="PATH=/home/your_username/flaskapp/venv/bin"
 
−
ExecStart=/home/your_username/flaskapp/venv/bin/gunicorn --workers 3 --bind unix:flaskapp.sock -m 007 app:app
 
−
 
 
−
[Install]
 
−
WantedBy=multi-user.target
 
−
```
 
−
 
 
−
 
 
−
Gantilah `your_username` dengan nama pengguna Anda.
 
−
 
 
−
### b. Mengaktifkan dan Menjalankan Layanan
 
−
 
 
−
Jalankan perintah berikut untuk mengaktifkan dan memulai layanan:
 
−
 
 
−
```bash
 
−
sudo systemctl start flaskapp
 
−
sudo systemctl enable flaskapp
 
−
```
 
−
 
 
−
 
 
−
Pastikan layanan berjalan dengan memeriksa statusnya:
 
−
 
 
−
```bash
 
−
sudo systemctl status flaskapp
 
−
```
 
−
 
 
−
## 8. Mengamankan Aplikasi dengan HTTPS (Opsional)
 
−
 
 
−
Untuk meningkatkan keamanan, disarankan untuk menggunakan HTTPS. Anda dapat menggunakan **Certbot** untuk memperoleh sertifikat SSL gratis dari Let's Encrypt.
 
−
 
 
−
 
 
−
 
 
−
  - **4.3. Deployment Aplikasi Flask di Ubuntu 24.04**
 
−
    - Langkah-langkah untuk mendeploy aplikasi Flask pada server Ubuntu 24.04 tanpa menggunakan alat dari Microsoft.
 
−
    - Contoh: Menggunakan Gunicorn dan Nginx untuk menjalankan aplikasi di lingkungan produksi.
 
−
    - Referensi: [Instalasi Flask di Ubuntu 24.04](https://support.hostinger.com/en/articles/10725412-how-to-install-flask-on-ubuntu-24-04)
 

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