Deployment ke Produksi (Linux)
Serial Bagian 8: Mengamankan koneksi SSL, menjalankan backend sebagai daemon (Systemd), dan menghubungkan ke Nginx.
27. requirements.txt
Agar server Linux bisa menginstall library yang sama dengan komputer Anda, kita wajib membuat file daftar dependensi ini.
fastapi==0.104.1
uvicorn[standard]==0.24.0
sqlalchemy==2.0.23
pydantic==2.5.0
python-multipart==0.0.6
Install di server via SSH:
pip install -r requirements.txt
28. Systemd Service (Auto-Start)
Jika kita menjalankan Python dengan perintah python main.py, maka server akan mati begitu kita menutput Terminal SSH. Kita harus membuat "Service" agar server berjalan di latar belakang.
Perlu akses root (sudo) untuk membuat file ini.
[Unit]
Description=Gunicorn instance to serve FastAPI application "AO"
After=network.target
[Service]
# Ganti 'root' dengan user web server jika perlu (misal: www-data)
User=root
Group=root
# Working directory: Lokasi folder project
WorkingDirectory=/www/wwwroot/app-collection/ao
# Command start: Menjalankan Uvicorn
ExecStart=/usr/local/bin/uvicorn main:app --host 0.0.0.0 --port 8000
# Restart otomatis jika crash
Restart=always
[Install]
WantedBy=multi-user.target
Jalankan perintah berikut di terminal SSH:
# 1. Reload daemon
sudo systemctl daemon-reload
# 2. Start service
sudo systemctl start ao-app
# 3. Enable agar jalan otomatis saat reboot server
sudo systemctl enable ao-app
# 4. Cek status (pastikan status: Active)
sudo systemctl status ao-app
Sekarang aplikasi Python berjalan di internal server port **8000**.
29. Nginx Reverse Proxy
Kita tidak membuka port 8000 ke publik demi keamanan. Kita biarkan Nginx (port 80/443) menghadap publik, lalu Nginx meneruskan request ke port 8000.
(Atau di panel hosting jika tidak punya akses root edit file ini)
server {
listen 80;
server_name ao.baktimakmur.com;
# Redirect ke HTTPS (Opsional, tapi disarankan)
# return 301 https://$host$request_uri;
# Location untuk static files
location /static {
alias /www/wwwroot/ao.baktimakmur.com/static;
expires 30d;
}
# Admin Panel
location /admin.html {
root /www/wwwroot/ao.baktimakmur.com;
}
# Proxy ke Python Backend
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;
}
# Halaman Root (index.html)
location = / {
root /www/wwwroot/ao.baktimakmur.com;
try_files $uri $uri/ /index.html;
}
}
Restart Nginx agar konfigurasi berlaku:
sudo systemctl restart nginx
Verifikasi Akhir
Selamat! Aplikasi AI SaaS Anda sekarang berjalan di produksi.
- Buka
https://ao.baktimakmur.comdi browser. - Frontend akan muncul dan mencoba menghubungi API di belakang layar (via proxy).
- Cek
https://ao.baktimakmur.com/docsuntuk melihat dokumentasi API otomatis FastAPI.