PM2 is a production process manager for Node.js applications with a built-in load balancer. It allows you to keep applications alive forever, to reload them without downtime and to facilitate common system admin tasks.
Install:
$ npm install pm2 -g
Before Start:
PM2 can generate and configure a startup script to keep PM2 and your processes alive at every server restart.
$ pm2 startup # auto-detect platform $ pm2 startup [platform] # render startup-script for a specific platform, the [platform] could be one of: # ubuntu|centos|redhat|gentoo|systemd|darwin|amazon
Start:
$ pm2 start bin/www /* meds example */
This has the same effect as:
$ node bin/www
run the app, but on windows, it just keep it run once, once you refresh the page, the app die. [PROBLEM]
If it works as expected, when you kill the process:
kill -9 <pid>
The pm2 will detect that our app is crashed, so it will start a new pid to run the app.
[Notice:] On Linux, PM2 will grap the root, run as root, but in genral, we don't want to use root. So we usually create a user to use PM2.
pm2 startup on liunx:
Change the user:
test script:
More information:
https://egghead.io/lessons/node-js-using-pm2-to-keep-your-node-apps-alive