1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Next.js を PM2 で Windows サービス化する手順

1
Posted at

Windows環境でNext.jsアプリを、PC起動時(ログイン前)に自動実行するため、Windowsサービス化 することで、OS起動時(ログイン前)に自動的にアプリが立ち上がる環境を構築します。

PM2とは、Node.jsアプリケーションの実行を管理するツールです。なんかすごくいろいろできるみたいです。
通常、PM2には pm2 startup という自動起動コマンドがありますが、Windowsには対応していないそうです。

ハマった点としては、pm2へのコマンドがWindowsのパス解釈がうまくいかなかった点です。最終的には設定ファイルを作るという対応でうまくいきました。

1. 事前準備

Next.jsを本番用にビルドしておきます。

PowerShell

npm run build

2. PM2 設定ファイルの作成

プロジェクトのルートに ecosystem.config.js を作成します。Windows特有のパス問題を避けるため、直接バイナリを指定する必要がありました。

module.exports = {
  apps: [
    {
      name: "next-app",
      script: "./node_modules/next/dist/bin/next",
      args: ["start"],
      env: {
        NODE_ENV: "production",
        PORT: 3000
      }
    }
  ]
};

3. PM2 サービスツールのインストール

管理者権限のPowerShellで実行します。

# サービス化ツールのインストール
npm install -g pm2-windows-service

# サービスのインストール実行
# 質問には全て 'y' で答え、PM2_HOME はデフォルト(C:\Users\ユーザー名\.pm2)でOK
pm2-service-install

4. 環境変数の設定 (重要)

Windowsサービスが設定ファイルを読み込めるよう、システム環境変数を設定します。

# 管理者権限のPowerShellで実行
[Environment]::SetEnvironmentVariable("PM2_HOME", "C:\Users\あなたのユーザー名\.pm2", "Machine")

※実行後、PCを再起動するかサービスを再起動して反映させます。

# 2. Windows サービスを一度再起動して、設定を読み込ませる
net stop pm2 
net start pm2

5. アプリの起動と保存

サービスとして動いているPM2にアプリを登録し、状態を保存します。

# アプリの起動
pm2 start ecosystem.config.js

# 現在の状態を保存(これが次回起動時に読み込まれる)
pm2 save

6. 確認方法

  • サービスの状態確認: services.msc を開き、サービス名 PM2 が「実行中」かつ「自動」であることを確認。
  • PM2の状態確認: pm2 list でアプリが online であることを確認。
  • 再起動テスト: 可能であればPCを再起動し、ログイン画面の状態で 別の端末からブラウザでアクセスできるか確認してください。

7. アンインストール手順

必ず 管理者権限の PowerShell で以下の順に実行してください。

1. アプリの停止と削除

まず、PM2 が管理している Next.js アプリを停止・リストから削除します。

pm2 stop all
pm2 delete all
pm2 save

2. Windows サービスのアンインストール

次に、Windows のサービス一覧(services.msc)から PM2 を削除します。

pm2-service-uninstall
  • これで Windows サービス一覧から「PM2」が消えます。

3. 環境変数の削除

システムに設定した PM2_HOME を削除します。

[Environment]::SetEnvironmentVariable("PM2_HOME", $null, "Machine")

4. ツールのアンインストール

PM2 本体やサービス化ツールを Windows から削除します。

npm uninstall -g pm2-windows-service
npm uninstall -g pm2

5. 設定ファイルの掃除

設定ファイルやログが残っているディレクトリ(.pm2)を削除して完全にリセットします。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?