我有以下设置:
两个用户:example 和 git
在里面/home/git/repositories/project.git/hooks/post-receive
我有一个结帐/home/example/public_html/dev
因此,每次 git push 都会将项目文件发布到http://dev.example.com
问题是,签出是从 git 用户执行的,所以 dev 目录中的所有文件都归 git:git 所有,权限为 600。
因此访问http://dev.example.com将不会显示该页面。因为用户 apache 无权访问它。
有人建议在 post-receive 挂钩内做一个 chown。好吧,那么用户 git 需要是 sudo。所以我将用户 git 添加为 sudoer。下一个问题是“抱歉,你必须有一个 tty 才能运行 sudo ”所以我注释掉了 #Default requiretty,但遇到了下一个问题。
让用户 git 成为 sudoer 不是我想要的(不安全),所以我把一切都改回了正常。
还有其他更安全的选择吗?
可能让 post-receive 钩子触发 dev 文件夹中的一个 php 文件,这个 php 文件将进行结帐?
或者我可以将 dev 文件夹符号链接到 /home/git 中的文件夹,以某种方式 apache kan 在浏览器中显示它们?