user2900890
user2900890

Reputation: 357

Restart Node.js server programmatically

How to restart Node.js server from code? For example, if using expressjs framework,

app.get('/restart', function (req, res, next) {
//Code to restart a server
})

I want to restart server from app like this, without going to console etc. How to do it?

Upvotes: 24

Views: 21145

Answers (3)

Venryx
Venryx

Reputation: 18079

You can mark a child-process as detached which I believe makes it survive past the parent's destruction. So if you use that, with a "sleep" command at the start of the command (in case concurrent running is an issue), it should work.

So presumably something like this (untested):

const newProcessInstance = spawn(process.argv[0], process.argv.slice(1), {
  detached: true,
  stdio: 'ignore', // not sure if this is needed
});

Upvotes: 1

ElJay
ElJay

Reputation: 367

By combining npm restart and child_process.exec() it appears possible to restart the server programmatically. And since it allows for several scripts to be run for stopping, restarting, and starting this option would work even for multi-process servers or otherwise complex servers where simply calling process.exit() isn't viable.

Upvotes: 1

germanlinux
germanlinux

Reputation: 2511

I use forever in order to start and monitoring application. So the restart function like this:

app.get('/restart', function (req, res, next) {
  process.exit(1);
});

After the shutdown of server, forever will restart service.

console:

Express server listening on port 3000 in development mode
error: Forever detected script exited with code: 1
error: Forever restarting script for 2 time
Express server listening on port 3000 in development mode

Upvotes: 29

Related Questions