【问题标题】:How to user pm2 and jenkins to run the 'sudo npm start'?如何使用 pm2 和 jenkins 运行“sudo npm start”?
【发布时间】:2018-04-11 08:04:50
【问题描述】:

我已将 jenkins 用户添加为拥有所有权限。

jenkins ALL=(ALL) NOPASSWD: ALL

还把pm2安装为全局,pm2需要运行命令

sudo npm start

由于构建过程需要创建一些目录,如果我在 app1 目录中运行sudo npm start,它可以完美运行,但是使用 pm2 命令会引发访问错误

sudo pm2 start config.js

config.js

  module.exports = {
      apps : [{
        name   : "app1",
        cwd : "./my-dir/app1,
        script : "sudo npm",
        args : "start"
      },{
        name   : "app2",
        cwd : "./my-dir/app2",
        script : "npm",
        args : "start"
      }]
    }

是pm2权限还是用户权限出错?

【问题讨论】:

  • 你找到解决办法了吗?
  • pm2 进程在每个用户下单独运行,所以需要以 jenkins 用户身份启动 pm2 进程,安装 jenkins 时会创建该进程,还要检查 jenkins 的 sudo 权限,以便它可以创建工作空间目录如果要自定义目标路径。注意:如果同一进程在其他用户下运行,请先删除冲突进程,然后在 jenkins 用户下启动 config.js 文件
  • 给詹金斯root权限不是很糟糕吗?
  • 允许具有有限权限的组创建文件并让 jerkins 成为其一部分,
  • 在我的情况下,我有一个 Root 用户,它为其他应用程序启动 pm2。 Jenkins 也需要它,但是当 Jenkins 使用 sudo 时我不需要。我不明白你的评论,如果你能尝试用更详细的解释会很酷

标签: node.js ubuntu jenkins pm2


【解决方案1】:

不要使用所有sudo 权限运行命令,而是创建具有您想授予应用程序的最少权限的用户。

您已经将 jenkins 设置为使用 sudo 而没有密码,因此您可以使用以下命令从 jenkins 以具有最低权限的其他用户身份运行 pm2

sudo su - username -c 'pm2 start config.js'

以上命令将以指定用户运行

【讨论】:

    猜你喜欢
    • 2019-03-05
    • 2015-10-13
    • 2021-06-06
    • 2020-03-11
    • 2017-02-04
    • 1970-01-01
    • 2022-09-26
    • 1970-01-01
    • 2018-02-03
    相关资源
    最近更新 更多