====== Menjalankan Project Node.js menggunakan PM2 ======
===== Install Node.js =====
Sebelumnya pastikan nodejs sudah terinstall. Lihat laman [[:nodejs:nodejs_di_debian_dan_ubuntu|instalasi]] nodejs.
===== Menyiapkan directory dari project =====
Sebelum menjalankan program, siapkan directory terlebih dahulu. Directory /opt pada linux digunakan untuk meletakkan program 3rd party agar tidak mengganggu program internal dari sistem linux
==== Pindah ke directory /opt ====
cd /opt
==== Buat directory baru bernama projects ====
sudo mkdir projects
===== Menyiapkan permission dari project =====
Agar sistem linux anda aman, maka program akan dijalankan sebagai user biasa, bukan sebagai user root. Untuk itu perlu disiapkan permission dari project tersebut. Pada contoh kasus ini, kami menggunakan group projects sebagai group yang akan menjalankan program.
==== Buat group baru ====
sudo addgroup projects
==== Jadikan directory /opt/projects menjadi milik group projects ====
sudo chgrp projects /opt/projects
==== Tambahkan user saat ini kepada group projects ====
Pada kasus ini username yang akan menjalankan project adalah
saya . Perintah berikut ini menggunakan parameter -aG (huruf a kecil dan G kapital) yang berarti
* a: menambahkan user ke group tertentu,
* G: menambahkan tanpa menghapus user dari group yang sudah ada.
sudo usermod -aG projects saya
===== Menginisiasi project =====
==== Masuk ke directory projects ====
cd /opt/projects
==== Inisiasi sebuah project nest ====
Pada kasus ini kami membuat sebuah project bernama [[https://patra.smartsystem.id|PATRA]], dengan bahasa Javascript (bukan Typescript), menggunakan framework [[https://nestjs.com|Nestjs]]. Perintah ini akan secara otomatis membuatkan sebuah directory di dalam directory saat ini (''/opt/projects/'').
sudo nest new patra –language=js
==== Ubah kepemilikan directory patra ke group projects ====
Agar user yang tergabung dalam group
projects dapat melakukan aktivitas di dalam directory, maka kepemilikannya perlu diubah menjadi group
projects .
sudo chgrp -R projects /opt/projects/patra
===== Menjalankan project =====
==== Ujicoba menjalankan project sebagai user biasa ====
Untuk menguji apakah program dapat berjalan, biasanya dicoba dengan menggunakan perintah
node app.js
atau jika menggunakan framework seperti diatas dapat juga dijalankan dengan perintah
npm run start
Untuk menghentikan program gunakan kombinasi tombol ** [ctrl]+[c] **
===== Menginstall, mengkonfigurasi dan menggunakan PM2 =====
==== Menginstall pm2 secara global ====
PM2 adalah sebuah service yang akan menjalankan program nodejs dan memantau program tersebut serta merestartnya jika dibutuhkan. Untuk menginstall PM2 secara global gunakan perintah berikut
sudo npm install -g pm2
==== Menjalankan program dengan pm2 sebagai user biasa ====
Untuk menambahkan program ke PM2, gunakan perintah
pm2 start node /opt/projects/patra/index.js –name patra
Untuk melihat proses yang sedang berjalan dapat menggunakan perintah
pm2 list
==== Menjadikan agar PM2 langsung berjalan saat boot ====
Agar PM2 dapat langsung berjalan saat server boot, gunakan perintah
pm2 startup
Perintah tersebut akan memunculkan perintah yang akan dijalankan sebagai user root. Copy perintah yang muncul pada tahapan diatas dan jalankan.
sudo env PATH=$PATH:/usr/local/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup systemd -u saya –hp /home/saya
Perintah ini membuat sebuah service baru atas nama user biasa, yaitu user
saya
Kita dapat menyimpan daftar proses saat ini, agar ikut berjalan saat server boot
pm2 save
Jika ingin mencoba, mematikan semua proses
pm2 stop all
Jika ingin mematikan salah satu proses saja, gunakan id dari proses tersebut
pm2 stop 2
Menghidupkan service tertentu, gunakan id proses tersebut, misalnya 2
pm2 start 2
Setelah konfigurasi pm2 selesai, restart server
sudo reboot