2012-01-03 2 views
4

Существует ли общепринятое средство деамонизации (и, конечно же, последующее сообщение через сигналы или некоторая абстракция) сценария узла?Как я могу демонзировать узел?

То есть, есть узел эквивалент:

if (fork()) 
    // parent process, die 
    exit(1); 
// we're a daemon 
+0

см. [Навсегда] (https://github.com/nodejitsu/forever) –

ответ

0

Существует не встроенный способ сделать это в узел. Посмотрите на Writing Daemon's in JavaScript with Node.js для одной реализации (предупреждение: это относительно старый и узел перемещается быстро - я не проверял :)

1

Node Web Development

Ниже приведен список способов запуска. Узел в качестве фона демона на различных платформах:

  • nodejs-autorestart управляет экземпляр узла на Linux, который использует Upstart (Ubuntu, Debian, и так далее).
  • fugue наблюдает за сервером узла, перезапустив его, если он сработает.
  • forever - это небольшой скрипт узла командной строки, который гарантирует, что скрипт будет работать «навсегда».
  • node-init - это сценарий узла, который превращает ваше приложение Node в сценарий инициализации, совместимый с LSB. LSB является спецификацией Linux совместимость.
+0

Я думал, что эта книга ужасная. Он не является исчерпывающим и рекламирует тонну стороннего кода вместо использования встроенных модулей узла (как и следовало ожидать от названия). Его следует называть «Веб-разработка с помощью Node.js Tools» или что-то в этом роде. – L0j1k

0

Как указывали другие, на самом деле нет способа сделать это непосредственно в узле. Вам действительно нужно запустить его, используя foreverjs. Причина, по которой вам нужно запускать его с помощью монитора, как навсегда, заключается в том, что ошибка, вызванная вашим кодом, часто приводит к завершению и завершению всего процесса узла. Монитор будет искать это и немедленно перезапустить процесс.

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