node.js - 你如何使用非 root 用户启动 pm2?

标签 node.js ubuntu pm2

根据此处的文档: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

在我的启动日志中,我找到了以下行:

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

我知道 Ubuntu 上的“node”实际上是“nodejs”。会不会是这个原因?

如果是,我该怎么做才能让启动命令查找 nodejs 而不是 node。

或者,这可能是 $PATH 问题吗?如果是,我怎样才能将正确的路径添加到root(至少我认为它应该添加到root)

最佳答案

不知道对你有没有帮助,我是这样用的:


  1. 作为非根用户
pm2 startup -u <YOUR_NON_ROOT_USER>
  1. 复制行显示为
env PATH=$PATH:/usr/bin pm2 startup systemd -u delivery --hp /home/delivery
  1. 以root身份执行
env PATH=$PATH:/usr/bin pm2 startup systemd -u delivery --hp /home/delivery
  1. 返回非根用户并输入:
pm2 start <YOUR /PATH/TO/INDEX.JS> --name <YOU_APPLICATION_NAME>
  1. 作为非根类型:
pm2 save
  1. 重启
sudo reboot
  1. 以非 root 用户身份输入下面的突击命令以检查它是否有效
pm2 status

PS:根据需要更改。

希望对您或其他人有用。

关于node.js - 你如何使用非 root 用户启动 pm2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37587388/

相关文章:

node.js - Mocha 使用异步初始化代码进行测试

ubuntu - 使用 remove 卸载 logstash 在 ubuntu 上不起作用

node.js - 解析请求体禁止请求签名验证

node.js - Sequelize 更新不会忽略空值

ubuntu - HHVM 3.0/Hack with Nginx 无法在 Ubuntu 13.10 上访问具有 770 权限的目录中的文件,同时具有组成员身份

ubuntu - # 未找到aidl,请安装它

javascript - Node.js 相当于 Yarn 命令

node.js - 为什么 PM2 重新启动我的进程?

node.js - 我运行了一个 npm run build,将它放在 nodejs express.static 上,pm2 启动应用程序但无法获取 '/'

javascript - 加载此 node.js 模块的更好的 coffeescript 解决方法