実稼働サーバーで Node.js アプリケーションを管理するには、多くの場合、アプリケーションがスムーズに実行され、クラッシュから自動的に回復するようにプロセス マネージャーが必要になります。 PM2 は Node.js の最も人気のあるプロセス マネージャーの 1 つであり、プロセス監視、ログ管理、クラスター モードなどの強力な機能を提供します。
Google Cloud Ubuntu インスタンスでアプリケーションを実行している場合、PM2 プロセスが開始したユーザーにのみ表示される状況が発生する可能性があります。これは、サーバーに開発者、システム管理者、自動展開スクリプトなどの複数のユーザーがいる場合に問題になる可能性があります。このブログ投稿では、PM2 をシステム全体のサービスとして構成し、サーバー上のすべてのユーザーがアクセスできるようにする手順を説明します。
デフォルトでは、PM2 はそれを開始したユーザーの下でプロセスとして実行されます。これは、1 人のユーザーとしてサーバーに SSH 接続して PM2 プロセスを開始した場合、そのプロセスは SSH 経由でログインする別のユーザーには表示されないことを意味します。これに対処するために、PM2 をシステム レベルでサービスとして実行するように構成できます。このアプローチにはいくつかの利点があります:
始める前に、以下のものがあることを確認してください:
すべてのユーザーが PM2 にアクセスできるようにするには、PM2 をグローバルにインストールする必要があります。 npm:
を使用して PM2 をグローバルにインストールできます。
sudo npm install -g pm2
このコマンドは PM2 をグローバル npm ディレクトリにインストールし、システム全体で利用できるようにします。
次に、PM2 をサービスとして実行するように設定する必要があります。これにより、PM2 は特定のユーザー セッションに関連付けられるのではなく、システム レベルでプロセスを管理できるようになります。
次のコマンドを実行して、PM2 に必要な起動スクリプトを生成します:
pm2 startup
このコマンドは、Ubuntu インスタンスで使用される init システム (通常は systemd) を検出し、PM2 をシステム全体のサービスとして構成するために sudo で実行する必要があるコマンドを提供します。出力は次のようになります:
[PM2] Init System found: systemd [PM2] To setup the Startup Script, copy/paste the following command: sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u--hp /home/
ここで、
前のステップの出力で提供されたコマンドをコピーして実行します。例えば:
sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u johndoe --hp /home/johndoe
このコマンドは、正しい環境変数とユーザー コンテキストを使用して PM2 を開始する systemd サービスを作成します。
再起動後も保持したいプロセスが既に PM2 で実行されている場合は、現在のプロセス リストを保存する必要があります。これにより、PM2 がシステム起動時にプロセスを復元するために使用するダンプ ファイルが作成されます:
pm2 save
pm2 save コマンドは、管理対象プロセスの現在のリストを ~/.pm2/dump.pm2 の JSON ファイルに保存します。このファイルは PM2 の起動時に自動的にロードされ、再起動後にアプリケーションが確実に復活します。
システムの起動時に PM2 が自動的に開始されるようにするには、サービスを有効にする必要があります:
sudo systemctl enable pm2-johndoe
johndoe を適切なユーザー名に置き換えます。このコマンドは PM2 サービスを有効にし、システムが起動するたびにサービスが開始されるようにします。
PM2 がシステム全体のサービスとして構成されたため、サーバー上のすべてのユーザーが PM2 にアクセスできるようになります。プロセスのステータスを確認したり、プロセスを一覧表示するには、どのユーザーも次を実行できます:
pm2 list
このコマンドは、どのユーザーがログインしているかに関係なく、システム全体の PM2 サービスによって管理されているプロセスのリストを表示します。
複数のユーザーが PM2 ログにアクセスできるようにする必要がある場合は、ファイルのアクセス許可を調整するか、ログを共有ディレクトリに保存するように PM2 を構成する必要がある場合があります。これにより、すべてのユーザーが PM2 で実行されているプロセスのログを表示および管理できるようになります。
ログ ファイル ディレクトリを変更するには、次の環境変数を使用できます:
export PM2_HOME=/path/to/shared/pm2/home
これをグローバル設定ファイル (/etc/environment など) に設定して、セッション間で永続化します。
PM2 をサービスとして設定すると、ユーザーは標準の PM2 コマンドを使用してプロセスを管理できるようになります。ただし、権限とユーザーの役割によっては、一部のコマンドで sudo アクセスが必要になる場合があります。例えば:
sudo pm2 list
このコマンドは、システム全体の PM2 サービスによって管理されているプロセスを一覧表示し、管理者と開発者がサーバー管理で共同作業することを容易にします。
PM2 を Ubuntu インスタンス上でシステム全体のサービスとして設定すると、Node.js アプリケーションが堅牢に管理され、サーバー上のすべてのユーザーがアクセスできるようになります。この設定は、複数のユーザーまたは自動化された展開プロセスが存在する環境で特に役立ち、アプリケーションを管理するための信頼性の高い一元的な方法を提供します。
このガイドで説明されている手順に従うことで、PM2 をすべてのユーザーが利用できるようになり、システムの再起動後にプロセスが自動的に再起動され、ログに簡単にアクセスできるようになります。これにより、サーバー管理が簡素化されるだけでなく、運用環境でのアプリケーションの信頼性も向上します。
コーディングを楽しんでください!
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3