Cara Deploy Aplikasi Python di VPS dengan Plesk Panel (Reverse Proxy)
Saya akan bantu jelaskan cara deploy script Python di VPS dengan Plesk Panel menggunakan reverse proxy.
Cara Deploy Python Script dengan Reverse Proxy di Plesk
1. Persiapan Script Python
Pertama, pastikan script Python Anda siap untuk production:
# Login SSH ke VPS ssh user@your-vps-ip # Buat direktori untuk aplikasi mkdir -p /var/www/vhosts/yourdomain.com/myapp cd /var/www/vhosts/yourdomain.com/myapp # Install virtualenv dan dependencies python3 -m venv venv source venv/bin/activate pip install -r requirements.txt
2. Setup Aplikasi Python (contoh dengan Flask/FastAPI)
Pastikan aplikasi berjalan di port tertentu, misalnya:
# app.py
if __name__ == '__main__':
app.run(host='127.0.0.1', port=8000)
3. Konfigurasi Reverse Proxy di Plesk
Ada 2 cara:
Cara A: Melalui Plesk Panel (Recommended)
- Login ke Plesk Panel
- Pilih domain yang ingin digunakan
- Masuk ke Apache & nginx Settings
- Tambahkan kode berikut di bagian Additional nginx directives:
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;
proxy_redirect off;
}
- Klik OK dan restart nginx
Cara B: Manual Edit (butuh akses root)
Edit file konfigurasi domain:
nano /var/www/vhosts/system/yourdomain.com/conf/vhost_nginx.conf
4. Jalankan Aplikasi sebagai Service
Buat systemd service agar aplikasi berjalan otomatis:
# Buat file service sudo nano /etc/systemd/system/myapp.service
Isi dengan:
[Unit] Description=My Python App After=network.target [Service] User=www-data WorkingDirectory=/var/www/vhosts/yourdomain.com/myapp Environment="PATH=/var/www/vhosts/yourdomain.com/myapp/venv/bin" ExecStart=/var/www/vhosts/yourdomain.com/myapp/venv/bin/python app.py [Install] WantedBy=multi-user.target
Kemudian:
sudo systemctl daemon-reload sudo systemctl start myapp sudo systemctl enable myapp sudo systemctl status myapp
5. Tentang Akses Webmaster di Plesk
Apakah user webmaster bisa melakukan ini?
Tergantung permission yang diberikan:
- ✅ BISA: User webmaster biasanya bisa mengakses "Apache & nginx Settings" untuk konfigurasi reverse proxy
- ✅ BISA: Upload file melalui File Manager Plesk
- ❌ TIDAK BISA: Akses SSH penuh (kecuali diberikan akses khusus)
- ❌ TIDAK BISA: Membuat systemd service (butuh akses root)
Solusi untuk webmaster:
- Minta admin root untuk:
- Setup systemd service
- Memberikan akses SSH terbatas (jail shell)
- Atau gunakan Passenger di Plesk (jika tersedia) yang lebih user-friendly untuk Python apps
- Atau gunakan PM2 untuk menjalankan aplikasi:
npm install -g pm2 pm2 start app.py --interpreter python3 pm2 save pm2 startup
Rekomendasi Best Practice:
- Gunakan Gunicorn atau Uvicorn untuk production:
pip install gunicorn gunicorn -w 4 -b 127.0.0.1:8000 app:app
- Setup firewall agar port 8000 hanya bisa diakses localhost
- Gunakan SSL/HTTPS (Plesk menyediakan Let's Encrypt gratis)
Apakah Anda butuh bantuan lebih detail untuk bagian tertentu?