Deployment Aplikasi Flask di Ubuntu 24.04

From OnnoWiki
Jump to navigation Jump to search
  1. Modul 4.3: Deployment Aplikasi Flask di Ubuntu 24.04
    1. 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. 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).

    1. 2. Memperbarui dan Menginstal Paket yang Diperlukan

Langkah pertama adalah memperbarui daftar paket dan menginstal dependensi yang diperlukan:

```bash sudo apt update sudo apt upgrade -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.

    1. 3. Menyiapkan Aplikasi Flask
      1. a. Membuat Direktori Proyek

Buat direktori untuk aplikasi Flask Anda dan navigasikan ke dalamnya:

```bash mkdir ~/flaskapp cd ~/flaskapp ```

      1. b. Membuat Virtual Environment

Buat dan aktifkan virtual environment untuk mengisolasi dependensi aplikasi:

```bash python3 -m venv venv source venv/bin/activate ```

      1. c. Menginstal Flask dan Gunicorn

Dengan virtual environment aktif, instal Flask dan Gunicorn:

```bash pip install Flask gunicorn ```

      1. d. Membuat Aplikasi Flask Sederhana

Buat file `app.py` dengan konten berikut:

```python from flask import Flask

app = Flask(__name__)

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

   return "Halo, Flask di Ubuntu 24.04!"

if __name__ == '__main__':

   app.run(host='0.0.0.0', port=8000)

```


Kode ini mendefinisikan aplikasi Flask sederhana yang akan dijalankan pada port 8000.

    1. 4. Menguji Aplikasi Flask

Sebelum melanjutkan, uji aplikasi Flask Anda dengan menjalankan:

```bash python app.py ```


Akses aplikasi melalui browser di `http://server_ip:8000` untuk memastikan aplikasi berjalan dengan benar.

    1. 5. Mengonfigurasi Gunicorn

Gunicorn akan digunakan sebagai WSGI server untuk menjalankan aplikasi Flask. Jalankan perintah berikut untuk menguji aplikasi dengan Gunicorn:

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


Pastikan aplikasi dapat diakses melalui `http://server_ip:8000`.

    1. 6. Menyiapkan Nginx sebagai Reverse Proxy

Nginx akan berfungsi sebagai reverse proxy yang meneruskan permintaan ke Gunicorn.

      1. 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.

      1. 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.

    1. 7. Menjalankan Gunicorn sebagai Layanan Sistem

Untuk memastikan aplikasi berjalan secara otomatis setelah reboot, konfigurasikan Gunicorn sebagai layanan sistem.

      1. 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.

      1. 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 ```

    1. 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)