我有以下设置:
两个用户: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 hook 中执行 chown。好吧,那么用户 git 需要使用 sudo。所以我将用户 git 添加为 sudoer。下一个问题是“抱歉,您必须拥有 tty 才能运行 sudo”。所以我注释掉 #Default requiretty,但遇到了下一个问题。
使用户 git 成为 sudoer 不是我想要的(不安全),所以我将所有内容都改回正常状态。
是否有其他更安全的选项可尝试?
也许可以让post-receive钩子触发dev文件夹内的一个php文件,这个php文件将执行checkout操作?
或者我能够将dev文件夹链接到/home/git内的一个文件夹中,以一种apache可以在浏览器中显示它们的方式?
两个用户: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 hook 中执行 chown。好吧,那么用户 git 需要使用 sudo。所以我将用户 git 添加为 sudoer。下一个问题是“抱歉,您必须拥有 tty 才能运行 sudo”。所以我注释掉 #Default requiretty,但遇到了下一个问题。
使用户 git 成为 sudoer 不是我想要的(不安全),所以我将所有内容都改回正常状态。
是否有其他更安全的选项可尝试?
也许可以让post-receive钩子触发dev文件夹内的一个php文件,这个php文件将执行checkout操作?
或者我能够将dev文件夹链接到/home/git内的一个文件夹中,以一种apache可以在浏览器中显示它们的方式?