Hai semuanya, apa kabar? Kali ini kita akan coba untuk menjalankan aplikasi sebagai service di Linux menggunakan systemd
.
Apa bedanya dengan menjalankan aplikasi biasa?
Apabila kita menjalankan aplikasi seperti biasa (misalnya dengan menggunakan npm start
), artinya aplikasi akan berhenti ketika terminal berhenti atau sistem Linux dimatikan/restart.
Dengan menggunakan systemd
, kita bisa menjalankan aplikasi seperti service yang ada pada Linux. Jadi kita bisa mengatur aplikasi tersebut agar bisa langsung berjalan setelah sistem booting, bisa restart otomatis saat crash, dan juga log-nya tercatat pada journalctl
.
Persiapan
Pada pengujian kali ini menggunakan RHEL. Pertama, kita akan instal node.js
terlebih dahulu. Kita akan mencoba untuk membuat aplikasi node.js
sederhana.
sudo dnf install -y nodejs git
Lalu, kita siapkan juga direktorinya.
mkdir -p ~/myapp && cd ~/myapp
Pembuatan Aplikasi Node.js Sederhana
Kita tidak membuat aplikasinya dari nol. Kita akan clone repositori Pak Ricardo (instruktur Red Hat) dari GitLab. Aplikasi ini akan menampilkan gambar stock dari Red Hat. Pastikan juga saat clone menggunakan user biasa/non-root karena systemd
nantinya akan dijalankan dengan hak akses user ini.
git clone https://gitlab.com/rgdacosta/nodejs_rhel10
cd nodejs_rhel10
Selanjutnya kita perlu jalankan perintah npm install
untuk mengunduh dan memasang semua dependencies yang dibutuhkan oleh project node.js
-nya. Hal ini memastikan aplikasi akan memiliki semua komponen yang dibutuhkan.
Konfigurasi SystemD
Kita akan membuat unit file systemd
yang akan memberi tahu sistem RHEL untuk menjalankan, monitor, dan mengelola aplikasi.
Buat Unit File
Buat file konfigurasi baru pada direktori /etc/systemd/system
.
sudo nano /etc/systemd/system/my-app.service
Kita masukkan konfigurasi berikut. Pastikan untuk menyesuaikan username & direktori yang digunakan.
Aktivasi Service
Selanjutnya, kita perlu memuat ulang systemd
dan mengaktifkan aplikasi tersebut.
sudo systemctl daemon-reload
$ sudo systemctl enable --now my-app
Created symlink '/etc/systemd/system/multi-user.target.wants/my-app.service' → '/etc/systemd/system/my-app.service'.
Kita bisa gunakan perintah systemctl status --now my-app
untuk melihat status dari aplikasi (yang kini menjadi seperti service).
Konfigurasi Firewall
Konfigurasi firewall perlu dilakukan agar lalu lintas data dapat melewati port yang digunakan (dalam hal ini 8080
).
Untuk menambahkan port 8080
secara permanen, gunakan perintah:
sudo firewall-cmd --add-port=8080/tcp --permanent
Terapkan perubahan:
sudo firewall-cmd --reload
Catatan: untuk penggunaan di lingkungan production, selalu pertimbangkan untuk membatasi akses pada port yang digunakan.
Pengujian di Web Browser
Kita coba buka web browser dan kunjungi http://localhost:8080
. Apabila berhasil. kita akan dapat melihat stock image dari Red Hat.
Pengujian berhasil. Menampilkan gambar stock dari Red Hat.
Untuk tulisan kali ini sampai di sini dulu ya. Sampai jumpa. Bye.