NGINX 下 webhook 的权限

NGINX 下 webhook 的权限

以下是我在 Ubuntu Server 16.04 LTS 上的内容:

  1. 我正在托管一个静态网站(使用https://gohugo.io/) 在私人 GitHub 仓库中
  2. 我在我的 Web 服务器上创建了一个 Webhook.php,每当 repo 收到推送时,github 就会调用它(来自https://gist.github.com/cferdinandi/e6e4e05c4b25e322db4eb1f1998523ac

Webhook.php 在我的 Nginx 中运行并将执行以下操作:

  1. 从 github 拉取最新的更改
  2. 进入本地仓库文件夹
  3. 奔跑吧雨果
  4. 将建好的网站复制到/var/www/website

我的问题是我的权限混乱

  1. Webhook.php 作为 www-data 运行
  2. 但目前只有我的用户 1 拥有 ssh 密钥来访问 github repo
  3. Www-data 是无登录用户。所以我不确定我是否真的可以给它一个 SSH 密钥。
  4. 我最初的计划是在 /home/user1/repo 下签出 repo,但这很棘手,因为 www-data 在那里没有权限

简而言之:我陷入了权限地狱,我可以使用一些建议来决定把什么放在哪里、如何调整权限以及朝哪个方向发展。

答案1

由于您正在将 nginx 与 php 一起使用,我假设您正在使用 php-fpm,因此您可以在您想要的用户下设置一个单独的 php-fpm 池,然后使用适当的 ssh 身份执行任何您想做的事情(包括在这个用户下交互式登录的能力),nginx 将通过网络或 unix-socket 与 php-fpm 进行通信,从而与您的代码进行通信。

同时在Linux上的www-data下运行ngin也是完全正常的。

相关内容