Использование NSSM для запуска процесса NodeJs в качестве службы Windows не работает

Я видел множество статей о том, как использовать NSSM (http://nssm.cc/), чтобы запустить процесс NodeJS.

Итак, у меня есть следующий простой файл NodeJS:

var http = require('http');
http.createServer(function (req, res) {
    res.writeHead(200, { 'Content-Type': 'text/html' });
    res.end('<p>Hello World</p>');
}).listen(8000);

console.log('Server running on http://localhost:8000/');

Я использую эту команду для установки файла NodeJS в качестве службы Windows:

"C:\Program Files\SimpleNode\nssm.exe" установить SimpleNode "C:\Program Files\SimpleNode\ node.exe" "C:\Program Files\SimpleNode\simple.js"

Служба установлена. Когда я начинаю, я получаю сообщение об ошибке, службы находятся в состоянии Paused, и я вижу следующую ошибку в средстве просмотра событий:

Ошибка GetProcessTimes(): дескриптор недействителен.

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

БОЛЬШЕ ПРИМЕЧАНИЙ: Это выполняется на 64-битном сервере Windows 2008 R2. Я убедился, что я запускаю все 64-разрядные исполняемые файлы для NSSM и Node. Я также попытался использовать 32-разрядные исполняемые файлы для обоих.

Может ли кто-нибудь сказать мне, что мне не хватает? Может ли кто-то еще повторить эту проблему?

Ответ 1

Обнаружена проблема.

Проблема в том, что путь к файлу simple.js имеет место в нем ( "Хорошие старые" программные файлы). Вы должны избегать кавычек с обратной косой чертой для NSSM, чтобы правильно ее интерпретировать. Правильная строка командной строки установки:

"C:\Program Files\SimpleNode\nssm.exe" установить SimpleNode "C:\Program Files\SimpleNode\ node.exe" \ "C:\Program Files\SimpleNode\simple.js \"

Ответ 2

Похоже, что у вас нет доступа к портам по какой-то причине. попробуйте настроить службу для запуска в качестве администратора (диспетчер серверa > Службы > Servicename на сервере Windows Server 2008) и посмотреть, что произойдет.

Ответ 3

NSSM обычно отлично работает с Node.js, поэтому это, вероятно, проблема с правами доступа. Просмотрите этот учебник, показывающий, как настроить Node.js с нашим коммерческим приложением для устранения неполадок. И не стесняйтесь использовать 30-дневную пробную версию, так как она может вернуть более полезное сообщение об ошибке, указывающее на то, что проблема.