PM2を有効にしてシステム起動時にNode.jsアプリを自動起動する方法


PM2は、Node.js用の強力で、広く使用されており、機能が豊富で、本番環境に対応したプロセスマネージャーです。サーバーが起動/再起動するたびに管理するプロセスを使用してPM2を再起動することが重要です。 PM2の重要な機能の1つは、起動スクリプト(サーバーのデフォルトの初期化システムに基づいて動的に生成される)のサポートです。このスクリプトは、サーバーが再起動するたびにPM2とプロセスを再起動します。

[あなたも好きかもしれません:本番サーバーでNode.jsアプリを実行するためにPM2をインストールする方法]

startスクリプトは、PM2をinitシステムのサービスとして設定します。サーバーが再起動すると、PM2が自動的に再起動し、PM2が管理しているすべてのNode.jsアプリケーション/プロセスを再起動します。

この記事では、Node.jsアプリを確実に管理するためのサービスとしてPM2をデプロイする方法を紹介します。このガイドでは、テストシステムはsystemdサービスとシステムマネージャーを使用します。この記事のすべてのコマンドはrootとして実行されます(必要に応じて、特権を持つユーザーがsudoを呼び出すために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スタートアップスクリプトジェネレータ。