β–šServer Journey

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

Istilah: systemd vs systemctl vs Service

Tiga istilah yang paling sering tertukar di dunia Linux β€” dibedah sekali, cukup selamanya.

Satu kalimat dulu, baru analogi

systemd adalah sistemnya (program pertama yang jalan saat boot, mengurus semua service di mesin). systemctl adalah perintah untuk menyuruh systemd. .service (unit file) adalah instruksi tertulis yang kamu berikan ke systemd tentang cara menjalankan aplikasi-mu.

perintahmenjalankan sesuairesepsystemd=pengelola gedungsystemctl= interphoneunit file .service= surat instruksiservice (nginx, dst)
Analogi gedung: kamu (admin) β†’ systemctl (interphone) β†’ systemd (pengelola gedung) β†’ unit file (surat instruksi) β†’ aplikasimu (lampunya)
  • systemd = pengelola gedung. Dia bangun paling awal setiap mesin menyala (init process, PID 1), punya kunci semua ruangan, menyalakan/mematikan lampu sesuai jadwal (service), dan mencatat semuanya. Kamu tidak berbicara langsung dengan systemd β€” tidak ada command bernama systemd untuk penggunaan harian.
  • systemctl = interphone-nya. Alat komunikasimu ke pengelola: start, stop, restart, enable (nyalakan otomatis setiap gedung dibuka), status (bagaimana kondisinya sekarang?).
  • unit file = surat instruksi. File teks di /etc/systemd/system/nama.service: 'hidupkan aplikasi ini, command-nya X, kerjanya di folder Y, jalankan sebagai user Z, nyalakan lagi kalau mati.' Pengelola membacanya saat menerima perintah.

Command yang akan kamu pakai (hafal pola, bukan hapalan)

$sudo systemctl start myapp

nyalakan sekarang

$sudo systemctl enable myapp

nyalakan otomatis setiap boot (TIDAK start sekarang)

$sudo systemctl enable --now myapp

kombinasi paling umum: start sekarang + auto-boot

$sudo systemctl status myapp

hidup/mati, sejak kapan, log 10 baris terakhir

$sudo systemctl restart myapp

matikan lalu nyalakan β€” wajib setelah ubah config/unit file

$sudo systemctl daemon-reload

beri tahu systemd bahwa ada unit file yang DIUBAH di disk β€” dilakukan sebelum restart saat mengedit .service

$journalctl -u myapp -f

log milik service itu (-u = unit, -f = follow/ik seperti tail -f)

Perhatikan polanya: daemon-reload itu 'systemd, baca ulang surat-suratnya', bukan merestart apa pun. Urutan wajib setelah edit unit file: daemon-reload β†’ restart. Lupa daemon-reload = systemd masih memakai instruksi lama, dan kamu bingung kenapa editanmu tidak berdampak.

Lalu PM2 posisinya di mana?

PM2 = process manager pihak ketiga KHUSUS ekosistem Node.js β€” konsepnya paralel dengan systemd (jaga proses, auto-restart, lihat log) tapi berjalan 'di atas' OS, bukan di dalamnya. Kelebihan PM2 untuk orang JS: nol konfigurasi file (langsung pm2 start), log viewer built-in, cluster mode (pakai semua core CPU), reload tanpa downtime. Bedanya dengan systemd, praktis:

systemdPM2
LevelOS β€” bahasa apa punEkosistem Node/JS
Cara konfigurasiUnit file .servicePerintah CLI / file JSON kecil
InstallSudah ada di Ubuntunpm install -g pm2
Fitur unikJaringan target, socket activation, terintegrasi journal logCluster mode, pm2 logs real-time, deploy JSON
Kapan pilihDefault untuk apa pun di luar JS (Go/Python/biner)App Node yang ingin manajemen simpel

Catatan jujur: app Node JUGA bisa dijalankan systemd (banyak produksi memilih itu β€” satu cara untuk semua). PM2 bukan syarat, hanya kenyamanan. Setelah step deploy stack, kamu akan punya opini sendiri.

βœ“ 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?

Bedanya enable vs start masih membingungkan

start = 'nyalakan sekarang'. enable = 'nyalakan otomatis setiap kali mesin boot'. Keduanya terpisah! Service yang enabled tapi belum pernah start setelah konfigurasi baru? enable --now atau start manual. Cara cek status dua-duanya: systemctl status menampilkan 'enabled'/'disabled' baris sendiri.

← Konsep: Proses yang Harus Tetap HidupπŸ”’ Lanjut (checklist dulu)