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

From OnnoWiki
Jump to navigation Jump to search
Line 1: Line 1:
# Modul 4.3: Deployment Aplikasi Flask di Ubuntu 24.04
+
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. 
  
## Pendahuluan
+
---
  
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.
+
## 🧰 1. **Install Dependensi Dasar**
 
 
## 1. Prasyarat
 
 
 
Sebelum memulai, pastikan Anda memiliki:
 
 
 
- **Server Ubuntu 24.04** yang telah dikonfigurasi dengan akses root atau pengguna dengan hak sudo.
 
- **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
 
 
 
Langkah pertama adalah memperbarui daftar paket dan menginstal dependensi yang diperlukan:
 
  
 
```bash
 
```bash
sudo apt update
+
sudo apt update && sudo apt upgrade -y
sudo apt upgrade -y
 
 
sudo apt install python3 python3-pip python3-venv nginx -y
 
sudo apt install python3 python3-pip python3-venv nginx -y
 
```
 
```
  
 +
---
  
Perintah di atas akan memastikan bahwa Python 3, pip, modul venv, dan Nginx terinstal di server Anda.
+
## 🛠️ 2. **Siapkan Direktori Project**
 
 
## 3. Menyiapkan Aplikasi Flask
 
 
 
### a. Membuat Direktori Proyek
 
 
 
Buat direktori untuk aplikasi Flask Anda dan navigasikan ke dalamnya:
 
  
 
```bash
 
```bash
 
mkdir ~/flaskapp
 
mkdir ~/flaskapp
 
cd ~/flaskapp
 
cd ~/flaskapp
```
 
 
### b. Membuat Virtual Environment
 
 
Buat dan aktifkan virtual environment untuk mengisolasi dependensi aplikasi:
 
 
```bash
 
 
python3 -m venv venv
 
python3 -m venv venv
 
source venv/bin/activate
 
source venv/bin/activate
 
```
 
```
  
### c. Menginstal Flask dan Gunicorn
+
---
  
Dengan virtual environment aktif, instal Flask dan Gunicorn:
+
## 📦 3. **Install Flask dan Gunicorn**
  
 
```bash
 
```bash
pip install Flask gunicorn
+
pip install flask gunicorn
 
```
 
```
  
### d. Membuat Aplikasi Flask Sederhana
+
---
  
Buat file `app.py` dengan konten berikut:
+
## 🧪 4. **Buat Aplikasi Flask (`app.py`)**
  
 
```python
 
```python
 +
# app.py
 +
 
from flask import Flask
 
from flask import Flask
  
Line 64: Line 41:
  
 
@app.route('/')
 
@app.route('/')
def hello():
+
def home():
     return "Halo, Flask di Ubuntu 24.04!"
+
     return "Hello, Metro TV from Flask on Ubuntu 24.04!"
 +
```
  
if __name__ == '__main__':
+
---
    app.run(host='0.0.0.0', port=8000)
+
 
 +
## 🧪 5. **Test Jalankan Lokal**
 +
 
 +
```bash
 +
python app.py
 
```
 
```
  
 +
Tambahkan ini kalau kamu mau bisa akses langsung:
  
Kode ini mendefinisikan aplikasi Flask sederhana yang akan dijalankan pada port 8000.
+
```python
 +
if __name__ == '__main__':
 +
    app.run(host='0.0.0.0')
 +
```
  
## 4. Menguji Aplikasi Flask
+
---
  
Sebelum melanjutkan, uji aplikasi Flask Anda dengan menjalankan:
+
## 🔥 6. **Jalankan dengan Gunicorn**
  
 
```bash
 
```bash
python app.py
+
gunicorn --bind 0.0.0.0:8000 app:app
 
```
 
```
  
 +
Cek dengan: `http://YOUR_SERVER_IP:8000`
  
Akses aplikasi melalui browser di `http://server_ip:8000` untuk memastikan aplikasi berjalan dengan benar.
+
---
 
 
## 5. Mengonfigurasi Gunicorn
 
  
Gunicorn akan digunakan sebagai WSGI server untuk menjalankan aplikasi Flask. Jalankan perintah berikut untuk menguji aplikasi dengan Gunicorn:
+
## 🧾 7. **(Opsional) Buat File Service Systemd**
  
 
```bash
 
```bash
gunicorn --bind 0.0.0.0:8000 app:app
+
sudo nano /etc/systemd/system/flaskapp.service
 
```
 
```
  
 +
Isi dengan:
 +
 +
```ini
 +
[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
 +
```
  
Pastikan aplikasi dapat diakses melalui `http://server_ip:8000`.
+
> Ganti `ubuntu` sesuai user kamu, dan `WorkingDirectory` sesuai folder.
  
## 6. Menyiapkan Nginx sebagai Reverse Proxy
+
Lalu:
  
Nginx akan berfungsi sebagai reverse proxy yang meneruskan permintaan ke Gunicorn.
+
```bash
 +
sudo systemctl daemon-reexec
 +
sudo systemctl daemon-reload
 +
sudo systemctl start flaskapp
 +
sudo systemctl enable flaskapp
 +
```
  
### a. Membuat Konfigurasi Nginx
+
---
  
Buat file konfigurasi Nginx untuk aplikasi Anda:
+
## 🌐 8. **Konfigurasi Nginx**
  
 
```bash
 
```bash
Line 108: Line 115:
 
```
 
```
  
 
+
Isi dengan:
Tambahkan konfigurasi berikut:
 
  
 
