-g オプションをつけてグローバルにインストールします
npm install pm2@latest -g
バージョンを確認します
pm2 --version
5.3.0
npm run start コマンドを pm2 から実行します。
cd <nextjsアプリのディレクトリ >
pm2 start --name "my-next-app" npm -- start
npm run start :staging コマンドといった任意のコマンドを pm2 から実行する場合はこちら。
pm2 start --name "my-next-app" npm -- run start:staging
pm2 init simple
pm2 init
ecosystem.config.js が自動生成されますので編集します。
ecosystem.config.jsだとわかりにくい場合は /etc/pm2.d/pm2.config.js などに作成するのもいいでしょう。
cd /etc
mkdir pm2.d
chown kusanagi pm2.d
chgrp kusanagi pm2.d
module.exports = {
apps: [
{
name: 'MyAppName',
script: '/path/to/folder/server.js',
env: {
HOSTNAME: "0.0.0.0",
PORT: 3000,
},
}
]
}
注意: script に指定した ファイルを node で起動するので、npm run start は指定できません。
next.js の場合だと standaloneモードで buildして server.js を指定するといいでしょう
script: '/path/to/folder/server.js',
設定ファイルの書き方 : https://pm2.keymetrics.io/docs/usage/application-declaration/
以下のコマンドでプロセスを起動します
pm2 start ecosystem.config.js
ファイル名を変更している場合はフルパスで指定します。
pm2 start /etc/pm2.d/pm2.config.js
pm2のログを表示する
pm2 log
プロセスの状態を見る(簡易)
pm2 ls
プロセスの状態を見る(詳細)
pm2 ls -m
全てのプロセスの停止 / 削除
pm2 stop all
pm2 delete all
「nextjs」という名前のアプリを停止する
pm2 stop nextjs
「nextjs」という名前のアプリをプロセスリストから削除する
pm2 delete nextjs
「nextjs」という名前のアプリのプロセス返す(クラスターにて複数プロセスが立ち上がっている場合は全てのプロセス ID を返す)
pm2 pid nextjs
「nextjs」という名前のアプリをリスタートする
reload を使用するとゼロダウンタイムでリスタートしようとします。(必ずそうなるわけではありませんが。こちらのコマンドがおすすめです)
pm2 reload app_name
restart コマンドはreloadよりダウンタイムが発生しやすいコマンドです。
pm2 restart app_name
pm2 を自動起動させる( centos )
pm2 startup
実行後に表示されるコマンドをルート権限(または sudo できるユーザー)から実行します
pm2 を自動起動させる
pm2 save
https://pm2.keymetrics.io/docs/usage/signals-clean-restart/#cleaning-states-and-jobs
https://pm2.keymetrics.io/docs/usage/signals-clean-restart/
https://pm2.keymetrics.io/docs/usage/cluster-mode/
module.exports = {
apps : [{
script : "api.js",
// クラスター化
exec_mode : "cluster" ,
instances : "max",
}]
}
参考: https://kazuhira-r.hatenablog.com/entry/2022/01/02/151132
pm2-logrotate のインストール
pm2 install pm2-logrotate
pm2-logrotate の設定表示
pm2 get pm2-logrotate