運用サーバーで 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 <username> --hp /home/<username>
ここでは、は、最初に PM2 をセットアップしたユーザーのユーザー名に置き換える必要があります。これにより、PM2 プロセスが正しいユーザーのホーム ディレクトリに確実にリンクされます。
前のステップの出力で提供されたコマンドをコピーして実行します。例:
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
Set this in a global configuration file, like /etc/environment, to make it persistent across sessions.
Once PM2 is set up as a service, users can manage processes using standard PM2 commands. However, depending on the permissions and user roles, some commands might require sudo access. For example:
sudo pm2 list
This command will list the processes managed by the system-wide PM2 service, making it easier for administrators and developers to collaborate on server management.
Setting up PM2 as a system-wide service on your Ubuntu instance ensures that your Node.js applications are robustly managed and accessible to all users on the server. This setup is particularly useful in environments with multiple users or automated deployment processes, providing a reliable and centralized way to manage applications.
By following the steps outlined in this guide, you can ensure that PM2 is available to all users, your processes are automatically restarted after system reboots, and logs are easily accessible. This not only simplifies server management but also enhances the reliability of your applications in production.
Happy coding!
以上がUbuntu インスタンスでの PMor マルチユーザー アクセスのセットアップの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。