ubuntu 如何对非root用户使用pm2启动?

ppcbkaq5  于 12个月前  发布在  其他
关注(0)|答案(3)|浏览(142)

根据这里的文档:http://pm2.keymetrics.io/docs/usage/startup/#startup-systems-support
您可以使用命令pm2 startup ubuntu -u nodeapps在服务器启动时恢复所有已保存的pm2作业。
我以nodeapps用户的身份运行了这个命令。然后我得到了一个sudo su命令来运行。我注销了nodeapps,使用sudo su以root用户的身份登录系统,然后运行命令:

sudo su -c "env PATH=$PATH:/usr/bin pm2 startup ubuntu -u nodapps --hp /home/nodeapps"

字符串
服务器重启时进程没有重启。我在Stack Overflow上发现了这个问题:Ubuntu 14.04 - pm2 startup not starting after reboot
在脚本/etc/init.d/pm2-init.sh中,我找到了问题建议解决的行:

export PATH=/usr/bin:$PATH
export PM2_HOME="/home/nodeapps/.pm2"


但它看起来是正确的,所以我没有改变任何东西。
然后我发现了这个问题:pm2 Startup not starting up on Ubuntu
在我的 Boot 日志中,我发现下面这行:

Starting pm2
/usr/bin/env: node: No such file or directory


我知道Ubuntu上的“node”实际上是“nodejs”,这可能是原因吗?
如果是,我可以做些什么来让启动命令查找nodejs而不是node。
或者,这可能是一个$PATH的问题吗?如果是,我如何添加正确的路径到根目录(至少我认为应该添加到根目录)

kx7yvsdv

kx7yvsdv1#

我不知道它是否会帮助你,但我用这种方式:
1.以非根用户

pm2 startup -u <YOUR_NON_ROOT_USER>

字符串
1.复制行显示为

env PATH=$PATH:/usr/bin pm2 startup systemd -u delivery --hp /home/delivery


1.作为根执行

env PATH=$PATH:/usr/bin pm2 startup systemd -u delivery --hp /home/delivery


1.返回到非root用户并键入:

pm2 start <YOUR /PATH/TO/INDEX.JS> --name <YOU_APPLICATION_NAME>


1.作为非根类型:

pm2 save


1.重新启动

sudo reboot


1.作为一个非根用户类型的命令below检查它是否工作

pm2 status


PS:根据需要改变。
我希望这对你或其他人有用。

sqyvllje

sqyvllje2#

  • (代表OP发布)*。

事实上,这就是问题所在。通过创建一个符号链接(作为根)修复:

ln -s /usr/bin/nodejs /usr/sbin/node

字符串

kb5ga3dv

kb5ga3dv3#

我使用了一个更简单的解决方案(在我看来...)。如果你有SU权限,你可以模仿其他用户,像这样:

sudo -u other_user_name bash -c 'pm2 restart server'

字符串

相关问题