node.js foreverによるデーモン化
提供: Node.js/JavaScript入門
スポンサーリンク
node.js npmのforeverとは、アプリケーションの永続化/デーモン化するツールです。HTTPサーバなどをデーモン化できます。プログラムの予期せぬエラーでサービスが停止してしまっても、foreverが起動しなおしてくれます。
読み方
- forever
- ふぉーえばー
目次
概要
プログラムは、予期せぬエラーで停止してしまいます。
$ node /tmp/a.js /tmp/a.js:7 a ^ ReferenceError: a is not defined at Object.<anonymous> (/tmp/a.js:7:1) at Module._compile (module.js:456:26) at Object.Module._extensions..js (module.js:474:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Function.Module.runMain (module.js:497:10) at startup (node.js:119:16) at node.js:902:3
このようにnodeが停止してしまうと、サービスが提供できなくなってしまいます。
foreverは、以下の機能を提供します。
- プログラムがエラーを起こして停止したときに、自動的に起動しなおす。
- プログラムをデーモン化する。
インストール
$ npm install forever
グローバルにインストールする場合は、以下の通りです。
$ sudo npm install -g forever
使い方
コマンドラインオプション
$ /tmp/node_modules/forever/bin/forever -h help: usage: forever [action] [options] SCRIPT [script-options] help: help: Monitors the script specified in the current process or as a daemon help: help: actions: help: start Start SCRIPT as a daemon help: stop Stop the daemon SCRIPT help: stopall Stop all running forever scripts help: restart Restart the daemon SCRIPT help: restartall Restart all running forever scripts help: list List all running forever scripts help: config Lists all forever user configuration help: set <key> <val> Sets the specified forever config <key> help: clear <key> Clears the specified forever config <key> help: logs Lists log files for all forever processes help: logs <script|index> Tails the logs for <script|index> help: columns add <col> Adds the specified column to the output in `forever list` help: columns rm <col> Removed the specified column from the output in `forever list` help: columns set <cols> Set all columns for the output in `forever list` help: cleanlogs [CAREFUL] Deletes all historical forever log files help: help: options: help: -m MAX Only run the specified script MAX times help: -l LOGFILE Logs the forever output to LOGFILE help: -o OUTFILE Logs stdout from child script to OUTFILE help: -e ERRFILE Logs stderr from child script to ERRFILE help: -p PATH Base path for all forever related files (pid files, etc.) help: -c COMMAND COMMAND to execute (defaults to node) help: -a, --append Append logs help: -f, --fifo Stream logs to stdout help: -n, --number Number of log lines to print help: --pidFile The pid file help: --sourceDir The source directory for which SCRIPT is relative to help: --minUptime Minimum uptime (millis) for a script to not be considered "spinning" help: --spinSleepTime Time to wait (millis) between launches of a spinning script. help: --colors --no-colors will disable output coloring help: --plain alias of --no-colors help: -d, --debug Forces forever to log debug output help: -v, --verbose Turns on the verbose messages from Forever help: -s, --silent Run the child script silencing stdout and stderr help: -w, --watch Watch for file changes help: --watchDirectory Top-level directory to watch from help: --watchIgnore To ignore pattern when watch is enabled (multiple option is allowed) help: --killSignal Support exit signal customization (default is SIGKILL) help: used for restarting script gracefully eg. --killSignal=SIGTERM help: -h, --help You're staring at it help: help: [Long Running Process] help: The forever process will continue to run outputting log messages to the console. help: ex. forever -o out.log -e err.log my-script.js help: help: [Daemon] help: The forever process will run as a daemon which will make the target process start help: in the background. This is extremely useful for remote starting simple node.js scripts help: without using nohup. It is recommended to run start with -o -l, & -e. help: ex. forever start -l forever.log -o out.log -e err.log my-daemon.js help: forever stop my-daemon.js help:
アプリケーションの起動
forever start main.js
アプリケーションの停止
forever stop main.js
実行例
ソースコード http.js
var http = require('http'); var server = http.createServer(); server.on('request', doRequest); server.listen(8080); function doRequest(req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.write('Hello World\n'); res.end(); }
実行例
$ /tmp/node_modules/forever/bin/forever start http.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: http.js $
プロセスは、以下のように実行されています。
$ ps x|fgrep forever 40569 - Is 0:00.42 /usr/local/bin/node /tmp/node_modules/forever/bin/monitor http.js
関連項目
- node.js
- node.jsのインストール
- node
- node.jsのHello world
- node.jsで外部ファイルのJavaScriptを呼び出す
- node.jsパッケージ管理ツールnpmの使い方
- node.js foreverによるデーモン化
- node.jsにおけるワンライナーの使い方
- node.js foreverでHTTPサーバをデーモン化する
ツイート
スポンサーリンク