PM2 Nodejsはデーモンの所有権と権限の助けを必要とします。

PM2 Nodejsはデーモンの所有権と権限の助けを必要とします。

デーモンをどのアカウントで実行するのか、アプリケーションをどのように追加するのか悩んでいます。

現在ルートディレクトリにあります。
PM2 v4.2.3: 新デーモン (/root/.pm2)

ただし、他のアプリケーションを追加するためにbashスクリプトを実行すると、sudo権限を持つbradとしてログインします。だから別のデーモンを起動しようとしています。

PM2 v4.2.3: 新デーモン(/brad/.pm2)

ルートインスタンスの代わりにBradインスタンスにアプリケーションを追加します。

どのように構造化するのか分かりません。究極の目標は、PHP Webページでbashスクリプトを実行してアプリケーションを追加することです。 nginx Webサーバーとphp-frmはwww-dataユーザーとして実行されます。それでは、そのユーザーとしてGod Daemonを実行し、www-data sudo権限も付与する必要がありますか?ここではセキュリティの問題が心配です。これは正しい解決のために非常に重要であると思うので、これを助けてくれてありがとう。 Ubuntu 18.4を使用しています

答え1

StackExchangeへようこそ。 PM2が簡単に動作するように制御したいアプリケーションと同じ(分離された)ユーザーでPM2を実行することをお勧めします。

まず、ノードコードをローカルユーザーとして設定し、すべての "npm"コマンドをルートではなくローカルユーザーとして実行する必要があります。

  • ""をrootとして実行すると、npm -g install xyzパッケージは "/usr/local/lib/node_modules/"に移動します。 「-g」はグローバルを意味します。それ以外の場合は、rootユーザーディレクトリに移動します。

  • " "ユーザーとして実行すると、npm install xyzパッケージは "/home//.pm2/node_modules/"に移動します...これが私が推奨する方法です。

その後、PM2の正しい起動スクリプトを取得するには、pm2 startup -u <username> upstartUbuntu 14.04などの以前のディストリビューションではpm2 startup -u <username>「ここで、 " <username>"は「ブラッド」ケースです。ファイルまたは必要な他のもの。私たちは、NodeJSアプリケーション用に別々のユーザーを作成し、すべてが1つのユーザーの下に分離されるようにしました。これにより、管理も簡単になります。ただし、「brad」または「root」でログインしてpm2を実行すると、ログインしたユーザーディレクトリに対して実行されるため、他のユーザーとして実行されているアプリケーションは表示されません。つまり、pm2を「brad」として実行すると、「brad」で管理されているアプリケーションが表示されます。

pm2のマニュアルページによると、これを設定する他の方法がありますが、うまく動作しないことがわかりました。

関連情報