以下是我在 Ubuntu Server 16.04 LTS 上的内容:
- 我正在托管一个静态网站(使用https://gohugo.io/) 在私人 GitHub 仓库中
- 我在我的 Web 服务器上创建了一个 Webhook.php,每当 repo 收到推送时,github 就会调用它(来自https://gist.github.com/cferdinandi/e6e4e05c4b25e322db4eb1f1998523ac)
Webhook.php 在我的 Nginx 中运行并将执行以下操作:
- 从 github 拉取最新的更改
- 进入本地仓库文件夹
- 奔跑吧雨果
- 将建好的网站复制到/var/www/website
我的问题是我的权限混乱
- Webhook.php 作为 www-data 运行
- 但目前只有我的用户 1 拥有 ssh 密钥来访问 github repo
- Www-data 是无登录用户。所以我不确定我是否真的可以给它一个 SSH 密钥。
- 我最初的计划是在 /home/user1/repo 下签出 repo,但这很棘手,因为 www-data 在那里没有权限
简而言之:我陷入了权限地狱,我可以使用一些建议来决定把什么放在哪里、如何调整权限以及朝哪个方向发展。
答案1
由于您正在将 nginx 与 php 一起使用,我假设您正在使用 php-fpm,因此您可以在您想要的用户下设置一个单独的 php-fpm 池,然后使用适当的 ssh 身份执行任何您想做的事情(包括在这个用户下交互式登录的能力),nginx 将通过网络或 unix-socket 与 php-fpm 进行通信,从而与您的代码进行通信。
同时在Linux上的www-data下运行ngin也是完全正常的。