フロントエンド開発といえば。
react アプリの初期化( npm init vite@latest <アプリ名> ):タグ「next.js」での検索

プロセスマネージャー pm2で next.js を動作させる

● 1. pm2 のインストール

-g オプションをつけてグローバルにインストールします

npm install pm2@latest -g

バージョンを確認します

pm2 --version
5.3.0

● 2-A. ワンライナーでpm2からnext.jsを起動する

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

● 2-B. 設定ファイルを作成して pm2からnext.jsアプリを起動する

・pm2の設定ファイルを作成する

設定ファイル自動生成コマンド( simple )

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のログを表示する

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 を サーバーマシン起動時に自動実行するように設定する

pm2 を自動起動させる( centos )

pm2 startup

実行後に表示されるコマンドをルート権限(または sudo できるユーザー)から実行します

● pm2自動起動時の起動プロセスを保存

pm2 を自動起動させる

pm2 save

● GRACEFUL RESTART / START / SHUTDOWN

https://pm2.keymetrics.io/docs/usage/signals-clean-restart/#cleaning-states-and-jobs
https://pm2.keymetrics.io/docs/usage/signals-clean-restart/

● クラスター化 ( 2core以上のcpuの場合にクラスター化することができます)

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ログのローテーション

pm2-logrotate のインストール

pm2 install pm2-logrotate  

pm2-logrotate の設定表示

pm2 get pm2-logrotate
No.1907
09/24 23:10

edit

next.js