フロントエンド開発といえば。
react アプリの初期化( npm init vite@latest <アプリ名> )

プロセスマネージャー 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 が自動生成されますので編集します。

module.exports = {
  apps: [
    {
      name: 'NextAppName',
      exec_mode: 'cluster',
      instances: 'max',
      script: 'node_modules/next/dist/bin/next',
      args: 'start',
      env_local: {
        APP_ENV: 'local' // APP_ENV=local
      },
      env_dev: {
        APP_ENV: 'dev' // APP_ENV=dev
      },
      env_prod: {
        APP_ENV: 'prod' // APP_ENV=prod
      }
    }
  ]
}

以下のコマンドでプロセスを起動します

pm2 start ecosystem.config.js

● pm2のコマンド

プロセスの状態を見る(簡易)

pm2 ls

プロセスの状態を見る(詳細)

pm2 ls -m

「nextjs」という名前のアプリを停止する

pm2 stop nextjs

「nextjs」という名前のアプリをプロセスリストから削除する

pm2 delete nextjs

「nextjs」という名前のアプリのプロセス返す(クラスターにて複数プロセスが立ち上がっている場合は全てのプロセス ID を返す)

pm2 pid nextjs

「nextjs」という名前のアプリをリスタートする

pm2 restart app_name

● pm2 を サーバーマシン起動時に自動実行するように設定する

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

pm2 startup

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

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

pm2 を自動起動させる

pm2 save

● GRACEFUL START/SHUTDOWN

https://pm2.keymetrics.io/docs/usage/signals-clean-restart/

● クラスター化

module.exports = {
  apps : [{
    script    : "api.js",
    // クラスター化 
    exec_mode : "cluster" ,
    instances : "max",
  }]
}

参考: https://kazuhira-r.hatenablog.com/entry/2022/01/02/151132

関連エントリー

No.1907
04/25 17:05

edit

next.js