2012-01-30 62 views
4

我想知道是否有人对此方案有更好的策略。使用Git自动部署

我目前在webserver的同一个盒子上托管我自己的远程git仓库。

所有的git回购都在git用户之下。

sudo -uwww-data -gwww-data git --git-dir=/var/www/website/.git --work-tree=/var/www/website pull 

我必须以root身份运行,执行该命令每分钟cron作业。 web文件夹中的git repo被从同一个盒子克隆到git的home dir,而不是通过ssh存储。

所以我的问题:由于git不拥有网络文件,它不能使用git钩子移动站点。我会假设我不想让git拥有sudo,也不会通过git hook工作,对吧?是否有东西能够比每分钟更快地部署网站?我不希望这项行动非常昂贵。

是否有某种守护进程的根可以运行并侦听某种通知?就像让它看着文件的最后修改时间一样?

回答

1

注意this article (in French, translated through Google)报道,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

+0

啊哈!受限制的sudo,这是关键。谢谢! – Will 2012-01-31 00:35:18