Reputation: 357
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
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
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
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