Pendahuluan
Python adalah bahasa paling populer untuk AI/ML, data science, dan API backend modern. FastAPI mendominasi untuk REST API berkecepatan tinggi, sementara Django tetap pilihan utama untuk aplikasi web kompleks dengan admin panel.
Artikel ini mencakup kedua framework sekaligus dengan stack yang sama: Nginx + Gunicorn/Uvicorn + systemd + SSL.
FastAPI vs Django: Pilih yang Mana?
| Aspek | FastAPI | Django |
|---|---|---|
| Kecepatan | ⚡ Sangat cepat (async) | 🟡 Cukup cepat |
| Admin Panel | ❌ Tidak ada | ✅ Built-in |
| Auto API Docs | ✅ Swagger/ReDoc | ❌ Manual |
| ORM | SQLAlchemy/Tortoise | ✅ Django ORM built-in |
| Cocok untuk | API, microservice, AI backend | Web app lengkap, CMS |
Persiapan VPS dan Python
sudo apt update && sudo apt upgrade -y
sudo apt install python3 python3-pip python3-venv nginx -y
# Cek versi
python3 --version
pip3 --version
Buat user khusus untuk app:
sudo adduser --system --group --no-create-home appuser
Deploy Aplikasi FastAPI
cd /var/www
sudo git clone https://github.com/username/fastapi-app.git
sudo chown -R appuser:appuser fastapi-app
cd fastapi-app
# Buat virtual environment
python3 -m venv venv
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
pip install uvicorn[standard] gunicorn
Test jalankan secara manual:
uvicorn main:app --host 0.0.0.0 --port 8000
Jika berjalan, Ctrl+C lalu lanjut ke setup systemd.
Deploy Aplikasi Django
cd /var/www
sudo git clone https://github.com/username/django-app.git
cd django-app
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
pip install gunicorn
# Konfigurasi .env atau settings.py
# Set DEBUG=False, ALLOWED_HOSTS=['domain-kamu.com']
# Collect static files
python manage.py collectstatic --no-input
python manage.py migrate
Test Gunicorn:
gunicorn --bind 0.0.0.0:8000 myproject.wsgi:application
Konfigurasi Nginx Reverse Proxy
sudo nano /etc/nginx/sites-available/myapp
server {
listen 80;
server_name api.domain-kamu.com;
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;
}
# Untuk Django static files
location /static/ {
root /var/www/django-app;
}
}
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
Setup Systemd Service
Untuk FastAPI (Uvicorn):
sudo nano /etc/systemd/system/fastapi.service
[Unit]
Description=FastAPI Application
After=network.target
[Service]
User=appuser
WorkingDirectory=/var/www/fastapi-app
ExecStart=/var/www/fastapi-app/venv/bin/uvicorn main:app --host 127.0.0.1 --port 8000 --workers 2
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=multi-user.target
Untuk Django (Gunicorn):
[Unit]
Description=Django Application (Gunicorn)
After=network.target
[Service]
User=appuser
WorkingDirectory=/var/www/django-app
ExecStart=/var/www/django-app/venv/bin/gunicorn myproject.wsgi:application \
--bind 127.0.0.1:8000 --workers 3
Restart=on-failure
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable fastapi # atau django
sudo systemctl start fastapi
sudo systemctl status fastapi
Install SSL dengan Certbot
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d api.domain-kamu.com
Kenapa VPS SufaNet Cocok untuk Python App?
- Python bisa diinstall bebas tanpa batasan
- RAM cukup untuk model ML kecil atau async workers
- SSD cepat untuk database query
- Tidak ada limitasi CPU seperti shared hosting
Python butuh VPS bukan shared hosting
Gunicorn workers butuh resource yang konsisten. Shared hosting tidak bisa menjamin itu.
🚀 Lihat VPS Singapore SufaNetFAQ
Berapa worker Gunicorn/Uvicorn yang ideal?
Formula umum: (2 × jumlah CPU) + 1. Untuk VPS 2 vCPU → 5 workers.
FastAPI bisa connect ke PostgreSQL?
Ya, gunakan SQLAlchemy dengan asyncpg untuk async PostgreSQL, atau psycopg2 untuk sync. Django punya built-in support PostgreSQL.
Menggunakan Docker atau langsung di VPS?
Untuk simplicity, langsung di VPS lebih mudah. Untuk multi-service atau scaling, Docker Compose lebih clean.
Kesimpulan
Python production di VPS tidak harus rumit. Dengan Nginx + Gunicorn/Uvicorn + systemd, kamu punya stack yang stabil, proven, dan mudah di-maintain.
Tambahkan CI/CD GitHub Actions untuk auto deploy, dan operasional harian jadi zero-touch.