Banner - Belajar Python Part 16

Belajar Python Part 16: Cara Deploy Aplikasi Flask

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.

Promo Hosting Murah Rumahweb

Pilihan Layanan Hosting untuk Flask

Ada beberapa layanan yang populer untuk aplikasi Flask, terutama untuk pemula:

LayananKelebihanCocok Untuk
PythonAnywhereGratis, khusus Python, sangat
mudah untuk pemula
Belajar & proyek kecil
VPSKontrol penuh, fleksibel, tidak
ada batasan resource dari platform
Aplikasi production skala kecil
menengah
Shared HostingMurah, sudah termasuk domain
& email, antarmuka cPanel yang
familiar 
Website portofolio atau aplikasi
sederhana

Di artikel ini kita akan fokus ke tiga metode:

  1. PythonAnywhere (paling simpel, tanpa command line yang rumit, cocok untuk pemula),
  2. VPS (lebih fleksibel dan mendekati cara kerja server production sesungguhnya, cocok kalau ingin belajar lebih dalam soal server) serta,
  3. 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:

Struktur folder aplikasi Flask

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.txt

Isinya kurang lebih akan seperti ini:

Flask==3.0.3
Jinja2==3.1.4
Werkzeug==3.0.3
gunicorn==22.0.0

Kalau gunicorn belum ada, dapat diinstal terlebih dahulu dengan command:

pip install gunicorn

Gunicorn 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:

  1. Daftar akun di pythonanywhere (pilih paket Beginner/gratis).
  2. Setelah login, buka menu Files, lalu upload seluruh file proyek (atau clone dari GitHub lewat menu Consoles -> Bash menggunakan git clone).
  3. Buka menu Consoles, jalankan Bash console, lalu masuk ke folder proyek dan install dependensi: 
   cd myapp
   pip install --user -r requirements.txt
  1. Buka menu Web, klik Add a new web app, pilih Flask, dan arahkan ke file app.py milik kita.
  2. 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
  1. Klik tombol Reload pada halaman Web, lalu buka URL yang diberikan (misalnya yayacips.pythonanywhere.com).
Tampilan website python anywhere - belajar python

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_vps

Step 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 -y
apt install python3-pip python3-venv nginx -y

Step 3. Upload/Clone Proyek ke Server

Kalau proyek sudah ada di GitHub, langsung clone saja dengan menjalankan perintah:

cd /home
git clone https://github.com/username/myapp.git
cd myapp

Kalau 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/activate

Lalu jalankan command berikut:

pip install -r requirements.txt

Step 5. Tes Jalankan dengan Gunicorn

Pastikan aplikasi bisa jalan dulu secara manual dengan menjalankan perintah:

gunicorn --bind 0.0.0.0:8000 app:app

Jika 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:

Tampilan website pada VPS menggunakan port

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.service

Isi 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.target

Aktifkan dan jalankan service-nya:

systemctl start myapp

systemctl enable myapp

Cek statusnya untuk memastikan berjalan dengan baik:

systemctl status myapp

Step 7. Konfigurasi Nginx sebagai Reverse Proxy

Buat file konfigurasi Nginx baru:

nano /etc/nginx/sites-available/myapp

Isi 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 nginx

Jangan 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.

Tampilan website pada VPS  tanpa port

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.

Perbandingan PythonAnywhere, VPS, dan Shared Hosting untuk Flask

  • 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.

Bermanfaatkah Artikel Ini?

Klik bintang 5 untuk rating!

Rating rata-rata 0 / 5. Vote count: 0

Belum ada vote hingga saat ini!

Kami mohon maaf artikel ini kurang berguna untuk Anda!

Mari kita perbaiki artikel ini!

Beri tahu kami bagaimana kami dapat meningkatkan artikel ini?

Amiratur Rafifah

Amiratur Rafifah, atau yang akrab dipanggil Fifah, adalah seorang staf technical support di Rumahweb Indonesia dengan passion besar di dunia pendidikan, teknologi, dan kreativitas. Melalui Journal Rumahweb, Fifah ingin berbagi insight dan solusi teknis, dengan fokus pada penggunaan dan pengembangan Python di lingkungan hosting.