Introduction

Kali ini kita akan membahas sebuah package process manager yang dimana khusus untuk managering project node.js. Dan di artikel apa itu PM2 ? akan saya jelaskan tentang ada banyak process manager, ataupun package yang bisa kita gunakan hanya untuk sekedar membuat project node.js kita berjalanan keep-alive contohnya systemd, forever, nodemon, node-supervisor. dan dari semua pilihan tersebut memiliki fungsi yang serupa tapi saya merekomendasikan untuk menggunakan PM2, sehingga artikel kita kali ini akan membahas tentang PM2.
Kenapa saya memilih dan merekomendasikan PM2? karena saat ini module PM2 menjadi process manager terpopuler untuk aplikasi node.js, memiliki built-in clusters, load-balancing dan auto-restart support.

Prepare

Sebelum mengikuti tutorial ini, Anda wajib mencari tutorial cara instalasi Node.js dan NPM terlebih dahulu. Node.js sendiri digunakan untuk menjalankan script Node.js, sedangkan NPM adalah sebuah package manager yang akan membantu kita memasang library tambahan Node.js. Bila kita mengetahui Composer di PHP atau PIP di Python, NPM tidak jauh berbeda. Kemudian yang kita butuhkan lagi adalah koneksi internet, karena NPM membutuhkan koneksi internet untuk mengambil library yang kita butuhkan. Di demo ini kita akan membutuhkan Express.js dan PM2 itu sendiri.

Apa itu PM2 ?

Step 1 – Install PM2

  • Install PM2 , yang saya gunakan metode global
$ sudo npm install pm2 -g
  • Check status pm2 jika sudah di install
$ sudo pm2

Step 2 – Create file js

  • Create file directory atau folder (untuk bahan belajar supaya terkumpul menjadi satu)
$ sudo mkdir gunawancicd
$ cd gunawancicd
  • Kemudian Create file js : index.js
$ sudo nano index.js
  • Dan kita akan mengabil file sederhana dari dokumentasi resminya nodeJS
const http = require('http');

const hostname = '202.173.70.99';
const port = 3000;

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

NB : untuk hostname dan port kita bisa custom , karena disini saya menggunakan IP public server maka saya isi dengan IP Public si server dan berjalan di port 3000.

  • Kemudian jalankan nodejs kalian pada file tersebut
$sudo node index.js
Server running at http://202.173.70.99:3000/
  • Dan check dibrowser menggunaak url http://202.173.70.99:3000

NB : nah jika kita matikan proses tersebut maka web server pun tidak akan berjalan, karena nodejs tidak bisa running di background ata berjalan di belakang layar, maka dari itu fungsi dari PM2 sendiri adalah untuk merunningkan project nodeJS kita supaya bisa berjalan di background.

Step 3 – Running program with PM2

  • Kita akan coba running menggunakan PM2
$ sudo pm2 start index.js

  • Dan kita bisa menggunakan Basic command lainya di PM2 , berikut adalah beberapa command yang sering digunakan :
    • Start running aplikasi:
$ pm2 start
  • Restart aplikasi yang sudah running sebelumnya:
$ pm2 restart
  • Stop aplikasi:
$pm2 stop
  • Restart aplikasi yang telah di matikan:
$pm2 restart
  • Menghapus aplikasi dari proses list:
$ pm2 delete
  • Mematikan daemon pm2:
$pm2 kill
  • Monitoring pm2 ” pm2 monit “
  • Melihat beberapa command PM2 yang wajib kita coba :
# Fork mode
$ pm2 start app.js --name my-api # Name process

# Cluster mode
$ pm2 start app.js -i 0        # Will start maximum processes with LB depending on available CPUs
$ pm2 start app.js -i max      # Same as above, but deprecated yet.

# Listing

$ pm2 list               # Display all processes status
$ pm2 jlist              # Print process list in raw JSON
$ pm2 prettylist         # Print process list in beautified JSON

$ pm2 describe 0         # Display all informations about a specific process

$ pm2 monit              # Monitor all processes

# Logs

$ pm2 logs [--raw]       # Display all processes logs in streaming
$ pm2 flush              # Empty all log file
$ pm2 reloadLogs         # Reload all logs

# Actions

$ pm2 stop all           # Stop all processes
$ pm2 restart all        # Restart all processes

$ pm2 reload all         # Will 0s downtime reload (for NETWORKED apps)
$ pm2 gracefulReload all # Send exit message then reload (for networked apps)

$ pm2 stop 0             # Stop specific process id
$ pm2 restart 0          # Restart specific process id

$ pm2 delete 0           # Will remove process from pm2 list
$ pm2 delete all         # Will remove all processes from pm2 list

# Misc

$ pm2 reset     # Reset meta data (restarted time...)
$ pm2 updatePM2          # Update in memory pm2
$ pm2 ping               # Ensure pm2 daemon has been launched
$ pm2 sendSignal SIGUSR2 my-app # Send system signal to script
$ pm2 start app.js --no-daemon
$ pm2 start app.js --no-vizion
$ pm2 start app.js --no-autorestart

Untuk command lebih lanjut dan lebih lengkap bisa kita pelajari di dokumen PM2.

Step 4 – Ecosystem File

  • Di generate terlebih dahulu
$ pm2 ecosystem
  • Ecosystem File sendiri adalah cara untuk merunning project nodejs kita tapi menggunakan struktur command yang diatur sedemikian rupa didalam file ecosystem.config.js
  • isikan command sebagai berikut :
module.exports = {
  apps : [{
    name: "gunawancicd",
    script: "./index.js",
    exec_mode: "cluster",
    watch: true,
    ignore_watch: ['node_modules'],
    instances: "2"
  }]
};
  • Jalankan file tsb
$ pm2 start ecosystem.config.js

Output

Selamat mencoba

Leave a Reply

Your email address will not be published. Required fields are marked *