2012-03-20 2 views
9

Я разработчик node.js. Я использую Amazon ec2 для развертывания приложений node.js.Каковы преимущества и недостатки использования сценария выскочка или вечного скрипта в контексте запуска скриптов node.js ??

Я хочу, чтобы моя служба node.js работала постоянно - перезагрузилась, если по какой-либо причине она не удалась.

Я наткнулся на 2 инструмента. Forever и Upstart

Есть ли преимущества использования одного над другим?

Есть ли другой инструмент, который лучше?

+0

+1 Не знаете, почему этот вопрос становится больше любви! Я нашел это очень полезным. –

ответ

8

Upstart - это системный системный контроллер, аналогичный SysV Init, который запускает/останавливает/перезапускает по существу любой зарегистрированный для него сервис, Node.js или нет, а также автоматически запускает службы при запуске системы для вы. Но Upstart по своей сути специфичен для Ubuntu, а службы, ориентированные на Upstart, не будут работать на других дистрибутивах Linux.

У Upstart есть уровень совместимости SysV Init, который вы могли бы нацелить вместо этого, чтобы поддерживать как можно более широкий уровень совместимости.

Forever - приложение Node.js, которое отслеживает и перезапускает другие приложения Node.js по мере необходимости и определяет его конфигурацию JSON. Множество опций и мелкомасштабный контроль над вашим сервисом без усилий, необходимых для дублирования его в пользовательском скрипте SysV Init. Однако Forever не является системным сервисом, поэтому, если сервер перезагружен, вам придется вручную запускать свои вечные скрипты снова.

Помимо этого, если все, что вам нужно, перезагрузит ваш скрипт, если он/она сработает, и вы не заботитесь о его запуске автоматически при запуске системы, все, что вам нужно, - это сценарий bash так же просто, как:

#!/bin/bash 
while true 
do 
    node ./myScript.js 
done 
+0

Что делать, если у вас есть несколько процессов узла, управляемых вечно и хотите перезапустить один из них? – Anatoliy

+0

В соответствии с документацией на [навсегда] (https://github.com/nodejitsu/forever) вы указываете сценарий, который хотите запустить/остановить/перезапустить в качестве демона, поэтому вы просто перечислите его имя. Я не знаю, что вам нужно сделать, если два сценария имеют одно и то же имя. –

+0

Спасибо за объяснение. Насколько я помню, это был номер экземпляра. Оба решения не работают в реальном мире: (Итак, я собираюсь продолжать использовать выскочку, это отличный инструмент. – Anatoliy

5

Просто для исправления вводящего в заблуждение утверждения в принятом ответе ... Неверно, что выскочка - это только технология Ubuntu. См:

https://serverfault.com/questions/291546/centos-6-and-upstart http://searchenterpriselinux.techtarget.com/tip/RHEL-6-ditches-System-V-init-for-Upstart-What-Linux-admins-need-to-know http://en.wikipedia.org/wiki/Upstart#Adoption

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

+3

Только что заметил это.RedHat выкачивает Upstart для SystemD, поэтому я думаю, что моя точка зрения. –

+1

Debian также решил стандартизировать систему systemd (все строчные буквы, пожалуйста), и кажется вероятным - согласно заявлениям Shuttleworth - что Ubuntu последует примеру, пост 14.04 – Guss