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.
- 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 myappnyalakan sekarang
$sudo systemctl enable myappnyalakan otomatis setiap boot (TIDAK start sekarang)
$sudo systemctl enable --now myappkombinasi paling umum: start sekarang + auto-boot
$sudo systemctl status myapphidup/mati, sejak kapan, log 10 baris terakhir
$sudo systemctl restart myappmatikan lalu nyalakan β wajib setelah ubah config/unit file
$sudo systemctl daemon-reloadberi tahu systemd bahwa ada unit file yang DIUBAH di disk β dilakukan sebelum restart saat mengedit .service
$journalctl -u myapp -flog milik service itu (-u = unit, -f = follow/ik seperti tail -f)
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:
| systemd | PM2 | |
|---|---|---|
| Level | OS β bahasa apa pun | Ekosistem Node/JS |
| Cara konfigurasi | Unit file .service | Perintah CLI / file JSON kecil |
| Install | Sudah ada di Ubuntu | npm install -g pm2 |
| Fitur unik | Jaringan target, socket activation, terintegrasi journal log | Cluster mode, pm2 logs real-time, deploy JSON |
| Kapan pilih | Default 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.