Cara Deploy Aplikasi FastAPI di aaPanel, Pemula Wajib Tahu!
Halo DomaiNesians! Di era microservices dan aplikasi berbasis API yang menuntut performa tinggi, FastAPI telah menjadi salah satu framework Python paling populer. Deploy aplikasi FastAPI memiliki keunggulan dalam kecepatan, dukungan asynchronous (ASGI), dan dokumentasi API otomatis menjadikannya pilihan ideal.
Namun, men-deploy aplikasi Python high-performance seperti FastAPI di server VPS seringkali membutuhkan konfigurasi web server yang detail. Nah, kabar baiknya, bagi kamu pengguna aaPanel, proses ini dapat dipermudah menggunakan tool aaPanel yaitu Python Manager.
Pada artikel kali ini kita akan belajar step by step mulai dari persiapan hingga aplikasi FastAPI kamu dapat diakses publik dengan aman melalui Reverse Proxy Nginx di aaPanel.
Mengapa Menggunakan FastAPI dan Python Manager aaPanel?
Sebelum melangkah ke bagian yang lebih teknis, penting untuk memahami hubungan antara framework yang kita gunakan dan control panel server kita.
Keunggulan FastAPI (ASGI Framework)
Tidak seperti framework Python tradisional (seperti Flask/Django) yang menggunakan standar WSGI (Web Server Gateway Interface) synchronous, FastAPI berjalan di atas standar ASGI (Asynchronous Server Gateway Interface).
- Asynchronous
FastAPI dapat menangani banyak permintaan secara bersamaan tanpa memblokir thread, menghasilkan throughput (jumlah permintaan yang dilayani per detik) yang jauh lebih tinggi.
- Performa
Didukung oleh ASGI server seperti Uvicorn, FastAPI dikenal sangat cepat, menyaingi performa Go dan Node.js.
- Otomatisasi Dokumentasi
Secara otomatis menghasilkan dokumentasi API interaktif (Swagger UI/ReDoc), mempercepat proses debugging dan kolaborasi tim.
Peran Python Manager di aaPanel
Python Manager adalah plugin penting di aaPanel yang berfungsi sebagai jembatan antara project Python kalian dengan lingkungan production server. Plugin ini mengotomatisasi beberapa tugas penting, seperti:
- Virtual Environment (venv)
Membuat dan mengelola virtual environment terisolasi untuk setiap project.
- Process Manager
Menggunakan Process Manager (seperti Gunicorn atau Uvicorn, meskipun Uvicorn lebih disarankan untuk FastAPI) untuk menjalankan project kamu di background.
- Integrasi Nginx
Menyediakan opsi mapping otomatis ke domain melalui konfigurasi Reverse Proxy.
Tahap 1: Persiapan Deploy Aplikasi FastAPI dan Lingkungan Server
Di tahap ini, kita akan memastikan semua tool yang dibutuhkan di aaPanel sudah terinstal dan project FastAPI kamu siap di-deploy.
1. Prasyarat Wajib di aaPanel
Pastikan kamu sudah menginstal komponen berikut melalui menu App Store di aaPanel:
- Nginx/Apache: wajib karena berfungsi sebagai Reverse Proxy dan melayani koneksi publik (Nginx lebih disarankan).
- Python Manager: instal plugin ini. Di sini kamu bisa menginstal beberapa versi Python (misalnya 3.8, 3.9, 3.10) yang bisa kamu sesuaikan dengan kebutuhan.
- Domain: pastikan kamu sudah menambahkan domain melalui menu Website dan mengatur A Record untuk domain tersebut.
2. Struktur Project FastAPI
Anggap project FastAPI kamu memiliki struktur sederhana sebagai berikut. Semua kode dan dependencies berada dalam satu virtual environment yang terisolasi.
- main.py: file entry point utama FastAPI kamu (berisi objek FastAPI).
- requirements.txt: daftar dependencies yang dibutuhkan project.
Contoh sederhana file main.py:
|
1 2 3 4 5 6 7 8 9 10 |
from fastapi import FastAPI import uvicorn app = FastAPI() @app.get("/") def read_root(): return {"Hello": "DomaiNesians", "framework": "FastAPI"} # Objek yang akan dipanggil oleh server (Uvicorn/Gunicorn) adalah 'app' |
Contoh isi file requirements.txt:
|
1 2 |
fastapi uvicorn[standard] # Uvicorn sebagai ASGI server |
3. Upload Project ke Server
Gunakan Files Manager di aaPanel atau koneksi FTP/SFTP untuk meng-upload seluruh folder project FastAPI kamu ke path yang mudah diakses di server (misalnya: /www/wwwroot/my_fastapi_app).
Tahap 2: Konfigurasi Project & Instalasi ASGI di Python Manager
Di tahap ini, kita akan membuat project baru dan segera menginstal dependencies penting (fastapi dan uvicorn), serta memastikan startup command menggunakan ASGI worker yang benar agar aplikasi tidak crash.
1. Menambahkan Proyek Baru
a. Masuk ke menu App Store > Python Manager > Setting.
b. Pada tab Project List, klik tombol Add Project.
2. Mengisi Detail Proyek FastAPI
Isi form penambahan project dengan konfigurasi khusus untuk FastAPI.
- Name: nama proyek kamu, contoh my_fastapi_app.
- Version: pilih versi Python dan pastikan versi ini kompatibel dengan library kamu, contoh 3.11.4.
- Framework: pilih flask atau django (saat FastAPI tidak tersedia). Jika tidak ada pilihan FastAPI, kita akan menggunakan Flask atau Django dan kemudian mengubah perintah Startup Mode secara manual.
- Startup Mode: pilih gunicorn. Kita akan menggunakan Uvicorn, namun kita akan memanggilnya melalui Gunicorn Worker (atau langsung Uvicorn) di kolom Command.
- Project path: path folder yang berisi file main.py dan requirements.txt, contoh: /www/wwwroot/my_fastapi_app/.
- Log path: path untuk folder log, contoh: /www/wwwroot/my_fastapi_app/logs.
- Startup file/dir: file entry point utama, contoh: /www/wwwroot/my_fastapi_app/main.py.
- Port: port internal server yang akan digunakan oleh Uvicorn, contoh: 2000 (atau port kosong lainnya).
- Run user: pengguna yang menjalankan service, contoh: www.
- Centang opsi Install Module dan System startup.
3. Instalasi Modul Wajib
Meskipun kamu sudah meng-upload file requirements.txt dan mencentang opsi Install Module, namun proses instalasi dependency ini seringkali gagal. Proses gagalnya instalasi modul ini bisa ditandai dengan status project “Suspended” pada project yang baru saja kamu tambahkan.
Selain itu, kamu bisa cek pada tab Module. Jika dependency yang kamu install di file requirements.txt (fastapi dan uvicorn) tidak terinstal secara sempurna, maka kamu bisa menginstal modul-modul tersebut secara manual ke dalam lingkungan virtual yang baru dibuat.
a. Jalankan perintah berikut di terminal:
|
1 |
/path/ke/venv/bin/pip install -r /www/wwwroot/my_project/requirements.txt |
(Ganti /path/ke/venv/bin/pip dengan path yang kamu copy).
Jika kamu menemui error seperti No such file or directory saat memanggil /path/to/pip, coba ganti pip menjadi pip3.x (misalnya pip3.11) sesuai versi Python yang kamu pakai di ven.
4. Mengatur Startup Command Khusus FastAPI
Setelah semua modul terinstal, kita harus memberitahu Gunicorn untuk menggunakan worker yang kompatibel dengan FastAPI (ASGI).
a. Kembali ke Project List dan klik Conf (Settings).
b. Sesuaikan konfigurasi seperti berikut:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
bind = '0.0.0.0:2000' user = 'www' workers = 4 threads = 1 backlog = 512 chdir = '/www/wwwroot/my_fastapi_app' access_log_format = '%(t)s %(p)s %(h)s "%(r)s" %(s)s %(L)s %(b)s %(f)s" "%(a)s"' loglevel = 'info' worker_class = 'uvicorn.workers.UvicornWorker' errorlog = chdir + '/logs/error.log' accesslog = chdir + '/logs/access.log' pidfile = chdir + '/logs/my_fastapi_app.pid' |
Keterangan perubahan:
- workers = 4: sesuaikan angka 4 dengan jumlah CPU core * 2 + 1. Karena pada tutorial ini kita menggunakan VPS Cloud DomaiNesia 2 CPU Core, maka nilai workers yang digunakan adalah 2 * 2 + 1 = 5.
- threads=1: bertujuan untuk mengoptimalkan cara Gunicorn bekerja dengan FastAPI (ASGI).
- worker_class = ‘uvicorn.workers.UvicornWorker’: bertujuan untuk memaksa Gunicorn menggunakan worker asinkron Uvicorn.
Setelah Anda menyimpan perubahan di panel Conf, Restart proyek Anda di Python Manager. Server FastAPI Anda sekarang akan berjalan dalam mode ASGI yang optimal.
5. Menjalankan dan Verifikasi Project
Setelah konfigurasi baru untuk project FastAPI tersimpan, klik Restart pada proyek kamu di Project List. Status proyek harus berubah menjadi Running atau Open. Jika status kembali Suspended, cek Log untuk memastikan tidak ada error. Jika berhasil, log akan menunjukkan Uvicorn/Gunicorn sedang menggunakan port 2000.
Tahap 3: Menghubungkan Domain via Reverse Proxy Nginx
Saat ini, aplikasi FastAPI kamu sudah berjalan di port 2000 di dalam server (127.0.0.1:2000), tetapi belum bisa diakses dari luar. Kita perlu menggunakan Nginx sebagai Reverse Proxy untuk meneruskan traffic dari domain kamu (port 80/443) ke port 2000 internal.
1. Mengatur Reverse Proxy
a. Buka menu Website, lalu pilih domain yang sudah kamu tambahkan untuk project FastAPI tersebut. Jika belum ada, klik tombol Add Site untuk menambahkan domain.
b. Pada halaman Site modification, buka tab Reverse proxy kemudian klik tombol Add reverse proxy.
c. Arahkan URL ke port projek kamu di http://127.0.0.1:2000 agar kamu bisa mengakses hasil deploy project FastAPI kamu langsung dari domain http://api.domainku.com tanpa perlu menambahkan port lagi di belakang URL.
d. Klik Confirm.
2. Verifikasi dan Pengujian
a. Buka browser dan akses domain kamu (misalnya: http://api.domainku.com).
b. Jika berhasil, maka output yang tampil adalah hasil deployment project FastAPI kamu.
3. Mengamankan dengan SSL (HTTPS)
Setelah Reverse Proxy terpasang, segera amankan koneksi dengan SSL/HTTPS:
a. Masuk ke menu Website.
b. Pilih domain project FastAPI kamu.
c. Masuk ke tab SSL.
d. Lakukan instalasi sertifikat Let’s Encrypt atau upload sertifikat kamu.
e. Aktifkan Force HTTPS untuk memastikan semua koneksi diarahkan ke 443.
Perlu kamu tahu bahwa koneksi antara Nginx dan Uvicorn/FastAPI (di 127.0.0.1:2000) tetap tidak terenkripsi, tetapi ini aman karena terjadi internal di dalam server yang sama. Koneksi publik (antara user dan Nginx) sudah dienkripsi oleh SSL.
Kesimpulan
Plugin Python Manager di aaPanel terbukti menjadi alat yang penting dalam menyederhanakan deployment aplikasi backend Python yang kompleks, mulai dari instalasi dependencies hingga setup Reverse Proxy Nginx.
Dengan deployment ini, aplikasi FastAPI kamu dapat melayani permintaan dengan performa tinggi, memanfaatkan kemampuan asynchronous secara maksimal, dan diakses publik dengan koneksi HTTPS yang aman. Ini adalah best practice yang wajib diikuti oleh setiap developer modern.
Jika kamu ingin menjalankan aplikasi FastAPI Anda di lingkungan server yang stabil, performa tinggi, dan mudah diintegrasikan dengan aaPanel, Cloud VPS DomaiNesia adalah solusi yang tepat. Kamu akan mendapatkan resource yang memadai, akses root penuh, dan keandalan yang dibutuhkan oleh aplikasi high-performance berbasis Python.














