Узел автоматического запуска.сервер JS при загрузке


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

10 55

10 ответов:

это не то, чтобы настроить в узле.js вообще, это чисто ответственность ОС (Windows в вашем случае). Самый надежный способ добиться этого-через службу Windows.

вот это супер просто модуль, который устанавливает скрипт узла в качестве службы windows, он называется узел-windows (npm,github,документация). Я использовал раньше и работал как a обаяние.

var Service = require('node-windows').Service;

// Create a new service object
var svc = new Service({
  name:'Hello World',
  description: 'The nodejs.org example web server.',
  script: 'C:\path\to\helloworld.js'
});

// Listen for the "install" event, which indicates the
// process is available as a service.
svc.on('install',function(){
  svc.start();
});

svc.install();

п.з.

Я нашел вещь настолько полезной, что я построил еще более простую в использовании обертку вокруг нее (npm,github).

установка это:

npm install -g qckwinsvc

установка вашим услугам:

> qckwinsvc
prompt: Service name: [name for your service]
prompt: Service description: [description for it]
prompt: Node script path: [path of your node script]
Service installed

удаление службы:

> qckwinsvc --uninstall
prompt: Service name: [name of your service]
prompt: Node script path: [path of your node script]
Service stopped
Service uninstalled

если вы используете Linux* pm2 - твой друг. Это менеджер процессов, который очень хорошо обрабатывает кластеры.

вы установить его:

npm install -g pm2

запустите кластер, например, из 3 процессов:

 pm2 start app.js -i 3

и сделать pm2 запускает их при загрузке:

 pm2 startup

Он имеет API, даже a http-интерфейс:

AWESOME

перейти к github и читать - инструкции. Это простой в использовании и очень удобно. Лучшее, что когда-нибудь так навсегда.

*разработчики пробовали его в Ubuntu и CentOs, но я уже использовал в Debian без проблем. Вы можете проверить, если это действительно для вас это:

git clone https://github.com/Unitech/pm2.git
cd pm2
npm install  # Or do NODE_ENV=development npm install if some packages are missing
npm test

Если я не ошибаюсь, вы можете запустить приложение с помощью командной строки, а так же использование пакетного файла. В этом случае это не очень сложная задача, чтобы начать его с Windows login.

вы просто создаете пакетный файл со следующим содержимым:

node C:\myapp.js

и сохраните его .летучая мышь расширение. Вот мое приложение.js - это ваше приложение, которое в данном примере находится в C: drive (spcify The path).

теперь вы можете просто бросить пакетный файл в папку автозагрузки, которая является расположенный по адресу C:\Users\%username%\AppData\Roaming\Microsoft\Windows\Start меню\программы\запуск

просто откройте его с помощью %appdata% в поле run dailog и найдите в >роуминг > Microsoft>Windows>Меню Пуск>Программы>запуск

пакетный файл будет выполнен во время входа в систему и запустить приложение узла из cmd.

вы должны попробовать это

НПМ навсегда

https://www.npmjs.com/package/forever

Я бы рекомендовал установить ваш узел.приложение js как служба Windows, а затем установите службу для запуска при запуске. Это должно немного упростить управление действием запуска с помощью оснастки служб Windows, а не добавлять или удалять пакетные файлы в папке запуска.

еще один вопрос, связанный с сервисом в Stackoverflow, предоставил пару (в настоящее время) действительно хороших вариантов. Проверьте Как установить узел.js как служба Windows. узел-windows для меня это выглядит очень многообещающим. Кроме того, я использовал аналогичные инструменты для Java-приложений, которые должны были работать как службы. Это сделало мою жизнь намного легче. Надеюсь, это поможет.

вам не нужно ничего, кроме планировщика задач Windows. Просто создайте запланированную задачу для запуска и запустите ее независимо от того, вошел ли указанный пользователь в систему или нет. Эта задача должна вызвать пакетный файл, который содержит:

cd C:\project\root
call C:\Users\[COMPUTER_NAME]\AppData\Roaming\npm\forever.cmd start server.js
exit 0

вот еще одно решение Я написал в C# для автоматического запуска сервера собственного узла или сервера pm2 в Windows.

использовать pm2 для запуска и запуска процессов nodejs в windows.

обязательно прочитайте это обсуждение github о том, как настроить планировщик задач для запуска pm2:https://github.com/Unitech/pm2/issues/1079

Я знаю, что есть несколько способов достичь этого в соответствии с решениями, приведенными выше. Я не пробовал все из них, но некоторые сторонние службы не имеют ясности вокруг того, что все задачи выполняются в фоновом режиме. Я достиг этого с помощью сценария powershell, подобного тому, который упоминается как пакетный файл windows. Я запланировал его с помощью планировщика задач Windows для запуска каждую минуту. До сих пор это было достаточно эффективно и прозрачно. Преимущество у меня здесь заключается в том, что я проверяю процесс явно перед его повторным запуском. Это не вызовет больших накладных расходов на процессор на сервере. Также вам не нужно явно помещать файл в папки автозагрузки.

function CheckNodeService ()
{

$node = Get-Process node -ErrorAction SilentlyContinue

if($node)
{
    echo 'Node Running'
}
else
{
    echo 'Node not Running'
    Start-Process "C:\Program Files\nodejs\node.exe" -ArgumentList "app.js" -WorkingDirectory "E:\MyApplication"
    echo 'Node started'

}
}

CheckNodeService

скопировано непосредственно из ответ:

вы можете написать сценарий на любом языке, который вы хотите автоматизировать (даже с помощью nodejs), а затем просто установить ярлык для этого сценария в папке пользователя %appdata%\Microsoft\Windows\Start Menu\Programs\Startup