我想知道是否有人有这种情况下更好的策略。
我目前托pipe我自己的远程git回购与web服务器在同一个框。
所有的git回购都在git用户之下。
sudo -uwww-data -gwww-data git --git-dir=/var/www/website/.git --work-tree=/var/www/website pull
我有一个cron作业,每分钟执行一次这个命令。 web文件夹中的git repo被从同一个盒子克隆到git的home dir,而不是通过ssh存储。
所以我的问题:因为git不拥有networking文件,它不能使用git钩子移动站点。 我会假设我不想让git拥有sudo,也不会通过git hook工作,对吗? 有什么东西可以比每分钟更快地部署网站吗? 我不希望这个行动非常昂贵。
有什么样的守护进程可以运行并侦听某种通知? 就像看着一个文件的最后修改时间一样?
请注意, 这篇文章(法文,通过谷歌翻译)报告说,sudo与你的方法:
更改
sudo
以允许gitosis
用户使用该命令作为www-data
。
要做到这一点,通过运行“visudo”添加行:
git ALL = (www-data) NOPASSWD: /usr/local/bin/pullhere
然后,在必要的每个存储库中,在
post-receive
文件中添加下一个挂钩:
sudo -u www-data /usr/local/bin/pullhere /html/u/user/here
例如在
/ home/git/repositories/projet1.git/hooks/post-receive
这可能会让你感兴趣,如果你仍然在寻找一种在git push之后执行自动部署的方法:
https://github.com/JamesBrooks/git-runner (用git-runner-deploy gem)。