Deployment Aplikasi Flask di Ubuntu 24.04

From OnnoWiki
Jump to navigation Jump to search

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?