web-dev-qa-db-ja.com

pm2でrootとしてアプリを起動します

起動時にルートとして実行する必要があるデーモンがあります。

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

そうでない場合、私のオプションは何ですか?

19
Martin Nilsson

ポート番号(80や443など)にアクセスするためにデーモンをrootとして実行するだけでよい場合、 pm2 documentationauthbindの使用を推奨します。したがって、ユーザーyourusernameにポート80へのアクセスを許可する場合は、次を実行します。

$ 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

そして、authbind --deep pm2 の代わりに pm2。ドキュメントでは、エイリアスの設定を提案しています。

14
Rabbits

私がお勧めします:

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 [〜#〜]

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

13
devtech

Sudo pm2 start apiに問題がありましたが、これはpm2がすでにSudo権限なしで実行されていたため、実行する必要があるためです。

pm2 kill
Sudo pm2 start api

これにより、最初にpm2デーモンが強制終了され、Sudoで開始されますが、その後、[〜#〜] all [〜#〜] pm2コマンドにSudoが必要です。たとえば、Sudo pm2 ls

11
Elias Fyksen

まず、pm2をグローバルにインストールします。次に、このコマンドを使用してルート権限をpm2に設定します

Sudo chown ubuntu:ubuntu /home/ubuntu/.pm2/rpc.sock /home/ubuntu/.pm2/pub.sock
0
Nuwan Sameera

ルートとしてpm2を起動する必要があります(Sudo pm2 start app.js)。その後、アプリはルートとして起動します。

このエラーの背後には理由があるため、iptablesを使用してトラフィックをルーティングすることを検討してください。

Sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000
0
Jeremias Binder