On a service like Heroku, the platform manages the task of bringing your server process up. But on, say a Linux distro on the DO box, you have to manually do
npm run server
to be able to run the server.
While that is all good, it is a foreground shell process, which means, you will lose the node server, when you log out (or your internet connection into the ssh breaks).
So we need to be able to keep the process running in the background.
The way we do it in bash on Unix, is that we can do either of the following
npm run server&
The “&” at the end means it will make a background fork of this task. Or if you’ve already started it without it, you can also do the following.
npm run server # starts in foreground #Press Ctrl + Z, this pauses task and frees the shell bg 1 # sends task no 1 to background thread.
Again, both these are hacky methods, will work only on Unix OSs, and are not really recommended for production.
For production, we need a Process Manager, for Node.js the best we can get is pm2 – purpose built process manager for node.
Install pm2 first
sudo npm install -g pm2
Using pm2, we can start any process that can be started with node. We can start the app.js script like this
pm2 start src/app.js
Also, pm2 can run npm tasks too like
pm2 start npm -- start
Pm2 has a pretty status message display window. And we can start, stop, pause, kill and/or restart any process.