β–šServer Journey

Bagian 5 β€” Deploy Aplikasi Web Β· Langkah 18 dari 38

Konsep: Proses yang Harus Tetap Hidup

Kenapa app yang jalan di terminal ikut mati saat terminal ditutup β€” masalah inti yang dipecahkan process manager.

Coba sendiri, lihat langsung masalahnya

Di VM (lewat sesi SSH), jalankan server web sederhana tanpa tool apa pun:

$python3 -m http.server 8000

server file statis super sederhana bawaan Python

Dari browser laptop, buka http://IP_VM:8000 β†’ jalan. Sekarang tutup jendela SSH (atau Ctrl+C lalu exit). Muat ulang browser β†’ MATI. Aplikasi ikut mati bersamanya.

anak proses ikut dibunuhmelindungiTerminal ditutup(SIGHUP)Proses app mati πŸ’€situs downsolusi: nohup / PM2 / systemd
Silsilah proses: SSH session β†’ shell β†’ aplikasimu. Sesi putus, shell dapat SIGHUP, anak-anaknya ikut dibersihkan

Kenapa? Linux menyusun proses seperti silsilah keluarga: sesi SSH menyalakan shell (bash), dan aplikasi yang kamu jalankan adalah ANAK dari shell itu. Saat SSH terputus, kernel mengirim sinyal SIGHUP (hangup) ke shell, dan shell 'pensiun' bersama anak-anaknya. Server yang sehat tidak boleh ikut mati ketika sesi adminnya selesai β€” padahal itu default-nya.

Apa yang dibutuhkan server sungguhan

  • Aplikasi tetap hidup saat TIDAK ada sesi terminal terbuka.
  • Auto-restart kalau crash β€” proses yang mati karena bug harus hidup lagi dalam hitungan detik, bukan menunggu kamu sadar besok pagi.
  • Auto-start saat server reboot β€” habis update kernel, aplikasi harus naik sendiri.

Tiga syarat itu = pekerjaan sebuah process manager. Ada banyak tools yang memenuhi; di web ini kamu akan mengenal dua pendekatan besar:

  1. PM2 β€” process manager khusus ekosistem Node.js/JS, diinstal lewat npm, sangat simpel.
  2. systemd β€” process manager bawaan Linux di level sistem operasi: bisa menjaga proses bahasa APA PUN (Go, Python, PHP, bahkan Node). Semua service yang sudah kamu pakai diam-diam (sshd, nginx) dikelola olehnya.
tools lawas seperti nohup, tmux, screen juga 'menyelamatkan' proses dari SIGHUP β€” tapi tidak memberi auto-restart & auto-boot yang rapi. Untuk produksi, pilihannya process manager β€” dan dua yang akan kamu pakai adalah PM2 dan systemd.

βœ“ Tanda berhasil β€” centang kalau sudah kamu lihat/buktikan sendiri

Tombol β€œlanjut” terbuka setelah semua tercentang β€” bukan hukuman, tapi jaring pengaman: pastikan step ini benar-benar beres sebelum menumpuk step berikutnya di atasnya.

Lagi bermasalah?

Kalau aku jalankan dari terminal DESKTOP VM (bukan SSH), ditutup juga ikut mati?

Ya β€” jendela terminal emulator juga induk shell-nya. Menutup jendela = shell mati = SIGHUP. Yang membedakan hanya siapa yang memegang 'tali' sesi. Solusinya tetap sama: process manager.

← SSH Key Auth ( & Ganti Port, Opsional)πŸ”’ Lanjut (checklist dulu)