起動時にルートとして実行する必要があるデーモンがあります。
私はpm2を使用して他のアプリを起動しますが、rootとしてアプリを起動できるかどうかわかりません。できますか?
そうでない場合、私のオプションは何ですか?
ポート番号(80や443など)にアクセスするためにデーモンをrootとして実行するだけでよい場合、 pm2 documentation はauthbind
の使用を推奨します。したがって、ユーザー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
。ドキュメントでは、エイリアスの設定を提案しています。
私がお勧めします:
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のポートでアプリを起動する場合にのみ必要です
Sudo pm2 start api
に問題がありましたが、これはpm2がすでにSudo権限なしで実行されていたため、実行する必要があるためです。
pm2 kill
Sudo pm2 start api
これにより、最初にpm2デーモンが強制終了され、Sudoで開始されますが、その後、[〜#〜] all [〜#〜] pm2コマンドにSudoが必要です。たとえば、Sudo pm2 ls
まず、pm2をグローバルにインストールします。次に、このコマンドを使用してルート権限をpm2に設定します
Sudo chown ubuntu:ubuntu /home/ubuntu/.pm2/rpc.sock /home/ubuntu/.pm2/pub.sock
ルートとしてpm2を起動する必要があります(Sudo pm2 start app.js)。その後、アプリはルートとして起動します。
このエラーの背後には理由があるため、iptablesを使用してトラフィックをルーティングすることを検討してください。
Sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000