使用pm2以root身份启动应用

问题描述 投票:19回答:6

我有一个守护进程必须在启动时以root身份运行。

我使用pm2启动其他应用程序,但无法弄清楚它是否可以以root身份启动应用程序。可以吗?

如果没有,我的选择是什么?

node.js root pm2
6个回答
14
投票

如果您只需要以root身份运行守护程序以访问端口号(例如80或443),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。文档建议设置别名。


13
投票

我建议:

sudo pm2 start index.js

要么

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

要么

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

在HTTP端口上启动它

此外,我总是把-i 0放在最后 - 这会启动尽可能多的工作进程,就像你有核心一样。检查THIS

并不总是需要以root身份启动PM2。如果您将PM2作为root并安装了cli模块,则安全性是一个很大的风险。只有在1到1024之间的端口上启动应用程序时才需要这样做


11
投票

我有sudo pm2 start api的问题,但这是因为pm2已经在没有sudo权限的情况下运行,因此你需要运行:

pm2 kill
sudo pm2 start api

这会首先杀死pm2守护进程,以便它在sudo中启动,但之后你需要sudo for all pm2命令,如:qazxsw poi


0
投票

你应该以root身份启动pm2(sudo pm2 start app.js),然后你的应用程序将以root身份启动


0
投票

首先,全局安装pm2。然后使用此命令将root权限设置为pm2

sudo pm2 ls

0
投票

您可以考虑使用iptables路由您的流量,因为这个错误背后有一个原因

sudo chown ubuntu:ubuntu /home/ubuntu/.pm2/rpc.sock /home/ubuntu/.pm2/pub.sock
© www.soinside.com 2019 - 2024. All rights reserved.