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

From OnnoWiki
Jump to navigation Jump to search
(Created page with "Berikut adalah struktur materi untuk kuliah "Pengenalan Deployment Aplikasi Web menggunakan Python" yang terdiri dari empat bagian utama, masing-masing dengan tiga modul: **1...")
 
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
Berikut adalah struktur materi untuk kuliah "Pengenalan Deployment Aplikasi Web menggunakan Python" yang terdiri dari empat bagian utama, masing-masing dengan tiga modul:
+
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. 
  
**1. Dasar-dasar Pengembangan Web Menggunakan Python**
+
==Install Dependensi Dasar==
  
  - **1.1. Pengenalan Flask: Membuat Aplikasi Web Sederhana**
+
sudo apt update && sudo apt upgrade -y
    - Memahami konsep dasar Flask dan cara membuat aplikasi web sederhana.
+
sudo apt install python3 python3-pip python3-venv nginx -y
    - Contoh: Membuat halaman "Hello, World!" menggunakan Flask.
 
    - Referensi: [Tutorial Flask oleh Miguel Grinberg](https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world)
 
  
  - **1.2. Struktur Proyek Flask dan Manajemen Template**
+
==Siapkan Direktori Project==
    - Mempelajari struktur proyek yang baik dalam Flask dan penggunaan template untuk memisahkan logika dan tampilan.
 
    - Contoh: Menggunakan Jinja2 untuk membuat template dinamis.
 
    - Referensi: [Tutorial Flask Resmi](https://flask.palletsprojects.com/en/stable/tutorial/)
 
  
  - **1.3. Mengelola Basis Data dengan SQLAlchemy**
+
mkdir ~/flaskapp
    - Integrasi Flask dengan SQLAlchemy untuk operasi basis data.
+
cd ~/flaskapp
    - Contoh: Membuat model data dan melakukan operasi CRUD.
+
python3 -m venv venv
    - Referensi: [Membangun Aplikasi Web dengan Flask](https://www.digitalocean.com/community/tutorials/how-to-make-a-web-application-using-flask-in-python-3)
+
source venv/bin/activate
  
**2. Dasar-dasar Komunikasi Backend pada Web Python**
+
==Install Flask dan Gunicorn==
  
  - **2.1. Routing dan Metode HTTP dalam Flask**
+
pip install flask gunicorn
    - Memahami cara kerja routing dan berbagai metode HTTP (GET, POST, PUT, DELETE).
 
    - Contoh: Membuat endpoint dengan berbagai metode HTTP.
 
    - Referensi: [Tutorial Flask Resmi](https://flask.palletsprojects.com/en/stable/tutorial/)
 
  
  - **2.2. Mengelola Formulir dan Validasi Input**
+
==Buat Aplikasi Flask (`app.py`)==
    - Menggunakan Flask-WTF untuk mengelola formulir dan validasi input pengguna.
 
    - Contoh: Membuat formulir login dengan validasi.
 
    - Referensi: [Membangun Aplikasi Web dengan Flask](https://www.digitalocean.com/community/tutorials/how-to-make-a-web-application-using-flask-in-python-3)
 
  
  - **2.3. Komunikasi Asinkron dengan JavaScript dan Flask**
+
# app.py
    - Mengintegrasikan Flask dengan JavaScript untuk komunikasi asinkron menggunakan AJAX.
+
    - Contoh: Memuat data secara dinamis tanpa me-refresh halaman.
+
from flask import Flask  
     - Referensi: [Komunikasi Frontend dan Backend](https://www.reddit.com/r/learnprogramming/comments/8xdh5s/how_do_you_connect_the_frontend_and_backend/)
+
 +
app = Flask(__name__)
 +
 +
@app.route('/')
 +
def home():
 +
     return "Hello, Metro TV from Flask on Ubuntu 24.04!"
  
**3. Keamanan Aplikasi Web Python**
+
==Test Jalankan Lokal==
  
  - **3.1. Manajemen Autentikasi dan Otorisasi**
+
python app.py
    - Implementasi sistem login dan kontrol akses pengguna.
 
    - Contoh: Menggunakan Flask-Login untuk manajemen sesi pengguna.
 
    - Referensi: [Tutorial Flask Resmi](https://flask.palletsprojects.com/en/stable/tutorial/)
 
  
  - **3.2. Mencegah Serangan Umum pada Aplikasi Web**
+
Tambahkan ini kalau kamu mau bisa akses langsung:
    - Memahami dan mencegah serangan seperti SQL Injection dan Cross-Site Scripting (XSS).
 
    - Contoh: Menggunakan parameterized queries dan escaping output.
 
    - Referensi: [Analisis Keamanan Aplikasi Web dengan Python](https://bytescout.com/blog/python-tutorial-web-app-security.html)
 
  
  - **3.3. Mengamankan API dengan Tokenisasi**
+
if __name__ == '__main__':
     - Menggunakan token untuk mengamankan komunikasi antara klien dan server.
+
     app.run(host='0.0.0.0')
    - Contoh: Implementasi JSON Web Tokens (JWT) dalam Flask.
 
    - Referensi: [Membuat REST API dengan Flask](https://www.digitalocean.com/community/tutorials/create-a-rest-api-using-flask-on-ubuntu)
 
  
**4. Membangun RESTful API Menggunakan Python**
+
==Jalankan dengan Gunicorn==
  
  - **4.1. Konsep Dasar RESTful API dan Implementasi dengan Flask**
+
gunicorn --bind 0.0.0.0:8000 app:app
    - Memahami prinsip REST dan cara mengimplementasikannya menggunakan Flask.
 
    - Contoh: Membuat endpoint RESTful untuk operasi CRUD.
 
    - Referensi: [Membuat REST API dengan Flask](https://www.digitalocean.com/community/tutorials/create-a-rest-api-using-flask-on-ubuntu)
 
  
  - **4.2. Dokumentasi API dengan Swagger**
+
Cek dengan: `http://YOUR_SERVER_IP:8000`
    - Menggunakan Flask-Swagger untuk mendokumentasikan API yang dibuat.
 
    - Contoh: Menambahkan dokumentasi interaktif untuk endpoint yang tersedia.
 
    - Referensi: [Tutorial Flask-Swagger](https://github.com/flasgger/flasgger)
 
  
  - **4.3. Deployment Aplikasi Flask di Ubuntu 24.04**
+
==(Opsional) Buat File Service Systemd==
    - 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)
 
  
Struktur ini dirancang untuk memberikan pemahaman komprehensif tentang pengembangan dan deployment aplikasi web menggunakan Python, dengan fokus pada praktik terbaik dan contoh nyata yang dapat diterapkan langsung.
+
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==
 +
 
 +
* 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)
 +
 
 +
 
 +
==Pranala Menarik==
 +
 
 +
* [[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