Автозапуск 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:
- Forever отслеживает запущенные процессы в файлах * .fvr, которые помещаются в /tmp/forever/pids;
- Каждый процесс Forever будет генерировать уникальный файл журнала, помещенный в /tmp/forever/*.log;
- Если не указано иное, вывод дочернего процесса stdout и stderr будет записан в указанный выше файл журнала.
Подробнее об этих параметрах можно узнать из использования Forever и документации по Github .
Использование модуля PM2
Последняя стабильная версия PM2 устанавливается через NPM:
Можно, также, декларировать управление несколькими приложениями, для этого нужно создать файл конфигурации со следующим содержимым:
И далее очень просто их запускаем:
Подробнее об объявлении приложения читайте здесь .
Перезапуск PM2 с процессами, которые вы выполняете при загрузке / перезагрузке сервера, имеет решающее значение. Чтобы решить эту проблему, просто запустите эту команду для создания активного сценария запуска:
Вот некоторые команды, которые стоит знать:
Пожалуй, основные из вышеизложенного списка:
Если используется фреймворк express, то команда запуска приложения в демон-режиме будет выглядеть так:
Салют коллеги. Два вопроса:
1) Разработку приходится вести на Windows 10 и лень каждый раз после включения компа запускать локальный сервер (если я правильно это называю), типа переходить в директорию запускать файл через "node index.js". Как сделать чтобы nodejs сам запускал этот файл как процесс при включении винды? И в случае сбоев как настроить автоматический рестарт?
2) На линуксе это реализовано через forever (рестарт приложения), но будет ли forever работать если я перезапущу VDS сервер? Эксперимент ставить не охота, сервер боевой и с уже большим аптаймом))
- Вопрос задан более трёх лет назад
- 1363 просмотра
вы так же не тратите неделю на изучение новой библиотеки взамен минутного вопроса
Если я планирую пользоваться продуктом в дальнейшем, то я сначала доки изучаю. Если на английском не осилил, то ищу перевод.
А если на один-два раза надо, тогда да, иду на Тостер или SO с вопросом. Понял, спасибо за ссыль на пм2 для винды, думал, что он только для Линухи. Для винды пока решил вопрос через bat, оказалось, что это просто и быстро)
Либо, если хочется хардкора, то можно написать свой bat-файл, который будет запускать ноду и мониторить ее процессы pm2 это вы про автозапуск на Linux после перезагрузки сервера говорите?
Хардкора не хочется, хочется чтобы скрипт автоматом запускался, а не вручную каждый день после включения компа.
те команды, которые вводите каждый раз в консоль
- для запуска ноды
- перехода в папку проекта
- запуска сервера
напишите их в текстовый документ
и сохраните этот документ с расширением .bat
далее, добавьте этот файл в автозагрузку windows
тем самым, при запуске windows будет выполняться скрипт, который будет набирать команды и запускать сервер
Вот вы когда даёте такие очевидные ответы вы понимаете, что раз человек задаёт подобные вопросы, то проблема не очевидна? Вы с тем же успехом могли дать совет "Читай!" или "Гугли!"
Я понимаю, что "автозагрузка" намекает на автозапуск файла, но каким образом интересно .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 запускает их при загрузке:
Перейдите в 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 запускает их при загрузке:
Зайдите на 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\Загрузочная папка
Читайте также: