Сам себя за волосы не вытащишь. Тут помощники нужны. В помощники я взял nodemon и Apache/PHP, которые уже стоят на сервере.
Решение задачи:
Создаем HTML-форму, которая POST-запросом отправляет на сервер содержимое input-поля с именем "s". Форма вызывает PHP-скрипт startstop.php
Данный скрипт принимает числовой параметр s и сохраняет его в файл startstop.js в тот же каталог, где лежит server.js
Nodemon, как известно, засекает изменение файла startstop.js в каталоге и перегружает server.js
упрощенный код startstop.php:
<?
if (!isset($_POST['s'])) exit;
$s = trim(substr($_POST['s'],0,10));
settype($s,"integer");
file_put_contents('путь_к_каталогу_сервера/startstop.js', $s);
echo $s."\n";
?>
начало кода в server.js
var command = fs.readFileSync('startstop.js');
if (command == 1)
{
var s = 'server stopped ' + "\n";
fs.appendFileSync('имя_лог_файла',s);
return; // завершение работы сервера
}
else
{
// действия при старте server.js
var absd = command;
};
Примечания:
1. в HTML-форме есть еще поле password, которое опущено в данном примере
2. файл startstop.js сначала хотел назвать startstop.txt, но nodemon на него не реагирует, несмотря на то, что в настройках значится watching:*.* (пока не понял почему)
3. для автора этого поста: HTML-форму можно сделать на PHP, добавить в неё чтение файла server.js и отправку в браузер в поле TEXTAREA. Соответственно, после внесения изменений, отправить POST-запросом на сервер, где скрипт startstop.php сначала сохранит новый файл server.js, что перезапустит Node.js-сервер с новым кодом.