Skip to Content
๐Ÿ“ Notes๐Ÿ’ป DeploymentLinuxMiscpm2

[Manager] pm2

Install

npm
npm install pm2 -g

Basic Command

$ pm2 start app.js $ pm2 start --name my_app app.js # Giving a name for it $ pm2 list $ pm2 stop <app_name|namespace|id|'all'|json_conf> $ pm2 restart <app_name|namespace|id|'all'|json_conf> $ pm2 delete <app_name|namespace|id|'all'|json_conf> # Zero Downtime Reload $ pm2 reload all # Show logs $ pm2 logs <app_name|namespace|id|'all'|json_conf> # Show more lines $ pm2 logs <app_name|namespace|id|'all'|json_conf> --lines 30

More Command

# Terminal Based Dashboard $ pm2 monit # Open a Cluster Mode, named "my_server" with 5 nodes $ pm2 start dist/server.js --name my_server -i 5 # Scales `my_server` up by 3 workers $ pm2 scale my_server +3 # Scales `my_server` up or down to 2 workers total $ pm2 scale my_server 2

With Ecosystem File

PM2 also support using config.json / config.js to active the script.

ecosystem.json
{ "apps": [ { "name": "services-name", "script": "./server.js", "exec_mode": "fork", "env": { "NODE_ENV": "production" }, "time": true, "interpreter": "node@20.18.0", } ] }

And control with

# Start all applications pm2 start ecosystem.json # Stop all pm2 stop ecosystem.json # Restart all pm2 restart ecosystem.json # Reload all pm2 reload ecosystem.json

You may also active multi appications at onces

ecosystem.json
{ "apps": [ { "name": "services-name-one", "script": "./frontend/server.js", "exec_mode": "fork", "env": { "NODE_ENV": "production" }, "time": true, "interpreter": "node@22.0.0", }, { "name": "services-name-two", "script": "./backend/server.js", "exec_mode": "fork", "env": { "NODE_ENV": "production" }, "time": true, "interpreter": "node@20.18.0", }, { "name": "services-name-three", "script": "./scrapper/server.js", "instances" : "4", "exec_mode" : "cluster", "time": true, "interpreter": "node@18.1.0", } ] }

More Usage ON:
https://pm2.keymetrics.io/docs/usage/application-declaration/ย 

Last updated on