PM2、Forever、systemd、cron:Node.jsサーバーを自動起動する4つの方法
Node.jsサーバーを自動起動する方法
PM2を使う
PM2は、Node.jsアプリケーションを管理するためのプロセスマネージャーです。PM2を使うと、簡単にサーバーを自動起動することができます。
PM2で自動起動する方法
- PM2をインストールします。
npm install -g pm2
- PM2を使って、サーバーを起動します。
pm2 start index.js --name my-app
このコマンドは、index.js
ファイルにあるNode.jsアプリケーションを my-app
という名前で起動します。
- PM2を自動起動するように設定します。
pm2 startup
このコマンドは、PM2をシステムの起動時に自動起動するように設定します。
Foreverは、Node.jsプロセスを監視し、クラッシュした場合に自動的に再起動するツールです。Foreverを使って、サーバーを自動起動することもできます。
Foreverで自動起動する方法
npm install -g forever
forever start index.js
systemdは、Linux用のシステムサービスマネージャーです。systemdを使って、Node.jsサーバーを自動起動することができます。
systemdで自動起動する方法
- systemdサービスファイルを作成します。
[Unit]
Description=My Node.js App
After=network.target
[Service]
User=your-user
WorkingDirectory=/path/to/your/app
ExecStart=/usr/bin/node /path/to/your/app/index.js
[Install]
WantedBy=multi-user.target
このファイルは、/etc/systemd/system/my-app.service
という名前で保存する必要があります。
sudo systemctl enable my-app.service
sudo systemctl start my-app.service
cronを使う
cronは、定期的にコマンドを実行するユーティリティです。cronを使って、Node.jsサーバーを定期的に起動することができます。
- cronジョブを作成します。
0 0 * * * /path/to/your/node/script.sh
このジョブは、毎日午前0時に /path/to/your/node/script.sh
というスクリプトを実行します。
script.sh
ファイルを作成します。
#!/bin/bash
node /path/to/your/app/index.js
使用する方法は、ニーズによって異なります。
- PM2は、Node.jsアプリケーションを管理するための包括的なツールが必要な場合に適しています。
- Foreverは、Node.jsプロセスを監視して再起動する必要がある場合に適しています。
- systemdは、LinuxシステムでNode.jsサーバーを自動起動する必要がある場合に適しています。
上記以外にも、Node.jsサーバーを自動起動する方法があります。自分に合った方法を見つけてください。
pm2 start index.js --name my-app
Foreverを使う場合
forever start index.js
systemdを使う場合
[Unit]
Description=My Node.js App
After=network.target
[Service]
User=your-user
WorkingDirectory=/path/to/your/app
ExecStart=/usr/bin/node /path/to/your/app/index.js
[Install]
WantedBy=multi-user.target
0 0 * * * /path/to/your/node/script.sh
**script.sh` ファイル
#!/bin/bash
node /path/to/your/app/index.js
注意事項
- 上記のコードはあくまでサンプルです。ご自身の環境に合わせて変更する必要があります。
- Node.jsサーバーを自動起動する前に、ファイアウォール設定を確認する必要があります。
- Node.jsサーバーを自動起動する場合は、セキュリティ対策をしっかりと行う必要があります。
Node.jsサーバーを自動起動するその他の方法
Initスクリプトは、オペレーティングシステムの起動時に実行されるスクリプトです。Initスクリプトを使って、Node.jsサーバーを自動起動することができます。
Initスクリプトで自動起動する方法
- Initスクリプトを作成します。
#!/bin/bash
# Node.jsサーバーを起動するコマンド
node /path/to/your/app/index.js
このスクリプトは、/etc/init.d/my-app
という名前で保存する必要があります。
- Initスクリプトに実行権限を与えます。
sudo chmod +x /etc/init.d/my-app
- Initスクリプトをシステム起動時に実行するように設定します。
sudo update-rc.d my-app defaults
LaunchAgentを使う (macOSの場合)
LaunchAgentは、macOS用の起動エージェントです。LaunchAgentを使って、Node.jsサーバーを自動起動することができます。
LaunchAgentで自動起動する方法
- LaunchAgentファイルを作成します。
<?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.my-app</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/node</string>
<string>/path/to/your/app/index.js</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
このファイルは、/Library/LaunchAgents/com.example.my-app.plist
という名前で保存する必要があります。
launchctl load /Library/LaunchAgents/com.example.my-app.plist
Windowsサービスを使う (Windowsの場合)
Windowsサービスは、Windows用のサービスです。Windowsサービスを使って、Node.jsサーバーを自動起動することができます。
Windowsサービスで自動起動する方法
- Windowsサービスを作成します。
- スタートメニューを開き、「サービス」と検索します。
- 「サービス」アプリを開き、「アクション」メニューから「新規」を選択します。
- サービスのプロパティを設定します。
- サービスがログオンユーザーとして実行されるように設定します。
- サービスのスタートアップの種類を「自動」に設定します。
- 実行可能ファイルの場所を
node.exe
に設定します。 - 引数欄に
path/to/your/app/index.js
を入力します。 - 「適用」をクリックして、「OK」をクリックします。
node.js