node.jsに関する投稿が続いていますね。先日構築した
Side Effect Studioサイト
で使用したものを整理・共有しようとすると、node.js関連の投稿ばかり続いてしまいます。早く整理して他の内容も見ていかなければなりません。
昨年、
UpstartとMonitでnode.js Applicationをサービスする
という投稿をしたことがありますが、これはかなり有用である一方、管理面で非常に面倒な点があります。upstartスクリプトを作成したり、monitにルールを適用したりする作業は少し手間がかかります。他に代わりとなる手段を知らなかったのでUpstartとMonitを使用していましたが、その投稿以降、nodeアプリのインスタンスを管理してくれる
forever
というツールが公開されました。
forever
はnpmを使用して
npm install forever
コマンドで簡単にインストールが可能であり、非常にシンプルなコマンドでnode.jsで作成したアプリを実行し、予期せず終了した際に再実行したり、stdoutをログファイルとして残したりといった管理をしてくれるツールです。
使用してみると多少のバグはありますが、既存のUpstartとMonitの組み合わせに比べて操作性が非常に便利で、node.jsアプリの管理はすべてforeverに切り替えました。
usage: forever [start | stop | stopall | list | cleanlogs] [options] SCRIPT [script options]
options:
start start SCRIPT as a daemon
stop stop the daemon SCRIPT
stopall stop all running forever scripts
list list all running forever scripts
cleanlogs [CAREFUL] Deletes all historical forever log files
foreverの使い方は上記の通りです。
登録したいスクリプトを
forever start app.js
のように実行すれば完了です。プロセスを確認するとforeverに関するプロセスが別個に存在し、実行したapp.jsプロセスが終了した場合、自動的に再実行してくれます。現在動作しているスクリプトを確認するには
forever list
を実行します。
プロセスを終了する場合は、先に表示された番号を使用して
forever stop 番号
を使えば良いです。
一目でどのプロセスを現在使用しているか把握でき、ログファイルを自動的に接続してくれるため、非常に便利です。
少し使用してみた経験では、ある程度安定しているようです。(アクセス者がそれほど多くないため、致命的なエラーが発生する確率が低く、正確な判断ではありませんが、なんとなく...)ただ、バグがあるのか、forever startでアプリを登録した際、プロセスは正常に起動したにもかかわらずforeverに登録されず、リストに表示されないケースがあります。何度かテストを行いましたが、規則性は見つけられませんでした。そのような場合は、該当スクリプトとそのforeverに対するプロセスを強制終了してから再度登録する必要があります。この点以外は、管理・使用ともに便利で非常に優れていると思います。