LocKing
@LocKing
Не задавай вопросов — не услышишь лжи

Почему закрывается приложение на NodeJS после выхода из консоли?

Только начинаю изучать NodeJS и нарвался на непонятную ситуацию:

Имеется CentOS 6.4 с установленным NodeJS.

Всё прекрасно работает, но вот после того, как я запустил любой js файл через node, который "слушает" порты и обрабатывает запросы на сервер и затем закрываю консоль - скрипт перестаёт работать.

Т.е. при открытой консоли всё работает, как только делаю хотя бы CTR+C или вовсе закрываю консоль, то всё рушится и я снова могу спокойно запускать тот же скрипт, который только сейчас работал с помощью команды "node имя_скрипта.js" и он снова начнёт работать, но только до момента, когда я захочу закрыть консоль.

Это разве нормальное поведение NodeJS?
Как правильно запустить веб-сервер?
Возможно, проблема кроется в настройках NodeJS?

Ниже собственно код :)
var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(8080, 'IP СЕРВЕРА');
console.log('Server running at http://IP СЕРВЕРА:8080/');
  • Вопрос задан
  • 5108 просмотров
Решения вопроса 1
@YoungSkipper
Короткий и не очень верный ответ запускать вот так

node expamle.js &

Более длинный ответ

apt-get install upstart // yum here for Centos
------
#!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
----


Использовать

sudo start myapp
sudo stop myapp
sudo restart myapp


Третий node-style вариант

$npm install forever -g
$forever start app.js
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Да, это нормальное поведение. А как по другому вы хотели? Если вы хотите что бы сервер висел и после завершения вашей сессии, нужно запускать ваш скрипт как демон.

Почитайте про деплой node.js проектов.
Ответ написан
Комментировать
mirrr
@mirrr
Программист и просто хороший человек
Запускайте через forever или как сервис systemd и будет вам счастье)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы