CentOSでNode.jsサーバーを自動再起動:Foreverとsystemdで簡単実現

2024-05-22

CentOSでNode.jsサーバーを自動的に再起動する方法:Foreverとsystemdの併用

このチュートリアルでは、CentOSシステム上でNode.jsサーバーを自動的に再起動する方法について説明します。この方法は、Foreverとsystemdサービスファイルの組み合わせを利用します。

Foreverは、Node.jsアプリケーションを監視し、クラッシュした場合に自動的に再起動するツールです。また、ログファイルをローテーションしたり、アプリケーションの起動時に実行するスクリプトを指定したりすることもできます。

systemdは、CentOSを含むLinuxシステム用のinitシステムです。systemdは、サービスの起動、停止、管理に使用できます。

手順

  1. Node.jsとForeverをインストールする
sudo yum install nodejs
npm install -g forever
  1. Node.jsアプリケーションを作成する
// app.js
const express = require('express');
const app = express();

app.get('/', (req, res) => {
  res.send('Hello from Node.js!');
});

app.listen(3000, () => {
  console.log('Server listening on port 3000');
});
  1. Foreverを使用してNode.jsアプリケーションを起動する
forever start app.js
  1. systemdサービスファイルを作成する
[Unit]
Description=Forever Node.js app
After=network.target

[Service]
User=your_user
ExecStart=/usr/local/bin/forever start app.js
Restart=on-failure

[Install]
WantedBy=multi-user.target

上記の内容を [Node.jsアプリケーション名].service という名前のファイルに保存します。

    sudo systemctl enable [Node.jsアプリケーション名].service
    
      sudo systemctl start [Node.jsアプリケーション名].service
      

      説明

      上記のステップにより、以下のことが行われます。

      • Node.jsアプリケーション app.js が作成されます。
      • Foreverを使用して、app.jsforever start コマンドで起動されます。
      • systemdサービスファイルが作成されます。このファイルは、systemdにNode.jsアプリケーションを監視し、必要に応じて再起動するように指示します。

      注意事項

      • 上記の例では、Node.jsアプリケーションが /usr/local/bin ディレクトリにあると仮定しています。Node.jsアプリケーションが別の場所にインストールされている場合は、ExecStart ディレクティブをそれに応じて変更する必要があります。
      • systemdサービスファイルを作成するには、root権限が必要です。
      • Node.jsアプリケーションがログファイルを生成する場合は、systemdサービスファイルでログファイルの場所を指定する必要があります。



      sudo yum install nodejs
      npm install -g forever
      
      // app.js
      const express = require('express');
      const app = express();
      
      app.get('/', (req, res) => {
        res.send('Hello from Node.js!');
      });
      
      app.listen(3000, () => {
        console.log('Server listening on port 3000');
      });
      
      forever start app.js
      
      [Unit]
      Description=Forever Node.js app
      After=network.target
      
      [Service]
      User=your_user
      ExecStart=/usr/local/bin/forever start app.js
      Restart=on-failure
      
      [Install]
      WantedBy=multi-user.target
      
      sudo systemctl enable [Node.jsアプリケーション名].service
      
      sudo systemctl start [Node.jsアプリケーション名].service
      

      上記のコードは、以下のことを行います。




            CentOSでNode.jsサーバーを自動的に再起動する方法:その他の方法

            PM2を使う

            PM2は、Node.jsアプリケーションを管理するためのプロセスマネージャーです。PM2は、自動的に再起動する機能を含む、多くの機能を提供しています。

            PM2を使用してNode.jsサーバーを自動的に再起動するには、以下の手順を実行します。

            1. PM2をインストールします。
            npm install pm2 -g
            
            pm2 start app.js
            

            PM2は、Node.jsアプリケーションを監視し、必要に応じて再起動します。

            nodemonは、Node.jsアプリケーションの開発を容易にするツールです。nodemonは、ファイルに変更が加えられるたびにNode.jsアプリケーションを自動的に再起動する機能を含む、多くの機能を提供しています。

            npm install nodemon -g
            
            nodemon app.js
            

            nodemonは、Node.jsアプリケーションを監視し、ファイルに変更が加えられるたびに再起動します。

            Supervisorは、プロセスを監視および管理するためのツールです。Supervisorは、自動的に再起動する機能を含む、多くの機能を提供しています。

            sudo yum install supervisor
            
            [program:node-app]
            command=/usr/local/bin/node app.js
            autostart=true
            autorestart=true
            
            sudo supervisorctl reread
            
            sudo supervisorctl start node-app
            

            LaunchControlは、macOSおよびLinux用のinitシステムです。LaunchControlは、自動的に再起動する機能を含む、多くの機能を提供しています。

            1. LaunchControlをインストールします。
            sudo brew install launchctl
            
            <?xml version="1.0" encoding="UTF-8"?>
            <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTD/plist.dtd">
            <plist version="1.0">
              <dict>
                <key>Label</key>
                <string>com.example.node-app</string>
                <key>ProgramArguments</key>
                <array>
                  <string>/usr/local/bin/node</string>
                  <string>app.js</string>
                </array>
                <key>RunAtLoad</key>
                <true/>
                <key>AutoRestart</key>
                <true/>
              </dict>
            </plist>
            
            sudo mv node-app.plist /Library/LaunchAgents/
            
            sudo launchctl load /Library/LaunchAgents/node-app.plist
            

            CentOSでNode.jsサーバーを自動的に再起動するには、さまざまな方法があります。上記に示した方法はほんの一例です。自分のニーズに合った方法を選択してください。


            node.js centos forever


            Node.jsアプリケーションのデバッグに関するリソース

            Node. jsアプリケーションのデバッグには、さまざまなツールを使用できます。Node. js REPL:Node. js REPLは、コードを実行して結果を対話的に確認できる強力なツールです。Chrome DevTools:Chrome DevToolsは、Node...


            プロキシ環境下で npm install を実行する方法

            プロキシサーバーのURLとポート番号を確認します。コマンドプロンプトまたはターミナルを開きます。以下のコマンドを実行します。例:プロキシサーバーのURLが proxy. example. com でポート番号が 8080 の場合npm install コマンドを実行します。...


            Node.js アプリケーションで Redis クライアント ライブラリを使って Memorystore に接続する方法

            Memorystore を本番環境で使用する利点パフォーマンスの向上: Memorystore はインメモリデータストアであるため、データベースに比べてデータアクセス速度が非常に速くなります。スケーラビリティ: Memorystore は、ワークロードの要求に合わせて自動的にスケーリングできます。...


            HTTP Basic 認証のサンプルコード:Node.js、Express、基本的な認証

            HTTP Basic認証は、ユーザー名とパスワードのペアを用いてユーザーを認証するシンプルな方法です。これは、ブログやフォーラムなどの管理画面のような、限られたアクセスを許可したいリソースに最適です。必要なものこのチュートリアルを始める前に、以下のものが必要です。...


            Node.jsでJSONファイルの読み書きのパフォーマンスを向上させる方法

            fs モジュールを使うNode. js の標準ライブラリである fs モジュールを使うと、ファイルシステムへのアクセスが可能になります。このモジュールを使って、JSON ファイルを読み書きすることができます。読み込み書き込みJSON ライブラリを使う...


            SQL SQL SQL SQL Amazon で見る



            AWS Lambda を使って Node.js アプリケーションを永続的に実行する

            プロセスマネージャーは、Node. jsアプリケーションをデーモン化し、システム起動時に自動的に起動したり、クラッシュ時に自動的に再起動したりすることができます。代表的なプロセスマネージャーPM2 - PM2: URL PM2 は、Node