Dalam seri belajar Python part 15, kita telah membuat aplikasi Flask dengan tampilan yang lebih menarik menggunakan Bootstrap. Namun, aplikasi tersebut masih berjalan di localhost, sehingga belum bisa diakses oleh pengguna lain melalui internet.
Pada Part 16 ini, kita akan melangkah lebih jauh dengan mempelajari cara deploy aplikasi Flask agar dapat diakses secara online. Dengan begitu, aplikasi yang sebelumnya hanya berjalan di komputer sendiri dapat digunakan dan diuji melalui internet.
Lalu, bagaimana cara deploy aplikasi Flask ke server? Yuk, simak langkah-langkahnya pada tutorial berikut.
Apa Itu Deployment?
Selama ini, aplikasi Flask yang kita buat masih berjalan di komputer sendiri melalui localhost. Agar aplikasi tersebut bisa diakses oleh orang lain melalui internet, kita perlu melakukan deployment.
Deployment adalah proses memindahkan aplikasi dari lingkungan pengembangan ke server yang dapat diakses melalui internet. Setelah berhasil di-deploy, aplikasi Flask akan memiliki alamat URL yang bisa dibuka dari perangkat lain, misalnya https://nama-aplikasi.onrender.com.
Dengan begitu, aplikasi yang sebelumnya hanya bisa dijalankan di komputer sendiri kini dapat diakses secara online.
Pilihan Layanan Hosting untuk Flask
Ada beberapa layanan yang populer untuk aplikasi Flask, terutama untuk pemula:
| Layanan | Kelebihan | Cocok Untuk |
| PythonAnywhere | Gratis, khusus Python, sangat mudah untuk pemula | Belajar & proyek kecil |
| VPS | Kontrol penuh, fleksibel, tidak ada batasan resource dari platform | Aplikasi production skala kecil menengah |
| Shared Hosting | Murah, sudah termasuk domain & email, antarmuka cPanel yang familiar | Website portofolio atau aplikasi sederhana |
Di artikel ini kita akan fokus ke tiga metode:
- PythonAnywhere (paling simpel, tanpa command line yang rumit, cocok untuk pemula),
- VPS (lebih fleksibel dan mendekati cara kerja server production sesungguhnya, cocok kalau ingin belajar lebih dalam soal server) serta,
- Shared Hosting (opsi praktis jika ingin mengelola web Flask sekaligus domain dan email dalam satu dasbor cPanel).
Persiapan Aplikasi Sebelum Deploy
Sebelum di-deploy, ada beberapa hal yang perlu disiapkan terlebih dahulu.
1. Pastikan Struktur Folder Rapi
Struktur folder aplikasi Flask kita kurang lebih seperti ini:

