みなさんこんにちは!
イザナギです!
いや〜、関東は暑いっすね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を導入して間もないので、これからまた何かありましたら、その都度記事にしていきたいと思います!
それでは今回はここで筆を置かせていただきます!最後まで記事をご覧いただきありがとうございました!