Подтвердить что ты не робот

Как запустить приложение node.js навсегда, когда консоль закрыта?

Я подключаюсь к удаленному серверу через ssh. Затем я запустил приложение node.js с Forever. Все работает нормально, пока я не закрою окно консоли. Как запустить приложение node.js FOREVER на моем удаленном сервере, даже когда я закрываю свое соединение через ssh? Я просто хочу запустить приложение и закрыть свой компьютер. Мое приложение должно работать в фоновом режиме на моем удаленном сервере.

4b9b3361

Ответ 1

Вы также можете рассмотреть возможность использования утилиты upstart. Это позволит вам запускать, останавливать и перезапускать приложение node, как сервис. Upstart может настроить автоматическое перезапуск приложения, если он сработает.

Установить выскочку:

sudo apt-get install upstart

Создайте простой script для вашего приложения, который будет выглядеть примерно так:

#!upstart
description "my app"

start on started mountall
stop on shutdown

# Automatically Respawn:
respawn
respawn limit 99 5

env NODE_ENV=production

exec node /somepath/myapp/app.js >> /var/log/myapp.log 2>&1

Затем скопируйте файл script (myapp.conf) в /etc/init и убедитесь, что его отмечен как исполняемый файл. Затем ваше приложение может управляться с помощью следующих команд:

sudo start myapp
sudo stop myapp
sudo restart myapp

Ответ 2

Два ответа: один для Windows, один для * nix:

В Windows вы можете использовать команду start, чтобы запустить процесс, отключенный от вашего экземпляра cmd.exe:

start node example.js

В * nix есть два аспекта этого: Отключение процесса от консоли и обеспечение того, что он не получает сигнал HUP ( "зависание" ), которое большинство процессов (включая Node) ответит на завершение. Первый может быть необязательным, но последний необходим.

Запуск, отключенный от консоли, прост: обычно вы просто помещаете амперсанд (&) в конце командной строки:

# Keep reading, don't just grab this and use it
node example.js &

Но выше не защищает процесс от сигналов HUP. Программа может получать или не получать HUP при закрытии оболочки (консоли) в зависимости от опции оболочки под названием huponexit. Если huponexit - true, процесс получит HUP, когда оболочка выйдет и предположительно завершится.

huponexit по умолчанию используется false для различных вариантов Linux, которые я использовал, и на самом деле я с радостью использовал вышеуказанные в течение многих лет до coderjoe и другие помогли мне понять (в очень длинном потоке комментариев под ответом, который, возможно, был удален), что я полагался на huponexit false.

Чтобы избежать возможности huponexit true в вашей среде, явно используйте nohup. nohup запускает процесс, защищенный от сигналов HUP. Вы используете его следующим образом:

nohup node example.js > /dev/null &

или

nohup node example.js > your-desired-filename-or-stream-here &

Перенаправление важно; если вы этого не сделаете, вы получите файл nohup.out, содержащий вывод из stdout и stderr. (По умолчанию nohup перенаправляет stderr в stdout, а если stdout выводится на терминал, он перенаправляет его на nohup.out. nohup также перенаправляет stdin, если он принимает от терминала, поэтому нам не нужно это делать. Подробнее см. man nohup или info coreutils 'nohup invocation'.)

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

Ответ 3

Всегда, просто самое лучшее, не нужно выскочить, не нужно навсегда, просто nohup:

nohup node file.js &

Поверьте мне, я бегу так, что для моего дела!

Ответ 4

node expamle.js & например

Ответ 5

В Linux, SSH на ваш удаленный сервер и запустите

screen

для запуска в новый экран.

Наконец, введите ctrl a d, чтобы отсоединить сеанс экрана, не убив процесс.

Подробнее здесь.

Ответ 6

Это лишь частичный ответ для Windows. Ive создал одну строку Visual Basic Script под названием app.vbs, которая запустит ваше приложение node в скрытом окне:

CreateObject("Wscript.Shell").Run "node app.js", 0

Чтобы выполнить его автоматически при запуске, откройте каталог %AppData%\Microsoft\Windows\Start Menu\Programs\Startup\ и добавьте ярлык в файл app.vbs.

Дополнительная информация: https://keestalkstech.com/2016/07/start-nodejs-app-windowless-windows/

Ответ 7

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

Вы можете установить навсегда глобально: sudo nom install -g forever

И запустите эту команду:

nohup forever server.js &

Это должно устранять все проблемы с закрытием терминала, закрытие сеанса ssh, node сбой и перезапуск.

Ответ 8

Если вы работаете с node.js в производственной среде, вам следует рассмотреть возможность использования PM2, forever.js или Nodemon.

В Интернете нет недостатка в сравнении разных пакетов.