PM2でのサーバー再起動時の自動設定が楽だった件(Nuxt)

みなさんこんにちは!
イザナギです!
いや〜、関東は暑いっすねwww今年関東で初めて夏を迎えた分けですが、東北出身者の私にとっては暑すぎる!!
しかもまだ7月だというのに...
これから暑さも本番に入って来ることを考えると、気が滅入る....
まあでも、元気にやっていきましょうw!
さてここからが本題です。
今回は「PM2」を使って、サーバー再起動時にnode(Nuxt)アプリの再起動設定をしてみた話をします。

PM2とは?

PM2 - Home
PM2とはNode.jsのプロセス管理ツールです。
Nodeアプリケーションのプロセスの監視、モニタリングをすることができます。
Nodeアプリのデーモン化も可能!
プロセスの監視を行なっているので、サーバーなどが停止した時にNodeアプリケーションを自動で再起動させることもできるみたいです!
しかもその設定が結構楽!

デーモン化ツールを「forever」から変更する

今まで、私は「forever」を使ってNuxtで作成したWebアプリをデーモン化していました。
しかし、私の借りているVPSが定期的にメンテナンス入り、VPSが再起動してしまいます。
再起動するたびに、「forever start -c & "yarn run start" . /」ってコマンド打つの疲れるんですよね...
「initd-forever」というパッケージを利用すれば、自動再起動設定ができるらしいのですが、何回挑戦しても自動起動設定が反映されない
(systemctl list-unit-files -t serviceで確認しても「generate」のまま)
なぜだ!
試行錯誤しても変わらなかったので、心機一転を含めて新たなパッケージ「PM2」を使用してみようと思います。今までありがとう!
「forever」感謝の気持ちを込め「yarn global remove forever initd-forever 」をしました。

PM2で自動再起動設定

PM2をインストール

さて、早速PM2をインストールしていきましょう!
公式サイトにある通り、以下のコマンドでダウンロード可能です。


// npmの場合 
npm install pm2 -g 
// yarnの場合 
yarn global add pm2 --prefix /usr/local

Nuxtの公式サイトにも設定手順が乗ってましたので、それに則って設定していきます。
Deploy Nuxt using PM2

設定ファイルをプロジェクトに追加

「ecosystem.config.js」というファイルを作成し、プロジェクト配下のディレクトリに配置するみたいです。
記載内容は以下の通り。


module.exports = {
    apps: [
      {
        name: 'アプリケーション名',
        exec_mode: 'cluster',
        instances: 'max', // Or a number of instances
        script: './node_modules/nuxt/bin/nuxt.js',
        args: 'start'
      }
    ]
}

変更する点としてはnameのパラメータぐらいですかね?

PM2のデーモン化

まずは、Nuxtアプリをビルドするみたいですね。


// npmの場合
npm run build
// yarnの場合
yarn build

ビルドした後に「pm2 start」とコマンドを打つとデーモン化できます!


pm2 start

起動しているかの確認は「pm2 ls」でできます。

再起動設定

再起動設定するのも簡単で、以下のコマンドを利用します。


pm2 startup [system]   // centOS8の場合pm2 startup centos

[system]の部分は自分の環境に合わせてください。
以下URLに、設定方法が載っています。
PM2 - Startup Script
最後に「pm2 save」を実行します。


pm2 save

これで、再起動設定終了です。
CentOSの場合、以下コマンドで「pm2-ユーザー名.service」が「enabled」になっていれば成功です!


systemctl list-unit-files -t service

これで、再起動設定は終了なので自分でサーバーを再起動してみまして試してみましょう。
再起動して少し経つと、Nuxt(node)アプリも再起動しているはずです。

まとめ

今回は「PM2」でサーバー再起動時のnode(Nuxt)アプリの再起動設定を記事にしてみました。
設定は結構楽でしたね!ちなみに、以下の記事によるとAmazonであったり、Microsoftであったり有名企業の顧客になっているらしいです。
PM2 最新情報 | OSSサポートのOpenStandia™【NRI】
すごいな!
PM2を導入して間もないので、これからまた何かありましたら、その都度記事にしていきたいと思います!
それでは今回はここで筆を置かせていただきます!最後まで記事をご覧いただきありがとうございました!

関連記事(AI判定作成中)