Node.js server can be run by simply pointing it to a file that we want it to run, e.g:
node file.js
Or you can also use npm to run your file if you have defined the start procedure in your package.json file.
npm start
However, as soon as you close the terminal, the server stops. Is there a way to keep the server alive? Yes there is.
How to keep nodejs server alive after closing terminal
There is a simple tool called pm2 for this purpose. It has very simple and minimal commands to manage the nodejs server processes.
To use pm2, follow these steps.
Install PM2 on server by using command:
npm install pm2@latest -g
Once installed, use it to run the file instead of running it directly via node or npm. To do this, goto the same directory where you would go to launch the server using node or npm, and run this command instead:
pm2 start file.js
You can also give a custom name to the running process by using this command with –name flag like this:
pm2 start file.js --name="app name"
To start via npm start
:
pm2 start npm --name "app name" -- start
To view a lit of all running processes of pm2, use command:
pm2 ls
To stop and delete a processes running through pm2, use this command (just enter the name of process in name field, not the complete js file name like file.js):
pm2 delete file
# or to delete all:
pm2 delete all
Note that if you will run the stop command like following, it will not delete the process, rather simply stop it from running state:
pm2 stop file
# or
pm2 stop all
You can restart single or multiple apps running through pm2 like this too (also supports regular expression):
# restart single app using pm2
pm2 restart app1
# or restart multiple apps using pm2
pm2 restart app1 app2 app3
# or restart all apps matching regex pattern
pm2 restart /pattern/
You can also save and retrieve the saved pm2 process lists by using commands:
pm2 save
pm2 resurrect
Finally, to monitor pm2 and what is it doing on your server, run the command:
pm2 monit
This will show you insights about the pm2 running processes and their resource usage of your system including cpu usage, memory usage, loop delay and request per minute.
Note: pm2 can also run other programming languages including:
{
".sh": "bash",
".py": "python",
".rb": "ruby",
".coffee": "coffee",
".php": "php",
".pl": "perl",
".js": "node"
}
Let me know if you need help related to pm2 or nodejs server generally.