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