Автозапуск node js windows

Обновлено: 06.07.2024

Запуск в фоновом режиме при помощи nohup

Традиционный подход заключается в том, чтобы запустить команду, используя nohup:

Эта строчка говорит о том, чтобы мы запустили приложение Node.js в фоновом режиме, а все логи записывались в файл output.log.

Использование модуля Forever

Установить данный модуль можно следующей командой:

Чтобы использовать Forever, как долговременный процесс, нужно запустить процесс через команду «start». Имея эти задачи, запуск сценария nodejs с Forever прост:

Первая команда запускает скрипт simple-server.js в фоновом режиме с помощью daemon.node и возвращает управление текущему процессу оболочки. Вторая команда перечисляет все процессы, выполняемые с Forever. Идентификаторами после имени сценария являются идентификаторы процесса целевого скрипта и демона, которые будут запущены всегда, пока работает сервер. Мы можем подтвердить это, просмотрев список процессов:

Чтобы проиллюстрировать, что Forever автоматически перезапустит дочерний процесс, который, каким-либо образом был закрыт в процессе перезагрузки или ошибки. Для этого давайте принудительно убьем запущенный процесс и проверим перезапустит ли Forever его:

Как вы видите, идентификатор процесса целевого скрипта «simple-server.js» изменился с 24597 до 24611, что указывает на то, что новый процесс был запущен Forever. Таким образом, наш целевой скрипт будет работать непрерывно, но как мы его остановим? Остановка процесса с Forever проста из командной строки. Нам просто нужно передать индекс этого процесса из списка «вечный список» на остановку:

