使用pm2以root身份启动应用

Mar*_*son 21 root node.js pm2

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

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

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

Eli*_*sen 17

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

pm2 kill
sudo pm2 start api
Run Code Online (Sandbox Code Playgroud)

这首先杀死PM2守护进程,使其在开始sudo的,但你需要须藤的所有 PM2命令之后,如:sudo pm2 ls


小智 15

如果您只需要以root用户身份运行守护程序以访问端口号(例如80或443),则pm2文档建议使用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
Run Code Online (Sandbox Code Playgroud)

然后用authbind --deep pm2而不是pm2.文档建议设置别名.


dev*_*ech 13

我建议:

sudo pm2 start index.js
Run Code Online (Sandbox Code Playgroud)

要么

pm2 start 'http-server' /var/www -p 80
sudo pm2 startup
pm2 save
Run Code Online (Sandbox Code Playgroud)

要么

pm2 start 'which http-server' /var/www -p 80
Run Code Online (Sandbox Code Playgroud)

在HTTP端口上启动它

此外,我总是把它放在-i 0最后 - 这会启动与核心一样多的工作进程.检查

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


Man*_*ddy 5

浪费了大约一个小时

在 AWS EC2 机器上,一个系统由于早期安装而处于不一致状态,这迫使sudo应用程序中的所有命令都提升到操作系统,例如 sh 等。

PM2运行作为根:

ps aux | grep pm2
# root ... PM2 v4.1.2: God Daemon (/root/.pm2)
Run Code Online (Sandbox Code Playgroud)

现在,PM2运行的Ubuntu的:

ps aux | grep pm2
# ubuntu  ...  PM2 v4.1.2: God Daemon (/home/ubuntu/.pm2)
Run Code Online (Sandbox Code Playgroud)

以下命令有效:

sudo pm2 kill
sudo npm remove pm2 -g

sudo npm i -g pm2@latest
sudo pm2 update
sudo chown -R ubuntu:ubuntu /home/ubuntu/.pm2
Run Code Online (Sandbox Code Playgroud)

希望有帮助


Ami*_*ein 0

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

  • 这确实有效,但似乎要求我也以 root 身份运行其他应用程序。 (2认同)