2. Buat File requirements.txt
File ini berisi daftar library yang dipakai aplikasi kita, supaya server hosting tahu apa saja yang perlu di-install. Buat file ini dengan menjalankan perintah berikut di terminal (pastikan sudah berada di folder proyek dan virtual environment aktif):
pip freeze > requirements.txtIsinya kurang lebih akan seperti ini:
Flask==3.0.3
Jinja2==3.1.4
Werkzeug==3.0.3
gunicorn==22.0.0Kalau gunicorn belum ada, dapat diinstal terlebih dahulu dengan command:
pip install gunicornGunicorn adalah web server yang digunakan untuk menjalankan aplikasi Flask di lingkungan production (server flask run bawaan hanya cocok untuk development, bukan untuk production).
3. Nonaktifkan Mode Debug
Di app.py, pastikan mode debug dimatikan saat production, karena mode debug bisa membocorkan informasi sensitif ke publik dengan perintah berikut:
if __name__ == "__main__":
app.run(debug=False)4. Pindahkan Data Rahasia ke Environment Variable
Kalau ada SECRET_KEY atau kredensial lain di kode, sebaiknya jangan ditulis langsung di app.py. Gunakan environment variable:
import os
app.secret_key = os.environ.get("SECRET_KEY", "kunci-default-untuk-development")Nantinya nilai SECRET_KEY ini akan diisi lewat pengaturan environment variable di layanan hosting/VPS, bukan ditulis di kode.
Cara Deploy Flask
Sebelum masuk ke langkah deployment, pastikan proyek Flask sudah berjalan lancar di localhost tanpa error, seluruh dependency telah tercatat rapi dalam file requirements.txt, serta variabel sensitif seperti API key dan kredensial database sudah dipisahkan ke dalam file .env demi keamanan aplikasi di server produksi.
Berikut, beberapa cara untuk deploy flask agar dapat diakses online.
Opsi 1: Deploy Menggunakan PythonAnywhere
PythonAnywhere adalah pilihan paling mudah karena semuanya dilakukan lewat browser, tanpa perlu install apa pun di komputer. Ikuti langkah berikut untuk deployment:
- Daftar akun di pythonanywhere (pilih paket Beginner/gratis).
- Setelah login, buka menu Files, lalu upload seluruh file proyek (atau clone dari GitHub lewat menu Consoles -> Bash menggunakan git clone).
- Buka menu Consoles, jalankan Bash console, lalu masuk ke folder proyek dan install dependensi:
cd myapp
pip install --user -r requirements.txt- Buka menu Web, klik Add a new web app, pilih Flask, dan arahkan ke file app.py milik kita.
- Edit file WSGI configuration yang otomatis dibuat, sesuaikan bagian import supaya mengarah ke aplikasi Flask kita, contohnya:
import sys
path = '/home/username/myapp'
if path not in sys.path:
sys.path.append(path)
from app import app as application
- Klik tombol Reload pada halaman Web, lalu buka URL yang diberikan (misalnya yayacips.pythonanywhere.com).
Opsi 2: Deploy Menggunakan VPS
VPS (Virtual Private Server) memberi kita kontrol penuh atas server, sehingga cara ini lebih mendekati praktik production sungguhan. Di sini kita akan pakai kombinasi Gunicorn (menjalankan aplikasi Flask) + Nginx (reverse proxy) yang merupakan setup paling umum dipakai.
Step 1. Sewa dan Akses VPS
Setelah membeli VPS (pilih OS Ubuntu 22.04 karena paling banyak dukungan tutorialnya), akses server lewat SSH dari terminal komputer:
ssh root@alamat_ip_vpsStep 2. Update Server dan Install Dependensi Dasar
Sebelum melakukan deploy, kita harus melakukan update dan install dependensi dasar yang akan digunakan, dengan menjalankan perintah berikut:
apt update && apt upgrade -yapt install python3-pip python3-venv nginx -yStep 3. Upload/Clone Proyek ke Server
Kalau proyek sudah ada di GitHub, langsung clone saja dengan menjalankan perintah:
cd /homegit clone https://github.com/username/myapp.gitcd myappKalau belum ada di GitHub, bisa upload file lewat scp dari komputer lokal dengan perintah SCP berikut:
scp -r myapp/ root@alamat_ip_vps:/home/Untuk cara lengkap melakukan perintah SCP dapat dipelajari pada panduan berikut.
Step 4. Buat Virtual Environment dan Install Library
Virtual environment berfungsi untuk membatasi proyek Python beserta seluruh library yang diinstal agar versi ketergantungannya (dependency) tidak bertabrakan dengan proyek lain atau sistem utama server. Berikut perintah pembuatannya:
python3 -m venv venv
source venv/bin/activateLalu jalankan command berikut:
pip install -r requirements.txtStep 5. Tes Jalankan dengan Gunicorn
Pastikan aplikasi bisa jalan dulu secara manual dengan menjalankan perintah:
gunicorn --bind 0.0.0.0:8000 app:appJika muncul tanpa error, buka http://alamat_ip_vps:8000 di browser untuk memastikan aplikasi sudah tampil. Setelah itu, tekan Ctrl+C untuk menghentikannya dan selanjutnya kita akan jalankan Gunicorn sebagai service agar tetap aktif meski terminal ditutup. Berikut tampilan pada VPS yang sudah berhasil diakses secara online:

