Deploy Aplikasi Python: Dari Laptop ke Server
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. DenganTrue, pesan error menampilkan isi settings-mu ke publikSECRET_KEYbaru, berbeda dari yang di laptopALLOWED_HOSTSdiisi 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.
Baca Juga
Celery: Memindahkan Pekerjaan Berat ke Belakang Layar
Kalau ada pekerjaan yang butuh lebih dari beberapa detik, jangan biarkan pengguna menunggunya.
Menyambungkan LLM ke Aplikasi Django
Pola praktis untuk memanggil model bahasa dari Django tanpa membuat aplikasimu jadi lambat.
Komentar (0)
Belum ada komentar. Jadilah yang pertama!
Tinggalkan Komentar
Komentar akan tampil setelah disetujui.