Node.jsのスクリプトをデーモン化する!
はじめに
くーばねてすを倒すために今回はNode.jsをやっつけないといけなくなったのでNode.jsのスクリプトをデーモン化する方法を調べた(^^)/!
概要
■デーモン化ってなに?
■node.jsで作ったスクリプトをデーモン化するには
■foreverを導入する
■スクリプトを作成する
■スクリプトをデーモン化する
をまとめた(^^)/
■デーモン化ってなに?
まずデーモンとは、バックグラウンドプロセスとして働くプログラムであり、OSの常駐プログラムだ。
なのでデーモン化(デーモナイズ)とは指定したプログラムを永続的に実行することができる状態にすることになる。
前回Node.jsのyarnで色々インストールしたモジュールを常駐プログラムにしてみる!
■node.jsで作ったスクリプトをデーモン化するには
今回はNode.jsのモジュールの一つであるforeverを使用してスクリプトをデーモン化する。
「forever」モジュールを使うと指定したプログラムを永続的に実行することができる!
■foreverを導入する
foreverをインストールする。
foreverモジュールはアプリごとに使うものではないので、グローバル環境にインストールする。
$ sudo npm install forever -g
$ forever --help
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 by Id|Uid|Pid|Index|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`. Supported columns: 'uid', 'command', 'script', 'forever', 'pid', 'id', 'logfile', 'uptime'
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: columns reset Resets all columns to defaults for the output in `forever list`
help: cleanlogs [CAREFUL] Deletes all historical forever log files
■スクリプトを作成する
Node.jsにモジュールとしてインストールされているhttpを利用してスクリプトを作成する!
const http = require('http'); #httpモジュールの読み込み
const hostname = '127.0.0.1'; #ポートとホスト名を指定
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200; #処理を記述
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World\n');
});
server.listen(port, hostname, () => { #アドレス
console.log(`Server running at http://${hostname}:${port}/`);
});
簡易的にテストする。
$ node server.js
Server running at http://127.0.0.1:3000/
サーバーが立ち上がってるのを確認できた!
■スクリプトをデーモン化する
このままではターミナルを閉じたりするとサーバーは消えてしまうので、サーバーを永続化させるためにforeverモジュールを利用する。
$ forever start server.js
ターミナルを閉じてもサーバーを確認できた!
サーバーを停止するときは
$ forever stop server.js
でデーモン化を解除できる。
こんな便利コマンドもあったらしい。
まとめ
今日の夜ご飯はラーメンにラー油を浸して食べてみたら、本当に美味しかった。
でも途中でラー油が油であることに気づいてカロリーが怖くなったのでしばらく控える!(^^)
本当に美味しかったからやってみてほしい。
Discussion