pm2 Startup Script

Jadi begini caranya, clone reponya

  git clone blablabla
  cd blablabla

install dependency, dan build (sesuaikan dengan kebutuhan project)

  npm install
  npm run build

install juga pm2 secara global

  npm install -g pm2

jalankan aplikasinya dengan pm2

  pm2 status
  pm2 start npm --name "apps-web" -- run start

simpan state pm2 yang telah berjalan, akan tersimpan sebagai ~/.pm2/dump.pm2

  pm2 save

Intip perintah untuk membuat start-up script

  pm2 startup 

pindah ke user yang punya akses sudo, lalu salin-tempel dan eksekusi perintah yang muncul dari perintah pm2 startup tadi, seperti ini misalnya

  sudo env PATH=$PATH:/home/apps/.nvm/versions/node/v12.11.0/bin /home/apps/.nvm/versions/node/v12.11.0/lib/node_modules/pm2/bin/pm2 startup systemd -u apps --hp /home/apps

sunting berkas yang telah digenerate oleh perintah sebelumnya

  sudo vim /etc/systemd/system/multi-user.target.wants/pm2-apps.service

tambahkan beberapa baris berikut

  Wants=network-online.target
  After=network.target network-online.target

tambahkan komentar pada bagian ini

  # PIDFile=/home/apps/.pm2/pm2.pid

tambahkan bagian ini juga di baris paling akhir

  [Install]
  WantedBy=multi-user.target network-online.target

jalankan perintah-perintah berikut untuk mereload systemd, mengaktifkan service pm2-apps, menjalankannya dan melihat statusnya

  sudo systemctl daemon-reload
  sudo systemctl enable pm2-apps
  sudo systemctl start pm2-apps
  sudo systemctl status pm2-apps

lalu lihat hasilnya

samsul@apps-web:~$ systemctl status pm2-apps
● pm2-apps.service - PM2 process manager
   Loaded: loaded (/etc/systemd/system/pm2-apps.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since Mon 2019-12-09 03:30:07 UTC; 1s ago
     Docs: https://pm2.keymetrics.io/
  Process: 27871 ExecStop=/home/apps/.nvm/versions/node/v12.11.0/lib/node_modules/pm2/bin/pm2 kill (code=exited, status=0/SUCCESS)
  Process: 27848 ExecStart=/home/apps/.nvm/versions/node/v12.11.0/lib/node_modules/pm2/bin/pm2 resurrect (code=exited, status=0/SUCCESS)

Dec 09 03:30:06 apps-web pm2[27848]: │ id  │ name       │ namespace   │ version │ mode    │ pid      │ uptime │ ↺    │ status    │ cpu      │ mem      │ user     │ watc
Dec 09 03:30:06 apps-web pm2[27848]: ├─────┼────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼─────
Dec 09 03:30:06 apps-web pm2[27848]: │ 0   │ apps-web  │ default     │ 0.35.1  │ fork    │ 26783    │ 16m    │ 0    │ online    │ 0%       │ 40.9mb   │ apps    │ disa
Dec 09 03:30:06 apps-web pm2[27848]: └─────┴────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴─────
Dec 09 03:30:07 apps-web pm2[27871]: [PM2] [v] Modules Stopped
Dec 09 03:30:07 apps-web pm2[27871]: [PM2] Applying action deleteProcessId on app [all](ids: [ 0 ])
Dec 09 03:30:07 apps-web pm2[27871]: [PM2] [apps-web](0) ✓
Dec 09 03:30:07 apps-web pm2[27871]: [PM2] [v] All Applications Stopped
Dec 09 03:30:07 apps-web pm2[27871]: [PM2] [v] PM2 Daemon Stopped
Dec 09 03:30:07 apps-web systemd[1]: Started PM2 process manager.

tadaaa…. aplikasi sekarang sudah bisa jalan pada saat server dinyalakan ulang, pada catatan ini dicontohkan kalau startup scriptnya menggunakan systemd. Jika server aplikasi teman-teman menggunakan start-up script lain juga bisa kok, ketik aja pm2 startup akan muncul perintah yang sesuai. Untuk lebih jelasnya silakan merujuk pada dokumentasi resminya seperti yang tercantum pada bagian referensi.

Referensi

  • linux/pm2.Startup.Script
  • Terakhir diubah: 5 bulan yang lalu
  • (Perubahan eksternal)