Существуют некоторые параметры по умолчанию и соглашения о конфигурации, о которых вам следует знать при использовании Forever:

  1. Forever отслеживает запущенные процессы в файлах * .fvr, которые помещаются в /tmp/forever/pids;
  2. Каждый процесс Forever будет генерировать уникальный файл журнала, помещенный в /tmp/forever/*.log;
  3. Если не указано иное, вывод дочернего процесса stdout и stderr будет записан в указанный выше файл журнала.

Подробнее об этих параметрах можно узнать из использования Forever и документации по Github .

Использование модуля PM2

Последняя стабильная версия PM2 устанавливается через NPM:

Можно, также, декларировать управление несколькими приложениями, для этого нужно создать файл конфигурации со следующим содержимым:

И далее очень просто их запускаем:

Подробнее об объявлении приложения читайте здесь .

Перезапуск PM2 с процессами, которые вы выполняете при загрузке / перезагрузке сервера, имеет решающее значение. Чтобы решить эту проблему, просто запустите эту команду для создания активного сценария запуска:

Вот некоторые команды, которые стоит знать:

Пожалуй, основные из вышеизложенного списка:

Если используется фреймворк express, то команда запуска приложения в демон-режиме будет выглядеть так:

Салют коллеги. Два вопроса:
1) Разработку приходится вести на Windows 10 и лень каждый раз после включения компа запускать локальный сервер (если я правильно это называю), типа переходить в директорию запускать файл через "node index.js". Как сделать чтобы nodejs сам запускал этот файл как процесс при включении винды? И в случае сбоев как настроить автоматический рестарт?

2) На линуксе это реализовано через forever (рестарт приложения), но будет ли forever работать если я перезапущу VDS сервер? Эксперимент ставить не охота, сервер боевой и с уже большим аптаймом))

  • Вопрос задан более трёх лет назад
  • 1363 просмотра

yarkov

ОК, для Linux подойдёт, но если это даже на винду поставить, то как решить проблему с автозагрузкой?

yarkov

yarkov

вы так же не тратите неделю на изучение новой библиотеки взамен минутного вопроса

Если я планирую пользоваться продуктом в дальнейшем, то я сначала доки изучаю. Если на английском не осилил, то ищу перевод.
А если на один-два раза надо, тогда да, иду на Тостер или SO с вопросом. Понял, спасибо за ссыль на пм2 для винды, думал, что он только для Линухи. Для винды пока решил вопрос через bat, оказалось, что это просто и быстро)

ArtamonovDenis

Либо, использовать готовые решения pm2 и прочие
Либо, если хочется хардкора, то можно написать свой bat-файл, который будет запускать ноду и мониторить ее процессы pm2 это вы про автозапуск на Linux после перезагрузки сервера говорите?
Хардкора не хочется, хочется чтобы скрипт автоматом запускался, а не вручную каждый день после включения компа.

ArtamonovDenis

те команды, которые вводите каждый раз в консоль
- для запуска ноды
- перехода в папку проекта
- запуска сервера
напишите их в текстовый документ
и сохраните этот документ с расширением .bat
далее, добавьте этот файл в автозагрузку windows
тем самым, при запуске windows будет выполняться скрипт, который будет набирать команды и запускать сервер

Не думал что это будет так просто, раньше с bat не работал. Теперь всё работает как положено. Спасибо, это то что было нужно Ну, раз это каталог и называется он "Автозагрузка", то вполне очевидно, что служит он для автозапуска и для его использования надо просто поместить туда файл, который будет запущен/открыт при запуске ОС.

Вот вы когда даёте такие очевидные ответы вы понимаете, что раз человек задаёт подобные вопросы, то проблема не очевидна? Вы с тем же успехом могли дать совет "Читай!" или "Гугли!"

Я понимаю, что "автозагрузка" намекает на автозапуск файла, но каким образом интересно .js файл можно автозапустить? Это уже не очевидно.

И в Windows 10 больше нет "Пуск -> Автозагрузка", но обходными путями это можно сделать.

> Я понимаю, что "автозагрузка" намекает на автозапуск файла, но каким образом интересно .js файл можно автозапустить?
1) Просто положив его в каталог - винда автоматически запустит ассоциированное приложение (файловые ассоциации задаются в панели управления/реестре или специальными более продвинутыми утилитами);
2) Создать ярлык на приложение и в командной строке указать запускаемый файл;
3) Создать *.bat файл, который запустит нужное приложение.

> И в Windows 10 больше нет "Пуск -> Автозагрузка", но обходными путями это можно сделать.
Мда, косяки десятки, хотя сам каталог на месте: `%user%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup`

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

В этом суперлегком модуле, который устанавливает node script как службу Windows, он называется node -windows (npm, github, . Я использовал это раньше и работал как шарм.

p.s.

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

ответил(а) 2013-12-22T03:06:00+04:00 7 лет, 11 месяцев назад

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

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

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

И make pm2 запускает их при загрузке:

AWESOME

Перейдите в github и прочитайте инструкции . Он прост в использовании и очень удобен. Лучшее с тех пор forever.

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

ответил(а) 2013-12-18T17:39:00+04:00 7 лет, 11 месяцев назад

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

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

и сохраните его с расширением .bat. Здесь myapp.js - это ваше приложение, которое в этом примере находится на диске C: (spcify путь).

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

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

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

ответил(а) 2013-12-19T16:56:00+04:00 7 лет, 11 месяцев назад

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

ответил(а) 2016-11-27T22:19:00+03:00 4 года, 11 месяцев назад

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

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

ответил(а) 2013-12-21T19:17:00+04:00 7 лет, 11 месяцев назад

Используйте pm2, чтобы запускать и запускать процессы nodejs в окнах.

ответил(а) 2016-05-11T18:07:00+03:00 5 лет, 6 месяцев назад ответил(а) 2015-12-02T21:00:00+03:00 5 лет, 11 месяцев назад

Скопировано прямо из этого ответа:

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

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

В этом суперлегком модуле, который устанавливает node script как службу Windows, он называется node -windows (npm, github, . Я использовал это раньше и работал как шарм.

p.s.

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

Ответ 2

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

Вы устанавливаете это:

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

И make pm2 запускает их при загрузке:

AWESOME

Зайдите на github и прочитайте инструкцию. Это простой в использовании и очень удобный. Лучшая вещь с тех пор навсегда.

Ответ 3

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

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

и сохраните его с расширением .bat. Здесь myapp.js - это ваше приложение, которое в этом примере находится на диске C: (spcify путь).

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

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

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

Ответ 4

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

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

Ответ 5

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

Ответ 6

Это легко сделать вручную с помощью планировщика заданий Windows.

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

Наконец, создайте запланированное задание, которое запускается при входе в систему. Эта задача должна вызвать командный файл.

Ответ 7

Используйте pm2, чтобы запускать и запускать процессы nodejs в окнах.

Ответ 8

Ответ 9

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

Ответ 10

Скопировано прямо из этого ответа:

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

Читайте также: