2012-03-20 5 views
9

私はnode.jsの開発者です。私はAmazon EC2を使ってnode.jsアプリを配備しています。node.jsスクリプトを実行している状況でupstartスクリプトまたはforeverスクリプトを使用するメリットとデメリットは何ですか?

node.jsサービスを永続的に実行したいと思います。何らかの理由で失敗した場合は、再起動してください。

私は2つのツールに出くわしました。 ForeverUpstart

もう一方を使用する利点はありますか?

他にも優れたツールがありますか?

+0

+1なぜこの質問がもっと愛しているのかわかりません!私はそれが非常に有用であることが分かった –

答えて

8

UpstartはSysV Initと同様のシステムサービスコントローラであり、基本的にはサービスが登録されており、Node.jsベースで起動/停止/再起動され、システム起動時に自動的にサービスを開始します君は。しかし、Upstartは本質的にUbuntu固有のものであり、Upstart固有のサービスは他のLinuxディストリビューションでは動作しません。

Upstartには、できるだけ幅広い互換性レイヤーを維持するために、代わりにターゲットにできるSysV Init互換性レイヤーがあります。

Foreverは、必要に応じて、また構成JSONで定義されているように、他のNode.jsアプリケーションを監視して再起動するNode.jsアプリケーションです。カスタムのSysV Initスクリプトでそれを複製するために必要な労力なしに、多くのオプションとサービスのきめ細かな制御。ただし、永久にシステムサービスではないので、サーバーを再起動する場合は、手動で永久スクリプトを再度起動する必要があります。

それ以外では、クラッシュしたときにスクリプトを再起動する必要があり、システム起動時に自動的に起動しないように気をつけなければ、必要なのは簡単なbashスクリプトです:

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

永久に管理されるノードプロセスが少なく、そのうちの1つを再起動したい場合はどうすればよいですか? – Anatoliy

+0

[forever](https://github.com/nodejitsu/forever)のドキュメントによれば、デーモンとして起動/停止/再起動するスクリプトを指定するので、その名前をリストするだけです。 2つのスクリプトがまったく同じ名前を持っていれば、何をする必要があるのか​​分かりません。 –

+0

ありがとうございます。以前は、私が覚えている限り、インスタンスの数でした。両方の解決策は現実世界ではうまくいきません:(でも、私はupstartを使い続けるつもりです、それはすごいツールです。) – 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はSystemDのUpstartを捨てているので、私の意見が重要だと思います。 –

+1

Debianもsystemd(すべて小文字です)で標準化することにしました.Shorttleworthの発言によれば、Ubuntuがそれに従うと思われます.14.04 – Guss