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:
# 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 12: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?