2016-01-30 18 views
10

起動時にrootとして実行する必要があるデーモンがあります。pm2でrootとしてアプリケーションを起動する

私はpm2を使って他のアプリを起動しますが、アプリをrootとして起動できるかどうかはわかりません。それはできますか?

そうでない場合、私の選択肢は何ですか?

答えて

0

あなたは、(sudoがapp.jsを開始PM2)ルートとしてPM2を開始する必要があり、その後、あなたのアプリが

+0

を使用してPM2へ 次に設定root権限この作品行いますが、私がルートaswellとして他のアプリを実行することを要求しているようです。 –

7

は私が推薦するルートとして起動します:

sudo pm2 start index.js 

OR

pm2 start 'http-server' /var/www -p 80 
sudo pm2 startup 
pm2 save 

OR

pm2 start 'which http-server' /var/www -p 80 

HTTPポートで起動するには

また、私はいつも最後に-i 0を置く - これはあなたがコアを持つものと同じ数のワーカープロセスを起動します。チェックTHIS

必ずしもrootとしてPM2を起動する必要はありません。 rootとしてPM2があり、cliモジュールがインストールされている場合、セキュリティは大きなリスクです。これは、1〜1024のポートでアプリケーションを起動する場合にのみ必要です

6

ポート番号(80または443など)にアクセスするためにデーモンをrootで実行する必要がある場合は、pm2 documentationauthbindを使用することをお勧めします。

$ sudo apt-get install authbind 
$ sudo touch /etc/authbind/byport/80 
$ sudo chown yourusername /etc/authbind/byport/80 
$ sudo chmod 755 /etc/authbind/byport/80 
$ authbind --deep pm2 update 

をそしてpm2の代わりにauthbind --deep pm2を使用する:あなたがポート80へのアクセス権を持っているユーザーyourusernameをしたいのであれば、実行します。ドキュメンテーションはエイリアスの設定を示唆しています。

+0

あなたはLinuxを前提としていますか? – Michael

+0

はい、 'apt-get'はDebianベースのディストリビューションでのみ利用可能です。 – Rabbits

0

私はsudo pm2 start apiに問題があったが、PM2は既にsudo権限なしで実行していたので、これはだった、そのあなたが実行する必要があります。

pm2 kill 
sudo pm2 start api 

これは、それがsudoの中で起動するように、最初のPM2デーモンを殺すが、その後、ALL pm2コマンドのsudoが必要です。sudo pm2 ls

0

まず、pm2をグローバルにインストールします。このコマンド

sudo chown ubuntu:ubuntu /home/ubuntu/.pm2/rpc.sock /home/ubuntu/.pm2/pub.sock 
関連する問題