PM2 を有効にしてシステム起動時に Node.js アプリを自動起動する方法
PM2 は、強力で広く使用されており、機能が豊富な、本番環境に対応した Node.js 用のプロセス マネージャーです。サーバーが起動/再起動するたびに、管理するプロセスを使用してPM2 を再起動することが重要です。 PM2 の重要な機能の 1 つは、サーバーが再起動されるたびにPM2 とプロセスを再起動する起動スクリプト (サーバー上のデフォルトの init システムに基づいて動的に生成される) のサポートです。
開始スクリプトは、PM2 を init システムの下のサービスとしてセットアップします。サーバーが再起動すると、PM2 が自動的に再起動され、管理しているすべての Node.js アプリケーション/プロセスが再起動されます。
この記事では、PM2 をサービスとしてデプロイして、Node.js アプリを確実に管理する方法を説明します。このガイドでは、 テスト システムはsystemd サービスとシステム マネージャーを使用します。この記事のすべてのコマンドはrootとして実行されます(必要に応じて、それを呼び出す権限を持つユーザーがsudoを使用します)。
Init システム用の PM2 開始スクリプトを生成する
PM2 は、Linux システム上のデフォルトの init システム (自動検出可能) と連携して起動スクリプトを生成し、PM2 を構成するように設計されています。 > システム起動時に再起動できるサービスとして。
起動スクリプトを生成するには、root で次のコマンドを実行するだけです。
pm2 startup
startup サブコマンドは、PM2 に利用可能な init システムを検出し、構成を生成し、スタートアップ システムを有効にするように指示します。
次のように init システムを明示的に指定することもできます。
pm2 startup systems
PM2 スタートアップ サービスが systemd で稼働していることを確認するには、次のコマンドを実行します (pm2-root.service を実際のサービスに置き換えます)サービスの名前を確認するには、前のコマンドの出力を確認してください)。
systemctl status pm2-root.service
Node.js アプリケーション/プロセスを開始する
次に、次のように PM2 を使用して Node.js アプリケーションを起動します。すでに起動して実行しており、PM2 経由で起動している場合は、この手順をスキップできます。
cd /var/www/backend/api-v1-staging/
pm2 start src/bin/www.js -n api-service-staging
次に、PM2 を使用して管理するプロセスの現在のリストを登録/保存し、システム起動時に (予想されるたび、または予期しないサーバーの再起動のたびに) プロセスが再起動されるようにする必要があります。次のコマンドを実行します。
pm2 save
起動時に PM2 が Node.js アプリを自動起動することを確認する
最後に、セットアップが正常に機能しているかどうかをテストする必要があります。システムを再起動し、すべての Node.js プロセスが PM2 で実行されているかどうかを確認します。
pm2 ls
or
pm2 status
次のコマンドを実行すると、プロセスを手動で復活させることができることに注意してください。
pm2 resurrect
スタートアップシステムを無効にする
図に示すようにunstartup サブコマンドを実行すると、スタートアップ システムを無効にできます。
pm2 unstartup
OR
pm2 startup systemd
起動スクリプトを更新するには、まず無効にしてから、図に示すように再度起動します。
pm2 unstartup
pm2 startup
参照: PM2 起動スクリプト ジェネレーター。