Lompat ke konten
โ† Semua tulisan

Deploy Aplikasi Python: Dari Laptop ke Server

N Nicholaus Verdhy Putranto 21 Juli 2026 ยท 3 menit baca ยท 15 dilihat

Perbedaan terbesar antara aplikasi Python dan aplikasi PHP terlihat justru saat deploy. PHP tinggal ditaruh; Python butuh proses yang hidup terus.

Kenapa runserver tidak boleh dipakai

manage.py runserver dirancang untuk pengembangan. Satu proses, tanpa optimasi, dengan peringatan keamanan yang jelas di dokumentasi Django.

Untuk produksi kamu butuh server WSGI โ€” biasanya Gunicorn โ€” dan di depannya reverse proxy seperti Nginx.

Susunannya

Pengunjung โ†’ Nginx โ†’ Gunicorn โ†’ Django
              โ”‚
              โ””โ”€ melayani /static/ dan /media/ langsung

Nginx menangani koneksi lambat, HTTPS, dan berkas statis. Gunicorn menjalankan kode Python-mu di beberapa proses sekaligus.

Menjalankan Gunicorn

pip install gunicorn

gunicorn config.wsgi:application \
  --bind 127.0.0.1:8000 \
  --workers 3 \
  --timeout 60 \
  --access-logfile -

Aturan umum jumlah worker: (2 ร— jumlah CPU) + 1. Untuk VPS 1 CPU, tiga sudah pas.

Supaya tetap hidup setelah restart

Proses yang dijalankan manual akan mati saat kamu keluar dari SSH. Serahkan ke systemd.

[Unit]
Description=Gunicorn untuk situs saya
After=network.target

[Service]
User=www-data
WorkingDirectory=/var/www/situs
Environment="PATH=/var/www/situs/venv/bin"
ExecStart=/var/www/situs/venv/bin/gunicorn \
    config.wsgi:application --bind 127.0.0.1:8000 --workers 3
Restart=always

[Install]
WantedBy=multi-user.target
sudo systemctl enable --now situs
sudo systemctl status situs

Yang berubah dari lingkungan lokal

  • DEBUG=False โ€” wajib. Dengan True, pesan error menampilkan isi settings-mu ke publik
  • SECRET_KEY baru, berbeda dari yang di laptop
  • ALLOWED_HOSTS diisi domain aslimu
  • Berkas statis dikumpulkan dengan collectstatic
  • Kredensial database mengikuti server, bukan lokal

Satu hal yang sering mengejutkan: begitu DEBUG=False, Django berhenti melayani berkas statis. Kalau Nginx belum diatur, situsmu tampil tanpa CSS sama sekali. WhiteNoise adalah jalan pintas yang baik untuk ini.

Daftar periksa sebelum go-live

python manage.py check --deploy
python manage.py migrate
python manage.py collectstatic --noinput
python manage.py createsuperuser

Perintah pertama akan menyebutkan pengaturan keamanan yang belum aktif. Perhatikan semuanya.

Docker: kapan sepadan

Docker menyelesaikan masalah "jalan di laptop saya". Tapi menambah satu lapisan lagi untuk dipelajari dan di-debug.

Untuk satu aplikasi di satu VPS, deploy langsung sering kali lebih sederhana. Docker mulai sepadan ketika kamu punya beberapa layanan, beberapa lingkungan, atau tim yang perlu setup identik.

Yang paling sering terlupa

Backup database. Bukan "nanti", tapi sebelum pengguna pertama masuk. Satu cron harian yang menyimpan dump ke tempat lain sudah menyelamatkan banyak orang.

Pemantauan. Kamu perlu tahu situsmu mati sebelum penggunamu yang memberitahu.

Rencana rollback. Suatu saat deploy akan gagal. Tahu cara kembali ke versi sebelumnya dalam dua menit, bukan dua jam.

Bagikan ke WhatsApp Bagikan ke X

Komentar (0)

Belum ada komentar. Jadilah yang pertama!

Tinggalkan Komentar

Komentar akan tampil setelah disetujui.

Baca Juga