「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Ubuntu インスタンスでの PMor マルチユーザー アクセスのセットアップ

Ubuntu インスタンスでの PMor マルチユーザー アクセスのセットアップ

2024 年 8 月 28 日に公開
ブラウズ:796

Setting Up PMor Multi-User Access on Ubuntu Instance

実稼働サーバーで Node.js アプリケーションを管理するには、多くの場合、アプリケーションがスムーズに実行され、クラッシュから自動的に回復するようにプロセス マネージャーが必要になります。 PM2 は Node.js の最も人気のあるプロセス マネージャーの 1 つであり、プロセス監視、ログ管理、クラスター モードなどの強力な機能を提供します。

Google Cloud Ubuntu インスタンスでアプリケーションを実行している場合、PM2 プロセスが開始したユーザーにのみ表示される状況が発生する可能性があります。これは、サーバーに開発者、システム管理者、自動展開スクリプトなどの複数のユーザーがいる場合に問題になる可能性があります。このブログ投稿では、PM2 をシステム全体のサービスとして構成し、サーバー上のすべてのユーザーがアクセスできるようにする手順を説明します。

PM2 をシステム全体のサービスとして構成する理由

デフォルトでは、PM2 はそれを開始したユーザーの下でプロセスとして実行されます。これは、1 人のユーザーとしてサーバーに SSH 接続して PM2 プロセスを開始した場合、そのプロセスは SSH 経由でログインする別のユーザーには表示されないことを意味します。これに対処するために、PM2 をシステム レベルでサービスとして実行するように構成できます。このアプローチにはいくつかの利点があります:

  • プロセスの可視性: サーバー上のすべてのユーザーが PM2 プロセスを表示および管理できます。
  • 自動起動: PM2 はシステム起動時に自動的に起動し、アプリケーションが常に実行されるようにします。
  • 集中管理: ログとプロセスの状態が集中管理されるため、アプリケーションの管理が容易になります。

前提条件

始める前に、以下のものがあることを確認してください:

  1. Google Cloud Ubuntu インスタンス。
  2. Node.js と npm がインスタンスにインストールされました。
  3. PM2 はグローバルにインストールされています。

ステップ 1: PM2 をグローバルにインストールする

すべてのユーザーが PM2 にアクセスできるようにするには、PM2 をグローバルにインストールする必要があります。 npm:
を使用して PM2 をグローバルにインストールできます。

sudo npm install -g pm2

このコマンドは PM2 をグローバル npm ディレクトリにインストールし、システム全体で利用できるようにします。

ステップ 2: PM2 をシステム全体のサービスとして設定する

次に、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/

ここで、 は、最初に PM2 をセットアップしたユーザーのユーザー名に置き換える必要があります。これにより、PM2 プロセスが正しいユーザーのホーム ディレクトリに確実にリンクされます。

ステップ 3: 生成されたコマンドを実行する

前のステップの出力で提供されたコマンドをコピーして実行します。例えば:

sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u johndoe --hp /home/johndoe

このコマンドは、正しい環境変数とユーザー コンテキストを使用して PM2 を開始する systemd サービスを作成します。

ステップ 4: PM2 プロセス リストを保存する

再起動後も保持したいプロセスが既に PM2 で実行されている場合は、現在のプロセス リストを保存する必要があります。これにより、PM2 がシステム起動時にプロセスを復元するために使用するダンプ ファイルが作成されます:

pm2 save

pm2 save コマンドは、管理対象プロセスの現在のリストを ~/.pm2/dump.pm2 の JSON ファイルに保存します。このファイルは PM2 の起動時に自動的にロードされ、再起動後にアプリケーションが確実に復活します。

ステップ 5: 起動時に PM2 サービスを開始できるようにする

システムの起動時に PM2 が自動的に開始されるようにするには、サービスを有効にする必要があります:

sudo systemctl enable pm2-johndoe

johndoe を適切なユーザー名に置き換えます。このコマンドは PM2 サービスを有効にし、システムが起動するたびにサービスが開始されるようにします。

ステップ 6: 任意のユーザーで PM2 にアクセスする

PM2 がシステム全体のサービスとして構成されたため、サーバー上のすべてのユーザーが PM2 にアクセスできるようになります。プロセスのステータスを確認したり、プロセスを一覧表示するには、どのユーザーも次を実行できます:

pm2 list

このコマンドは、どのユーザーがログインしているかに関係なく、システム全体の PM2 サービスによって管理されているプロセスのリストを表示します。

ステップ 7: 共有ログの追加構成 (オプション)

複数のユーザーが PM2 ログにアクセスできるようにする必要がある場合は、ファイルのアクセス許可を調整するか、ログを共有ディレクトリに保存するように PM2 を構成する必要がある場合があります。これにより、すべてのユーザーが PM2 で実行されているプロセスのログを表示および管理できるようになります。

ログ ファイル ディレクトリを変更するには、次の環境変数を使用できます:

export PM2_HOME=/path/to/shared/pm2/home

これをグローバル設定ファイル (/etc/environment など) に設定して、セッション間で永続化します。

ステップ 8: ユーザー全体での PM2 プロセスの管理

PM2 をサービスとして設定すると、ユーザーは標準の PM2 コマンドを使用してプロセスを管理できるようになります。ただし、権限とユーザーの役割によっては、一部のコマンドで sudo アクセスが必要になる場合があります。例えば:

sudo pm2 list

このコマンドは、システム全体の PM2 サービスによって管理されているプロセスを一覧表示し、管理者と開発者がサーバー管理で共同作業することを容易にします。

結論

PM2 を Ubuntu インスタンス上でシステム全体のサービスとして設定すると、Node.js アプリケーションが堅牢に管理され、サーバー上のすべてのユーザーがアクセスできるようになります。この設定は、複数のユーザーまたは自動化された展開プロセスが存在する環境で特に役立ち、アプリケーションを管理するための信頼性の高い一元的な方法を提供します。

このガイドで説明されている手順に従うことで、PM2 をすべてのユーザーが利用できるようになり、システムの再起動後にプロセスが自動的に再起動され、ログに簡単にアクセスできるようになります。これにより、サーバー管理が簡素化されるだけでなく、運用環境でのアプリケーションの信頼性も向上します。

コーディングを楽しんでください!

リリースステートメント この記事は次の場所に転載されています: https://dev.to/manojspace/setting-up-pm2-for-multi-user-access-on-ubuntu-instance-5g95?1 侵害がある場合は、study_golang@163 までご連絡ください。 .comを削除してください
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3