```nginx
 
```nginx
 
server {
 
server {
 
     listen 80;
 
     listen 80;
     server_name your_domain_or_IP;
+
     server_name your_domain.com; # Atau IP kamu
  
 
     location / {
 
     location / {
         proxy_pass http://127.0.0.1:8000;
+
        include proxy_params;
        proxy_set_header Host $host;
+
         proxy_pass http://unix:/home/ubuntu/flaskapp/flaskapp.sock;
        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;
 
 
     }
 
     }
 
}
 
}
 
```
 
```
  
 
+
Aktifkan config-nya:
Gantilah `your_domain_or_IP` dengan domain atau alamat IP server Anda.
 
 
 
### b. Mengaktifkan Konfigurasi dan Merestart Nginx
 
 
 
Aktifkan konfigurasi dan restart Nginx:
 
  
 
```bash
 
```bash
Line 139: Line 137:
 
```
 
```
  
 +
---
  
Pastikan tidak ada error pada konfigurasi Nginx.
+
## 🔐 9. **(Opsional) Tambah HTTPS dengan Let's Encrypt**
  
## 7. Menjalankan Gunicorn sebagai Layanan Sistem
+
Install Certbot:
  
Untuk memastikan aplikasi berjalan secara otomatis setelah reboot, konfigurasikan Gunicorn sebagai layanan sistem.
+
```bash
 +
sudo apt install certbot python3-certbot-nginx -y
 +
```
  
### a. Membuat File Layanan
+
Dapatkan SSL gratis:
 
 
Buat file layanan systemd:
 
  
 
```bash
 
```bash
sudo nano /etc/systemd/system/flaskapp.service
+
sudo certbot --nginx -d your_domain.com
 
```
 
```
  
 +
---
  
Tambahkan konfigurasi berikut:
+
## ✅ 10. **Final Cek**
  
```ini
+
- Akses aplikasi: `http://your_domain.com` atau `http://your_server_ip`
[Unit]
+
- Gunicorn berjalan sebagai service
Description=Gunicorn instance to serve flaskapp
+
- Nginx mengarahkan trafik ke Flask
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:
+
## 🎁 Bonus: Struktur Folder
  
```bash
 
sudo systemctl start flaskapp
 
sudo systemctl enable flaskapp
 
 
```
 
```
 
+
flaskapp/
 
+
Pastikan layanan berjalan dengan memeriksa statusnya:
+
├── app.py
 
+
├── venv/
```bash
+
└── flaskapp.sock (auto created by gunicorn)
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.
 
 
 
  
 +
Kalau kamu mau deployment pakai Docker, atau deploy ke VPS kayak DigitalOcean, tinggal bilang. Mau kubuatin script bash otomatisnya juga bisa.
  
  - **4.3. Deployment Aplikasi Flask di Ubuntu 24.04**
+
Mau lanjut ke deploy + domain + SSL?
    - 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)
 

Revision as of 19:19, 7 April 2025

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.

---

    1. 🧰 1. **Install Dependensi Dasar**

```bash sudo apt update && sudo apt upgrade -y sudo apt install python3 python3-pip python3-venv nginx -y ```

---

    1. 🛠️ 2. **Siapkan Direktori Project**

```bash mkdir ~/flaskapp cd ~/flaskapp python3 -m venv venv source venv/bin/activate ```

---

    1. 📦 3. **Install Flask dan Gunicorn**

```bash pip install flask gunicorn ```

---

    1. 🧪 4. **Buat Aplikasi Flask (`app.py`)**

```python

  1. app.py

from flask import Flask

app = Flask(__name__)

@app.route('/') def home():

   return "Hello, Metro TV from Flask on Ubuntu 24.04!"

```

---

    1. 🧪 5. **Test Jalankan Lokal**

```bash python app.py ```

Tambahkan ini kalau kamu mau bisa akses langsung:

```python if __name__ == '__main__':

   app.run(host='0.0.0.0')

```

---

    1. 🔥 6. **Jalankan dengan Gunicorn**

```bash gunicorn --bind 0.0.0.0:8000 app:app ```

Cek dengan: `http://YOUR_SERVER_IP:8000`

---

    1. 🧾 7. **(Opsional) Buat File Service Systemd**

```bash sudo nano /etc/systemd/system/flaskapp.service ```

Isi dengan:

```ini [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:

```bash sudo systemctl daemon-reexec sudo systemctl daemon-reload sudo systemctl start flaskapp sudo systemctl enable flaskapp ```

---

    1. 🌐 8. **Konfigurasi Nginx**

```bash 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:

```bash sudo ln -s /etc/nginx/sites-available/flaskapp /etc/nginx/sites-enabled sudo nginx -t sudo systemctl restart nginx ```

---

    1. 🔐 9. **(Opsional) Tambah HTTPS dengan Let's Encrypt**

Install Certbot:

```bash sudo apt install certbot python3-certbot-nginx -y ```

Dapatkan SSL gratis:

```bash sudo certbot --nginx -d your_domain.com ```

---

    1. ✅ 10. **Final Cek**

- Akses aplikasi: `http://your_domain.com` atau `http://your_server_ip` - Gunicorn berjalan sebagai service - Nginx mengarahkan trafik ke Flask

---

    1. 🎁 Bonus: Struktur Folder

``` flaskapp/ │ ├── app.py ├── venv/ └── 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.

Mau lanjut ke deploy + domain + SSL?