[Sy] node.jsのアプリをforever.jsでdaemon化する手順
2015/07/02
node.jsのアプリをdaemon化して起動しておきたい場合、forever.js
というのを使うといいっぽいのでその手順です。
forever.jsをインストール
グローバルに入れました。
$ npm install forever -g
/usr/local/bin/forever -> /usr/local/lib/node_modules/forever/bin/forever
forever@0.14.2 /usr/local/lib/node_modules/forever
├── colors@0.6.2
├── timespan@2.3.0
├── optimist@0.6.1 (wordwrap@0.0.3, minimist@0.0.10)
├── nssocket@0.5.3 (eventemitter2@0.4.14, lazy@1.0.11)
├── cliff@0.1.10 (eyes@0.1.8, colors@1.0.3)
├── winston@0.8.3 (cycle@1.0.3, stack-trace@0.0.9, eyes@0.1.8, isstream@0.1.2, async@0.2.10, pkginfo@0.3.0)
├── nconf@0.6.9 (ini@1.3.4, async@0.2.9, optimist@0.6.0)
├── utile@0.2.1 (deep-equal@1.0.0, ncp@0.4.2, async@0.2.10, i@0.3.3, mkdirp@0.5.1, rimraf@2.4.1)
├── forever-monitor@1.5.2 (watch@0.13.0, minimatch@1.0.0, ps-tree@0.0.3, broadway@0.3.6)
└── flatiron@0.4.3 (optimist@0.6.0, director@1.2.7, prompt@0.2.14, broadway@0.3.6)
バージョン確認。
$ forever --version
v0.14.2
$ forever list
でdaemonとして動作中のプロセスを確認できるらしいので、とりあえず試しにやってみると、
$ forever list
info: No forever processes running
当然この時点では何もないです。
アプリをdaemon化
アプリのルートディレクトリへ移動して、以下コマンドを実行。
$ forever start app.js
warn: --minUptime not set. Defaulting to: 1000ms
warn: --spinSleepTime not set. Your script will exit if it does not stay up for at least 1000ms
info: Forever processing file: app.js
オプション設定しなかったのでデフォルト値になってるよ系のwarningが出てますが、とりあえず今回は無視して続けます。
起動できたみたいなので、もう一度リストを確認すると、
$ forever list
info: Forever processes running
data: uid command script forever pid id logfile uptime
data: [0] ysML /usr/local/bin/node app.js 1903 1905 /home/mitsuo/.forever/ysML.log 0:0:0:15.754
さっきと変わってます。うまくアプリのプロセスをdaemon化できてるようです。
ちなみにプロセスをnode
でgrepかけてみると、
$ ps ax | grep node
1903 ? Ssl 0:00 /usr/local/bin/node /usr/local/lib/node_modules/forever/bin/monitor app.js
1905 ? Sl 0:00 /usr/local/bin/node /var/www/analytics/app.js
1914 pts/0 S+ 0:00 grep node
という感じで、daemon化したアプリのスクリプトとforever/bin/monitorapp.js
という死活監視をしてくれてるだろうスクリプトの2つが動いてるのが確認できます。