我有一个守护进程必须在启动时以root身份运行。
我使用pm2启动其他应用程序,但无法弄清楚它是否可以以root身份启动应用程序。可以吗?
如果没有,我的选择是什么?
如果您只需要以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
。文档建议设置别名。
我建议:
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之间的端口上启动应用程序时才需要这样做
我有sudo pm2 start api
的问题,但这是因为pm2已经在没有sudo权限的情况下运行,因此你需要运行:
pm2 kill
sudo pm2 start api
这会首先杀死pm2守护进程,以便它在sudo中启动,但之后你需要sudo for all pm2命令,如:qazxsw poi
你应该以root身份启动pm2(sudo pm2 start app.js),然后你的应用程序将以root身份启动
首先,全局安装pm2。然后使用此命令将root权限设置为pm2
sudo pm2 ls
您可以考虑使用iptables路由您的流量,因为这个错误背后有一个原因
sudo chown ubuntu:ubuntu /home/ubuntu/.pm2/rpc.sock /home/ubuntu/.pm2/pub.sock