🤤

Node.jsのスクリプトをデーモン化する!

2021/04/03に公開

はじめに

くーばねてすを倒すために今回は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

https://www.npmjs.com/package/forever

$ 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/

http://127.0.0.1:3000/

サーバーが立ち上がってるのを確認できた!

■スクリプトをデーモン化する


このままではターミナルを閉じたりするとサーバーは消えてしまうので、サーバーを永続化させるためにforeverモジュールを利用する。

スクリプトをデーモン化する
$ forever start server.js

ターミナルを閉じてもサーバーを確認できた!

サーバーを停止するときは

$ forever stop server.js

でデーモン化を解除できる。

https://pisuke-code.com/node-js-basic-way-to-build-server/
https://qiita.com/qulylean/items/afa2acff6ed963c88798
こんな便利コマンドもあったらしい。
https://qiita.com/standard-software/items/1afe7b64c4c644fdd9e4

まとめ

今日の夜ご飯はラーメンにラー油を浸して食べてみたら、本当に美味しかった。
でも途中でラー油が油であることに気づいてカロリーが怖くなったのでしばらく控える!(^^)

本当に美味しかったからやってみてほしい。

Discussion