Есть ли способ перезапустить сервер узла во время выполнения? - PullRequest
0 голосов
/ 26 мая 2018

Я пытаюсь определить конечную точку на моем экспресс-сервере, чтобы при каждом вызове этой конечной точки сервер автоматически перезагружался во время выполнения.например, при использовании Express мой сервер будет выглядеть примерно так ...

var express = require('express')
var app = express();

app.post('/restart', (req,res)=>{
//restart or create a new instance of the server

// then reply
res.json({
    'message': 'server restarted successfully'
   })
})

// =======================
// start the server ======
// =======================
var port = process.env.PORT || 8000; 

app.listen(port);
console.log('server running at  http://localhost:' + port);

ПРИМЕЧАНИЕ : хотя я использую expressJS, я открыт для других решений, таких как, например, HAPI.

Заранее спасибо

Ответы [ 3 ]

0 голосов
/ 26 мая 2018

Вам потребуется модуль npm forever для глобальной установки в вашей системе и Shelljs в качестве зависимости.Сначала запустите ваш сервер как forever start {Path to server.js}.Затем вы можете сделать

var express = require('express')
var shell = require('shelljs')
var app = express();

app.post('/restart', (req,res)=>{
//restart or create a new instance of the server
shell.exec('forever restart {Path to server.js}');

// then reply
res.json({
    'message': 'server restarted successfully'
   })
})

// =======================
// start the server ======
// =======================
var port = process.env.PORT || 8000; 

app.listen(port);
console.log('server running at  http://localhost:' + port);

Также убедитесь, что вы не получите ответ, так как сервер перезагрузился бы.Вы просто получите отказ в соединении.

0 голосов
/ 26 мая 2018

Вы можете использовать PM2 для запуска, остановки сервера с помощью простых команд.

Запуск приложения в рабочем режиме так же прост:

pm2 start app.js

Стопвсе приложения

pm2 stop all

Перезапустите все приложения

pm2 restart all

Надеюсь, это сработает для вас.

HTH Спасибо!

0 голосов
/ 26 мая 2018

Единственный способ, которым я знаю, как перезапустить экземпляр узла, - это уровень CLI через npm forever или pm2, но это для уровня развертывания xP.

...