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

JavaScript
この記事は約5分で読めます。

 

みなさんこんにちは!

 

イザナギです!

 

いや〜、関東は暑いっすねwww

 

今年関東で初めて夏を迎えた分けですが、

 

東北出身者の私にとっては暑すぎる!!

 

しかもまだ7月だというのに…

 

これから暑さも本番に入って来ることを考えると、気が滅入る…

 

まあでも、元気にやっていきましょうw!

 

 

さてここからが本題です。

 

今回は「PM2」を使って、サーバー再起動時にnode(Nuxt)アプリの再起動設定をしてみた話をします。

 

 

 

PM2とは?

 

PM2 - Home
Advanced process manager for production Node.js applications. Load balancer, logs facility, startup script, micro service management, at a glance.

 

 

PM2とはNode.jsのプロセス管理ツールです。

 

Nodeアプリケーションのプロセスの監視、モニタリングをすることができます。

 

Nodeアプリのデーモン化も可能!

 

プロセスの監視を行なっているので、サーバーなどが停止した時にNodeアプリケーションを自動で再起動させることもできるみたいです!

 

しかもその設定が結構楽!

 

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

 

今まで、私は「forever」を使ってNuxtで作成したWebアプリをデーモン化していました。

 

しかし、私の借りているVPSが定期的にメンテナンス入り、VPSが再起動してしまいます。

 

再起動するたびに、「forever start -c “yarn eun start” . /」ってコマンド打つの疲れるんですよね…

 

「initd-forever」というパッケージを利用すれば、自動再起動設定ができるらしいのですが、何回挑戦しても自動起動設定が反映されない(ystemctl 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
How to deploy Nuxt.js with PM2 cluster mode enabled?

 

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

 

 

「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
Advanced process manager for production Node.js applications. Load balancer, logs facility, startup script, micro service management, at a glance.

 

最後に「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】
OSSの【PM2】について、概要や動作確認、機能、特徴などを解説。OpenStandiaは、NRI(野村総合研究所)のオープンソースソフトウェアサポートサービスです。対象OSS約60種類以上!

 

すごいな!

 

 

PM2を導入して間もないので、これからまた何かありましたら、その都度記事にしていきたいと思います!

 

それでは今回はここで筆を置かせていただきます!

 

最後まで記事をご覧いただきありがとうございました!

コメント

タイトルとURLをコピーしました