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

На сервере Debian я установил Node.js. Я понимаю, как запустить приложение из шпатлевки с помощью этой командной строки:

node /srv/www/MyUserAccount/server/server.js

и добираться до него по адресу 50.51.52.53:8080 (IP и порт).

Но как только я закрываю замазку, я больше не могу связаться с адресом 50.51.52.53:8080.

Как запустить приложение Node.js?

Как вы можете догадаться, я начинаю с Linux и Node.js.

Ответ 1

Хотя другие ответы решают проблему ОП, они все переполнены и не объясняют, почему он или она сталкивается с этой проблемой.

Ключом является эта строка: "Я закрываю замазку, тогда я не могу связаться с адресом"

Когда вы заходите на свой удаленный хост в Putty, вы запустили процесс SSH linux, и все команды, введенные из этого сеанса SSH, будут выполняться как дочерние элементы указанного процесса.

Ваша проблема в том, что когда вы закрываете Putty, вы выходите из сеанса SSH, который убивает этот процесс и любые активные дочерние процессы. Когда вы закрываете шпатлевку, вы случайно убиваете свой сервер, потому что вы запускаете его на переднем плане. Чтобы избежать такого поведения, запустите сервер в фоновом режиме, добавив & к вашей команде:

node /srv/www/MyUserAccount/server/server.js &

Проблема здесь в недостатке знаний в Linux, а не в вопросе о узле. Для получения дополнительной информации: http://linuxconfig.org/understanding-foreground-and-background-linux-processes

ОБНОВИТЬ:

Как отмечали другие, сервер узла может все еще умереть при выходе из терминала. Обычная проблема, с которой я столкнулся, заключается в том, что, хотя процесс узла работает в bg, stdout и stderr все еще указывают на терминал. Это означает, что если сервер узла записывает на console.log или console.error, он получит сообщение об ошибке и сбое в работе. Этого можно избежать, выполнив вывод вашего процесса:

node /srv/www/MyUserAccount/server/server.js > stdout.txt 2> stderr.txt &

Если проблема сохраняется, вы должны изучить такие вещи, как tmux или nohup, которые по-прежнему более надежны, чем узловые решения, потому что они могут использоваться для запуска всех типов процессов (баз данных, служб ведения журналов и других языков).

Общей ошибкой, которая может привести к выходу сервера, является то, что после запуска nohup node your_path/server.js & вы просто закрываете терминал Putty простым щелчком. Вместо этого вы должны использовать команду exit, тогда ваш сервер узлов будет запущен и запущен.

Ответ 2

Вы можете установить навсегда с помощью npm:

sudo npm install -g forever

И затем запустите свое приложение с помощью:

forever server.js

Или как услуга:

forever start server.js

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

forever -m5 server.js

Чтобы просмотреть все запущенные процессы:

forever list

Обратите внимание на целое число в скобках и используйте его как следующее для остановки процесса:

forever stop 0

Перезапуск текущего процесса:

forever restart 0

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

forever -w server.js

Ответ 3

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

Установить PM2

$ npm install pm2 -g

Запустите приложение

$ pm2 start app.js

Если вы используете экспресс, вы можете запустить свое приложение, например

pm2 start ./bin/www --name="app"

Список всех запущенных процессов:

$ pm2 list

Он перечислит весь процесс. Затем вы можете остановить/перезапустить службу с помощью идентификатора или имени приложения со следующей командой.

$ pm2 stop all                  
$ pm2 stop 0                    
$ pm2 restart all               

Для отображения журналов

$ pm2 logs ['all'|app_name|app_id]

Ответ 4

Я бы порекомендовал искать что-то вроде Forever для перезапуска Node в случае сбоя и обработать демон для этого.

Ответ 5

Если вы просто хотите запустить приложение node в терминале, просто используйте экран.

Установить на ubuntu/debian:

sudo apt-get install screen

Использование:

$ screen
$ node /path/to/app.js

ctrl + a, а затем ctrl + d отклонить

Чтобы вернуться обратно:

Один экран: screen -r

Если имеется более одного, вы можете перечислить все экраны с помощью: screen -ls

И затем: screen -r pid_number

Ответ 6

Вы можете просто использовать этот

