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

Я использую сервис node.js (statsd) в CentOS 6. Как правильно демонизировать и запустить такой сервис?

Потенциальные демонизаторы - должны ли демонизаторы быть специфичными для языка или общими?:

  • навсегда (для конкретного узла)
  • демон
  • nohup (предположительно неправильно)
  • http://man.he.net/man8/start-stop-daemon (только для debian? это для демонизации или запуска / остановки? что эквивалентно Centos?)
  • Должно ли само приложение действительно знать, как демонизировать себя, а затем иметь -d флаг? (например, через node-daemonize2 или forever-monitor?)

Служба запуска - это должны быть из системы / дистрибутива или из инструментов мониторинга, таких как monit?:

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

1 ответ

Решение

Должно ли само приложение действительно знать, как демонизировать себя...

Если ваше приложение предназначено для запуска в качестве демона, да, оно должно быть полностью осведомлено о том, как демонизировать себя, записать соответствующие файлы (лог и PID приходят на ум) и обрабатывать сигнал. Большой WTF, если это не так.

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

Служба начала...

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

Инструменты мониторинга..

Должен знать, как взаимодействовать с официальными механизмами запуска / остановки Distro, и не должен знать, как конкретно взаимодействовать с вашей программой (если ваша программа не "публикует" данные через механизм отчетности, возможно, включая ловушки для службы SNMP или аналогичные; все это действительно зависит от того, что делает ваша программа, хотя).

Другие вопросы по тегам