我有一个守护进程必须在启动时以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之间的端口上启动应用程序时才需要这样做
浪费了大约一个小时
在 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)
希望有帮助
您应该以 root 身份启动 pm2 (sudo pm2 start app.js),然后您的应用程序将以 root 身份启动
归档时间: |
|
查看次数: |
23746 次 |
最近记录: |