JavaScript - Node.js - デーモン化


 クラウディア


1. 概要
2. サービスファイル
3. 登録・起動設定
4. 参考サイト

1. 概要

 「Node.js」は、「Node.js - Wikipedia」に記載されているように。  「HTTP」のサーバとして、起動できます。  「AlmaLinux release 9.6」で、サーバ化する処理を実装したのですが、それをサーバとして起動時から常駐させるようにします。  実際の、内部の処理は、ここでは割愛します。  「JavaScript」のファイル名は「server.js」として、下記の手順で実行します。

cd /path/server
node server.js
 以下、すべて「root」ユーザ権限で。

2. サービスファイル

 サービスファイルを作成します。

vi /etc/systemd/system/node-server.service
 下記を記述します。

[Unit]
Description=node server
After=syslog.target network.target

[Service]
ExecStart=node /path/server/server.js
WorkingDirectory=/path/server
Restart=always
User=user
Group=user

[Install]
WantedBy=multi-user.target
 「user」の箇所は、「HOME」ディレクトリを持つ、ログイン可能なユーザ、プロジェクトディレクトリのオーナーにします。  「node」は、「npm」でインストールしているものと、システムが用意しているものとが異なることがあります。  「npm」でインストールしている方を使う場合は、パスの記述が必要になります。

3. 登録・起動設定

 サービスとして登録して、起動してみます

systemctl daemon-reload

systemctl start node-server

systemctl status node-server
 おおむね、下記の表示になれば、成功です。

 node-server.service - node server
     Loaded: loaded (/etc/systemd/system/node-server.service; disabled; preset: disabled)
     Active: active (running) since Wed 2025-08-06 09:48:05 JST; 4s ago
   Main PID: 9491 (node)
      Tasks: 7 (limit: 22985)
     Memory: 31.1M
        CPU: 824ms
     CGroup: /system.slice/node-server.service
             └ 10775 node /path/server/server.js

 8月 06 10:11:16 user systemd[1]: Started node server.
 8月 06 10:11:16 user node[10775]: Puppeteer server running on port 3000
 システム起動時に、起動するように設定。

systemctl enable node-server

4. 参考サイト

 本ページは、「ChatGPT」くんを参考にさせていただきました。

AbemaTV 無料体験