Как запустить приложение 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