更新日: 2016-07-29 (金) 12:22:09 (2d)

:Javascript

node.jsスクリプトをデーモン化するツールにforeverというものがあります。
https://github.com/nodejitsu/forever

foreverは起動したnode.jsスクリプトの死活監視を行い、停止した場合は自動的に再起動します。

mmonit/Upstart/daemontools等、同様な機能を持つツールと比較しと、node.jsとの親和性が高くお手軽なことがメリットです。また、node.jsスクリプトからインスタンスを生成して操作することが可能です。

以下Version 0.7.2で確認した内容になります。

インストール

npm install forever -g

※プログラムから利用する場合はローカルインストールしたほうが良いです。

cd /path/to/project
npm install forever

主なオプションは下記の通りです。

node.jsスクリプトの起動

forever start app.js

実行中スクリプトの表示

forever list

実行中スクリプトの停止や再起動

forever stop
forever stopall
forever restart

引数

forever -hでヘルプが表示されます

forever [action] [options] SCRIPT [script-options]

アクション

   start               Start SCRIPT as a daemon
   stop                Stop the daemon SCRIPT
   stopall             Stop all running forever scripts
   restart             Restart the daemon SCRIPT
   list                List all running forever scripts
   config              Lists all forever user configuration
   set <key> <val>     Sets the specified forever config <key>
   clear <key>         Clears the specified forever config <key>
   logs                Lists log files for all forever processes
   logs <script|index> Tails the logs for <script|index>
   columns add <col>   Adds the specified column to the output in `forever list`
   columns rm <col>    Removed the specified column from the output in `forever list`
   columns set <cols>  Set all columns for the output in `forever list`
   cleanlogs           [CAREFUL] Deletes all historical forever log files

オプション

   -m  MAX          Only run the specified script MAX times スクリプトの起動回数制限 
   -l  LOGFILE      Logs the forever output to LOGFILE foevert本体のログ
   -o  OUTFILE      Logs stdout from child script to OUTFILE 子スクリプト標準出力のログ 
   -e  ERRFILE      Logs stderr from child script to ERRFILE 子スクリプト標準エラー出力のログ 
   -p  PATH         Base path for all forever related files (pid files, etc.)
   -c  COMMAND      COMMAND to execute (defaults to node) 実行するコマンド(デフォルトはnode)
   -a, --append     Append logs ログを追記する 
   --pidfile        The pid file
   --sourceDir      The source directory for which SCRIPT is relative to
   --minUptime      Minimum uptime (millis) for a script to not be considered "spinning" 最低使用時間(ミリ秒)
   --spinSleepTime  Time to wait (millis) between launches of a spinning script. 実行中スクリプトの起動待ち時間
   --plain          Disable command line colors
   -d, --debug      Forces forever to log debug output
   -v, --verbose    Turns on the verbose messages from Forever
   -s, --silent     stdout/stderrへの出力を抑制する Run the child script silencing stdout and stderr
   -w, --watch      Watch for file changes ファイル変更を監視する 
   -h, --help       You're staring at it

node.jsアプリからforeverインスタンスを操作する

node.jsスクリプト内からforeverモジュールを使うことができます。

  var forever = require('forever');

  var child = new (forever.Monitor)('your-filename.js', {
    max: 3,
    silent: true,
    options: []
  });
 child.on('exit', this.callback);
 child.start();

node.js以外のプログラムをデーモン化する

node.jsスクリプトからperlワンライナーをデーモン化する例です。

var forever = require('forever');
var child = forever.start([ 'perl', '-le', 'print "moo"' ], {
  max : 1,
  silent : true
});

サーバー起動時に自動的にforeverを自動開始する

/etc/rc.localに記述するのが簡単です。
/etc/rc.localの記述例です。

/usr/local/bin/node /usr/local/bin/forever start \
  -p /var/run/forever \
  --pidfile /var/run/node-app.pid \
  -l /var/log/node-app.log -a \
  -d /home/node/ \
  /home/node/app.js

選択肢 投票
このページの情報は役に立った 29  
このページの情報は役に立たなかった 0  
どちらでもない 0  
このページが参照された数
Total: 32927, 今日: 26, 昨日: 0

でじうぃきは神奈川県横浜市の位置情報システム・スマホアプリ開発の株式会社オンラインコンサルタントが運営しています。
投稿
トップ   このページを編集する 再編集不可にする 差分 バックアップ 添付 複製 名前変更 リロード   新しいページを作る 一覧 検索する 最新の更新   ヘルプ   最終更新のRSS
Last-modified: 2016-07-29 (金) 12:22:09 (2d)