nohup node /srv/www/MyUserAccount/server/server.js &

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

Для этого вы можете установить htop, а затем выполнить поиск node, а затем убить его

Ответ 7

Здесь upstart решение, которое я использовал для своих личных проектов:

Поместите его в /etc/init/node_app_daemon.conf:

description "Node.js Daemon"
author      "Adam Eberlin"

stop on shutdown

respawn
respawn limit 3 15

script
  export APP_HOME="/srv/www/MyUserAccount/server"
  cd $APP_HOME
  exec sudo -u user /usr/bin/node server.js
end script

Это также будет обрабатывать респанирование вашего приложения в случае его сбоя. Он откажется от попыток респауна вашего приложения, если он сработает 3 или более раз менее чем за 15 секунд.

Ответ 8

nohup работает, я проверил в AWS Ubunto vm, следуя правильному syntax

[email protected]:~/ms$ nohup node server.js &

затем нажмите клавишу ввода, вы увидите эту строку

[email protected]:~/ms$ nohup: ignoring input and appending output to ‘nohup.out

затем введите это

rm nohup.out

enter image description here

Ответ 9

Во время разработки я рекомендую использовать nodemon. Он перезагружает ваш сервер всякий раз, когда изменяется файл. Как отмечали другие, Forever - это вариант, но в производстве все зависит от используемой вами платформы. Обычно вы хотите использовать рекомендованный операционной системой способ поддержания сервисов (например, http://www.freedesktop.org/wiki/Software/systemd/).

Ответ 10

Forever - очень хороший модуль NodeJs, чтобы сделать именно это.

Установите forever, введя в командной строке

$ npm install forever -g

Затем используйте следующую команду для запуска сценария node.js

$ forever start /path/to/script.js

Тебе хорошо идти. Кроме того, вы можете запускать

$ forever list

чтобы просмотреть все запущенные скрипты. Вы можете завершить любой скрипт, набрав

$ forever stop [pid]

где [pid] - это идентификатор процесса скрипта, который вы получите из команды list. Чтобы остановить все сценарии, вы можете ввести

$ forever stopall

Ответ 11

Я нашел навсегда безупречную работу.

Предполагая, что вы уже установили npm, если нет, просто выполните

sudo apt-get install npm

Затем установите навсегда

npm install forever --global

Теперь вы можете запускать его так:

forever start app.js

https://codingweb.io/run-nodejs-application-background/

Ответ 12

Монтаж

$ [sudo] npm install forever -g

Вы можете использовать forever для непрерывного запуска скриптов

forever start server.js

forever list

для остановки обслуживания

forever stop server.js

Ответ 13

Другой способ - создать системный блок для вашего приложения. создайте папку "XXX.service" в папке "/etc/systemd/system", подобную этому:

[Unit]
Description=swagger
After=network.target

[Service]
ExecStart=/usr/bin/http-server /home/swagger/swagger-editor &
WorkingDirectory=/home/swagger
Restart=always
RestartSec=30

[Install]
WantedBy=multi-user.target

Преимущество приложения будет работать как сервис, он автоматически перезагружается, если он разбился.

Вы также можете использовать sytemctl для управления им:

systemctl start XXX, чтобы запустить службу, systemctl stop XXX, чтобы остановить ее, и systemctl enable XXX, чтобы автоматически запускать приложение при загрузке системы.

Ответ 14

Я рекомендую использовать PM2, который является менеджером процессов для приложений Node.js. PM2 обеспечивает простой способ управления и демонстрации приложений (запуск их как службы).

ссылается на эту ссылку - https://www.digitalocean.com/community/tutorials/how-to-set-up-a-node-js-application-for-production-on-centos-7

Ответ 15

Я надеюсь, что это поможет вам.

В командной строке установите навсегда:

npm install forever -g

Создайте пример файла:

sudo nano server.js 

Вы можете редактировать файл и получать результаты непосредственно в своем браузере.
Вы можете использовать filezilla или любой редактор для редактирования файла. Запустите эту команду для запуска файла:

forever start --minUptime 1 --spinSleepTime 1000 -w server.js

enter image description here

Ответ 16

Сначала установите pm2 глобально

npm install -g pm2

затем начните

pm2 start bin/www