你如何使用非 root 用户启动 pm2?
How do you use pm2 startup with a non-root user?
根据此处的文档: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"
但我认为它是正确的,所以我没有做任何更改。
然后我发现了这个问题:
在我的引导日志中,我找到了以下行:
Starting pm2
/usr/bin/env: node: No such file or directory
我知道 Ubuntu 上的 'node' 实际上是 'nodejs'。会不会是这个原因?
如果是,我该怎么做才能让启动命令查找 nodejs 而不是 node。
或者,这可能是 $PATH 问题吗?如果是,如何添加正确的root路径(至少我认为应该添加到root)
(代表OP发表).
事实上这就是问题所在。通过创建符号链接(作为 root)修复:
ln -s /usr/bin/nodejs /usr/sbin/node
不知道对你有没有帮助,我是这样用的:
- 作为非根用户
pm2 startup -u <YOUR_NON_ROOT_USER>
- 复制行显示为
env PATH=$PATH:/usr/bin pm2 startup systemd -u delivery --hp /home/delivery
- 作为 root 执行
env PATH=$PATH:/usr/bin pm2 startup systemd -u delivery --hp /home/delivery
- 返回非根用户并输入:
pm2 start <YOUR /PATH/TO/INDEX.JS> --name <YOU_APPLICATION_NAME>
- 作为非根类型:
pm2 save
- 重启
sudo reboot
- 以非 root 用户身份键入下面的突击命令以检查它是否有效
pm2 status
PS:根据需要更改。
希望对您或其他人有用。
根据此处的文档: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"
但我认为它是正确的,所以我没有做任何更改。
然后我发现了这个问题:
在我的引导日志中,我找到了以下行:
Starting pm2
/usr/bin/env: node: No such file or directory
我知道 Ubuntu 上的 'node' 实际上是 'nodejs'。会不会是这个原因?
如果是,我该怎么做才能让启动命令查找 nodejs 而不是 node。
或者,这可能是 $PATH 问题吗?如果是,如何添加正确的root路径(至少我认为应该添加到root)
(代表OP发表).
事实上这就是问题所在。通过创建符号链接(作为 root)修复:
ln -s /usr/bin/nodejs /usr/sbin/node
不知道对你有没有帮助,我是这样用的:
- 作为非根用户
pm2 startup -u <YOUR_NON_ROOT_USER>
- 复制行显示为
env PATH=$PATH:/usr/bin pm2 startup systemd -u delivery --hp /home/delivery
- 作为 root 执行
env PATH=$PATH:/usr/bin pm2 startup systemd -u delivery --hp /home/delivery
- 返回非根用户并输入:
pm2 start <YOUR /PATH/TO/INDEX.JS> --name <YOU_APPLICATION_NAME>
- 作为非根类型:
pm2 save
- 重启
sudo reboot
- 以非 root 用户身份键入下面的突击命令以检查它是否有效
pm2 status
PS:根据需要更改。
希望对您或其他人有用。