Difference between revisions of "Deployment Aplikasi Flask di Ubuntu 24.04"
Onnowpurbo (talk | contribs) (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...") |
Onnowpurbo (talk | contribs) |
||
| Line 1: | Line 1: | ||
| − | + | # Modul 4.3: Deployment Aplikasi Flask di Ubuntu 24.04 | |
| − | + | ## 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. 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 | |
| − | + | 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. | |
| − | |||
| − | |||
| − | |||
| − | + | ## 3. Menyiapkan Aplikasi Flask | |
| − | |||
| − | |||
| − | |||
| − | + | ### a. Membuat Direktori Proyek | |
| − | |||
| − | |||
| − | |||
| − | ** | + | Buat direktori untuk aplikasi Flask Anda dan navigasikan ke dalamnya: |
| + | |||
| + | ```bash | ||
| + | mkdir ~/flaskapp | ||
| + | cd ~/flaskapp | ||
| + | ``` | ||
| + | |||
| + | ### b. Membuat Virtual Environment | ||
| + | |||
| + | Buat dan aktifkan virtual environment untuk mengisolasi dependensi aplikasi: | ||
| + | |||
| + | ```bash | ||
| + | python3 -m venv venv | ||
| + | source venv/bin/activate | ||
| + | ``` | ||
| + | |||
| + | ### c. Menginstal Flask dan Gunicorn | ||
| + | |||
| + | Dengan virtual environment aktif, instal Flask dan Gunicorn: | ||
| + | |||
| + | ```bash | ||
| + | pip install Flask gunicorn | ||
| + | ``` | ||
| + | |||
| + | ### 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. | ||
| + | |||
| + | ## 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. | ||
| + | |||
| + | ## 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`. | ||
| + | |||
| + | ## 6. Menyiapkan Nginx sebagai Reverse Proxy | ||
| + | |||
| + | Nginx akan berfungsi sebagai reverse proxy yang meneruskan permintaan ke Gunicorn. | ||
| + | |||
| + | ### 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. | ||
| + | |||
| + | ### 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. | ||
| + | |||
| + | ## 7. Menjalankan Gunicorn sebagai Layanan Sistem | ||
| + | |||
| + | Untuk memastikan aplikasi berjalan secara otomatis setelah reboot, konfigurasikan Gunicorn sebagai layanan sistem. | ||
| + | |||
| + | ### 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. | ||
| + | |||
| + | ### 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 | ||
| + | ``` | ||
| + | |||
| + | ## 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** | - **4.3. Deployment Aplikasi Flask di Ubuntu 24.04** | ||
| Line 68: | Line 202: | ||
- Contoh: Menggunakan Gunicorn dan Nginx untuk menjalankan aplikasi di lingkungan produksi. | - 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) | - 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 10:28, 6 April 2025
- Modul 4.3: Deployment Aplikasi Flask di Ubuntu 24.04
- 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. 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 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.
- 3. Menyiapkan Aplikasi Flask
- a. Membuat Direktori Proyek
Buat direktori untuk aplikasi Flask Anda dan navigasikan ke dalamnya:
```bash mkdir ~/flaskapp cd ~/flaskapp ```
- b. Membuat Virtual Environment
Buat dan aktifkan virtual environment untuk mengisolasi dependensi aplikasi:
```bash python3 -m venv venv source venv/bin/activate ```
- c. Menginstal Flask dan Gunicorn
Dengan virtual environment aktif, instal Flask dan Gunicorn:
```bash pip install Flask gunicorn ```
- 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.
- 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.
- 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`.
- 6. Menyiapkan Nginx sebagai Reverse Proxy
Nginx akan berfungsi sebagai reverse proxy yang meneruskan permintaan ke Gunicorn.
- 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.
- 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.
- 7. Menjalankan Gunicorn sebagai Layanan Sistem
Untuk memastikan aplikasi berjalan secara otomatis setelah reboot, konfigurasikan Gunicorn sebagai layanan sistem.
- 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.
- 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 ```
- 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)