Step 6. Buat Gunicorn sebagai Systemd Service
Langkah ini dilakukan untuk mendaftarkan Gunicorn sebagai layanan sistem agar aplikasi Flask dapat berjalan secara otomatis di latar belakang (background) dan langsung online kembali jika server reboot atau mengalami crash. Buat file service baru:
nano /etc/systemd/system/myapp.serviceIsi dengan konfigurasi berikut (sesuaikan path dan nama):
[Unit]
Description=Gunicorn instance untuk menjalankan aplikasi Flask
After=network.target
[Service]
User=root
WorkingDirectory=/home/myapp
Environment="SECRET_KEY=isi_secret_key_kamu"
ExecStart=/home/myapp/venv/bin/gunicorn --workers 3 --bind unix:myapp.sock -m 007 app:app
[Install]
WantedBy=multi-user.targetAktifkan dan jalankan service-nya:
systemctl start myapp
systemctl enable myappCek statusnya untuk memastikan berjalan dengan baik:
systemctl status myappStep 7. Konfigurasi Nginx sebagai Reverse Proxy
Buat file konfigurasi Nginx baru:
nano /etc/nginx/sites-available/myappIsi dengan konfigurasi berikut:
server {
listen 80;
server_name alamat_ip_vps_atau_domain_kamu;
location / {
include proxy_params;
proxy_pass http://unix:/home/myapp/myapp.sock;
}
}Aktifkan konfigurasi dan restart Nginx:
ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled
nginx -t
systemctl restart nginxJangan lupa buka akses firewall untuk Nginx:
ufw allow 'Nginx Full'Sekarang aplikasi Flask kamu sudah bisa diakses lewat http://alamat_ip_vps tanpa perlu menyertakan port lagi.

Opsi 3: Deploy Menggunakan Hosting
Metode deploy pada hosting, cocok untuk yang menginginkan solusi serba ada dengan biaya terjangkau, di mana bisa mengelola aplikasi Flask, domain, dan email profesional sekaligus melalui antarmuka visual cPanel yang familiar.
Untuk panduan langkah demi langkah mengenai konfigurasi Setup Python App, pembuatan file WSGI, hingga pengaturan environment di cPanel, kita dapat membaca panduan lengkapnya di Tutorial Setup Flask Python Framework di cPanel.
- PythonAnywhere cocok kalau ingin cara paling cepat tanpa perlu paham konfigurasi server, cukup upload file lewat browser dan aplikasi langsung online.
- VPS cocok kalau ingin belajar lebih dalam soal cara kerja server production sungguhan (Gunicorn, Nginx, systemd), serta butuh kontrol penuh atas resource, domain, dan konfigurasi server — tapi butuh effort setup yang lebih besar di awal.
- Shared Hosting cocok kalau ingin opsi serba ada yang ramah di kantong, di mana kita bisa mengelola aplikasi Flask, domain, database, dan email profesional langsung dari antarmuka visual cPanel — meskipun opsi kustomisasi servernya terbatas dan butuh penyesuaian awal pada konfigurasi WSGI.
Source Code
Sebagai rangkuman dari materi belajar Python part 16, berikut adalah keseluruhan kode aplikasi Flask yang sudah kita bangun. Lihat source code.
Penutup
Pada seri belajar Python part 16, kita telah mempelajari cara deploy aplikasi Flask sehingga aplikasi yang sebelumnya hanya berjalan di localhost kini dapat diakses secara online melalui internet. Dengan deployment, aplikasi Flask menjadi lebih siap untuk digunakan dan dikembangkan lebih lanjut.
Jangan berhenti di Part 16. Selanjutnya, pada Belajar Python Part 17 kami akan membahas tentang cara menghubungkan Flask dengan database, kita akan mempelajari cara menghubungkan aplikasi Flask dengan database agar dapat menyimpan dan mengelola data. Tetap ikuti seri belajar Python Rumahweb Journal untuk meningkatkan skill Python Anda secara bertahap melalui berbagai tutorial dan praktik langsung.



