Cara Install NodeJS di Almalinux 8 Menggunakan Package Manager.
Agar bisa membuat website dan aplikasi bebasis javascript perlu install NodeJS agar bisa mengeksekusi javascript di server. Dengan adanya NodeJS developer website dan aplikasi bisa menggunakan npm sebuah package manager untuk library yang akan digunakan javascript kalian.
Prasyarat Instalasi.
- AlmaLinux atau RockyLinux versi 8
Install NodeJS melalui dnf package manager.
Pertama update sistem dengan perintah berikut ini.
# dnf update
Check module versi NodeJS yang tersedia di repository Appstream.
# dnf module list nodejs
Last metadata expiration check: 0:03:01 ago on Tue 15 Aug 2023 06:01:35 AM EDT.
AlmaLinux 8 - AppStream
Name Stream Profiles Summary
nodejs 10 [d] common [d], development, minimal, s2i Javascript runtime
nodejs 12 common [d], development, minimal, s2i Javascript runtime
nodejs 14 common [d], development, minimal, s2i Javascript runtime
nodejs 16 common [d], development, minimal, s2i Javascript runtime
nodejs 18 common [d], development, minimal, s2i Javascript runtime
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
Pilih versi NodeJS yang ingin di install.
Dalam contoh menggunakan versi NodeJS 18, gunakan perintah berikut ini untuk enable versi 18
# dnf module enable nodejs:18 -y
Last metadata expiration check: 0:03:12 ago on Tue 15 Aug 2023 06:01:35 AM EDT.
Dependencies resolved.
================================================================================
Package Architecture Version Repository Size
================================================================================
Enabling module streams:
nodejs 18
Transaction Summary
================================================================================
Complete!
Setelah itu install NodeJS.
# dnf install nodejs

Setelah slesai check kembali hasil instalasi untum memastikan.
# node -v
[root@alma8 ~]# node -v
v18.16.1
Sampai Di sini instalasi sudah selelsai bisa ke tahap selanjutnya.
Alternatif Instalasi melalui repository nodesource
Alternatif Instalasi adalah melakukan instalasi melalui repository khusus nodejs seperti nodesource
# curl -fsSL https://rpm.nodesource.com/setup_20.x | bash -
setelah proses penambahan repostiru selesai,
# dnf makecache
Untuk instalasinya harus diharuskan menghapus terlebih dahulu nodejs sebelumnya jika terinstall baru install melalui dnf secara normal.
//menghapus nodejs sebelum instalasi jika ada
# dnf remove nodejs
//instalasi nodejs 20 melalui repost nodesource
# dnf install nodejs -y

check hasil instalasi
# node -v
[root@alma8 ~]# node -v
v20.5.1
Sampai disini instalasi NodeJS 20 melalui repository nodesource sudah selesai.
Running NodeJS
Untuk menjalankan aplikasi NodeJS pertama buat file helloword.js dilokasi direktori /home/hello.
Buat direktori dengan perintah dibawah ini
# mkdir /home/hello && chmod 777 /home/hello
# cd /home/hello
Gunakan editor teks seperti vi
untuk membuat file dan isikan dengan script code dibawah ini
# vi helloword.js
const http = require('http');
const hostname = '0.0.0.0';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World! Node.JS is working Perfectly!');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
Port yang digunakan adalah 3000.
Untuk menjalankan atau running diperlukan minimal tools berikra gcc-c++ dan make jika belum tersedia install dengan perintah dibawah ini.
# dnf install gcc-c++ make -y
//atau jika ingin paket full
# yum groupinstall 'Development Tools'
Open port 3000 menggunakan firewalld, ikuti pperintah dibawah ini.
# firewall-cmd --zone=public --add-port=3000/tcp --permanent
# firewall-cmd --reload
Jalankkan atau Running aplikasi helloworld.js dengan perintah dibawah ini.
# node helloworld.js

Tampilan gambar diatas adalah tanda aplikasi sedang running, untuk stop nya bisa meggunakan CTRL + C. Tapi jangan di stop terlebih dahulu sampai melihat hasilnya.
Untuk melihat hasilnya bisa melalui browser akses http://IP_Address:3000

Tampilan diatas menandakan NodeJS berhasil dijalankan. Sampai disini sudah siap digunakan
Install PM2 untuk management NodeJS dan startup systemd
Untuk manajemen aplikasi NodeJS agar siap dijalankan dibackground dengan mudah ada tools bernama PM2.
Instalais PM2 dilakukan melalui npm yang didapatkan ketika instalasi NodeJS.
# npm install -g pm2
Membuat file config ecosystem, file yang digunakan oleh pm2 berisi path lokasi aplikasi.
# vi /home/hello/ecosystem.config.js
Isikan dengan contoh konfigurais berikut.
# module.exports = {
apps : [{
name : "Helloworld",
script : "/home/hello/helloworld.js"
}]
}
Lalu coba start pm2 menggunakan file ecosystem.
# pm2 start /home//hello/ecosystem.config.js

Sampai disini pm2 sudah bisa dijalankan dan aplikasi NodeJS sudah berjalan di background, kalian juga bisa melihat hasilnya dengan mengakses browser seperti contoh sebelumnya.
Demi keamanan ada baiknya pm2 ini dijalankan ada dinisialiasi systemd sebagai user non root. Pada contoh dibawah ini menggunakan user hello dengan path direktori /home/hello
# useradd hello
# passwd hello
# usermod -a -G wheel hello
Berlih ke user hello
# su hello
jalankan
$ pm2 startup

untuk menonaktfikan startup systemd bisa gunakan perintah
# pm2 unstartup systemd
# pm2 unstartup
Jalankan perintah setup enviroment yang diberikan.
$ sudo env PATH=$PATH:/usr/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup systemd -u hello --hp /home/hello

Lanjutkan dengan start ecosystem terlebih dahulu.
$ pm2 start /home/hello/ecosystem.config.js

Lalu save, hal ini pernting karena nantinya ketika reboot pm2 akan menjalankan proses list yang di save oleh pm2.
$ pm2 save

lalu reboot system. Ketika login jika di check pm2 sudah berjalan dengan user hello seperti gambar dibawah.

Dengan begini pm2 sudah lebih aman ketika berjalan sebagai user non root.
Kata Penutup
Dengan mengiktui langkah demi langkah artikel ini diharapkan kalian bisa melakukan instalasi NodeJS di OS almalinux 8 atau RockyLinux 8. Jika ada yang kurang dipahami silahkan ditanyakan dikolom komentar. Admin akan mencoba membantu sebisa mungkin.