EQVPS
Mulai

Cara membuat layanan systemd agar aplikasi tetap berjalan

Ubah skrip atau aplikasi apa pun menjadi layanan terkelola yang mulai saat boot, mulai ulang jika crash, dan mencatat log ke journalctl. Tulis berkas unit, aktifkan, dan cek statusnya — cara standar menjalankan sesuatu 24/7 di Linux.

Menjalankan aplikasi dengan & atau nohup baik-baik saja sampai server reboot, prosesnya crash, atau Anda ingin menemukan lognya — lalu semuanya berantakan. systemd adalah jawaban standar: ia memulai aplikasi Anda saat boot, memulainya ulang jika mati, dan menangkap lognya. Mengubah skrip atau biner menjadi layanan terkelola hanyalah satu berkas kecil.

1. Tulis berkas unit

Buat /etc/systemd/system/myapp.service:

[Unit]
Description=My application
After=network.target

[Service]
User=myapp
WorkingDirectory=/opt/myapp
ExecStart=/usr/bin/python3 /opt/myapp/run.py
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

Sesuaikan ExecStart, WorkingDirectory, dan User dengan aplikasi Anda. Restart=always adalah yang membuatnya tetap hidup.

2. Buat pengguna khusus (disarankan)

sudo useradd --system --no-create-home --shell /usr/sbin/nologin myapp
sudo chown -R myapp:myapp /opt/myapp

Berjalan sebagai pengguna non-root membatasi kerusakan jika aplikasi suatu saat dibobol.

3. Aktifkan dan mulai

sudo systemctl daemon-reload
sudo systemctl enable --now myapp

enable membuatnya mulai saat boot; --now memulainya seketika.

4. Cek status dan log

sudo systemctl status myapp
journalctl -u myapp -f       # ikuti log langsung

Perintah sehari-hari

sudo systemctl restart myapp   # mulai ulang setelah perubahan
sudo systemctl stop myapp      # hentikan
sudo systemctl disable myapp   # hentikan mulai saat boot

Peringatan jujur

Langkah berikutnya

Layanan systemd adalah cara Anda membuat apa pun tetap berjalan 24/7 — misalnya agen AI yang berjalan sepanjang waktu atau relay di balik server RustDesk swa-inang. Jika aplikasi Anda malah dikontainerkan, --restart unless-stopped milik Docker memainkan peran yang sama — lihat cara memasang Docker.

FAQ

Mengapa pakai systemd daripada sekadar menjalankan aplikasi di latar belakang?

Proses latar belakang (dengan & atau nohup) mati saat reboot, tidak kembali jika crash, dan menyebar lognya. Layanan systemd mulai otomatis saat boot, mulai ulang saat gagal, dan mengirim keluarannya ke journalctl. Inilah cara standar dan andal menjalankan sesuatu yang berumur panjang di Linux.

Di mana berkas unit ditaruh?

Layanan Anda sendiri ditaruh di /etc/systemd/system/, satu berkas per layanan, dinamai sesuatu.service. Setelah membuat atau menyunting satu, jalankan 'systemctl daemon-reload' agar systemd menangkap perubahan, lalu aktifkan dan mulai.

Apa fungsi 'Restart=always', dan adakah kelemahannya?

Ia memberitahu systemd untuk memulai ulang layanan setiap kali keluar, karena alasan apa pun — kunci untuk membuat sesuatu tetap berjalan. Satu-satunya jebakan adalah loop crash: jika aplikasi gagal seketika saat mulai, systemd terus memulainya ulang. Tambahkan 'RestartSec=5' untuk merenggangkan percobaan, dan periksa log untuk memperbaiki kesalahan mendasar.

Bagaimana saya melihat log layanan?

Gunakan 'journalctl -u yourservice -f' untuk mengikuti keluaran langsung, atau tanpa -f untuk membaca riwayat. systemd menangkap stdout dan stderr otomatis, jadi Anda tak perlu memasang berkas log sendiri.

Apakah layanan harus berjalan sebagai root?

Sebaiknya tidak. Buat pengguna khusus non-root dan atur 'User=' di unit, agar aplikasi yang dibobol tidak menyerahkan seluruh mesin. Jalankan sebagai root hanya bila layanan benar-benar membutuhkannya.

Komentar

Belum ada komentar. Jadilah yang pertama.

Tinggalkan komentar

Komentar dimoderasi sebelum muncul.