https://node-ninja.com/でSocket.ioを稼働させているのですが、exception発生しちゃうと、簡単にデーモンとして稼働していたスクリプトが停止しちゃうnode.jsですが、ほんと、そういう時かなしいです。
前回紹介した、foreverをnode-ninjaでも動かします。
foreverをインストール
node-ninjaのサーバはx86アーキテクチャではない?のか、手元のMacでコンパイルビルドしたforeverをプロジェクトのnode_moduleに入れてdeployしてもうまく稼働してくれません。
そこで、node-ninjaにログインして
$ npm install forever -g
とすると、 /home/node/local/lib/node_modules/forever/ にインストールされます。
bashの設定を変更
~/.bashrcの以下を
NODE_PATH=$HOME/.node_libraries:/opt/nodejs/node_modules:$HOME/local/lib/node
下記のように変更する
NODE_PATH=$HOME/.node_libraries:/opt/nodejs/node_modules:$HOME/local/lib/node_modules
NODE_PATHに設定しておけば、nodeがどこからでも参照できる。
server.js
deployされると自動的にserver.jsを動かすので、server.jsを以下のように修正する。今回はapp.jsにアプリケーションを書いてあると仮定する。
var forever = require('forever');
var child = new (forever.Monitor)('app.js', {
silent: true,
options: []
});
child.on('exit', this.callback);
child.start();
こんな感じで、forever経由でapp.jsを起動するスクリプトにしておくと、deployするだけで自動的にforever経由で起動するデーモンになる。