Узел автоматического запуска.сервер JS при загрузке
может любой узел.эксперты js говорят мне, как я могу настроить узел JS для автоматического запуска сервера при загрузке моей машины? Я на Windows
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-интерфейс:
перейти к 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.
Я бы рекомендовал установить ваш узел.приложение 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