每个plesk虚拟主机只有一个用户访问httpdocs目录。 我想要使用Git来pipe理大量单独的虚拟主机。
这是否意味着为每个虚拟主机安装一个单独的Git仓库和单独的用户/ SSH公钥组合,还是有办法集中它?
Gitosis听起来可能会有帮助 – 但我不确定是否将文件推送到每个虚拟主机。
通常有两种方法可以解决这类问题。
你有一个简单的仓库把你的应用程序集中在服务器的某个地方,并且在每个httpdocs文件夹中有一个这个仓库的克隆(带有一个工作树)
然后在裸回购上设置一个post-receive hook来更新这个仓库的所有httpdocs克隆,通常一个shell脚本就足够了(可以设置权限并根据你的用户进行全局chmod )
而且你在本地机器上有另外一个版本库,拷贝到服务器上的bare仓库,这会触发post-receive钩子,并更新你的httpdocs目录中的所有“children”版本库
你可以从httpdocs (我会推荐)中得到.git一部分,然后在httpdocs的working tree中/private/home/git/myrepo (创build它)文件夹中设置储存库
$ git --git-dir=/var/www/vhosts/newdomain.tld/private/home/git/newdomain.tld \ --work-tree=/var/www/vhosts/newdomain.tld/httpdocs init && \ echo "gitdir: /var/www/vhosts/newdomain.tld/private/home/git/newdomain.tld" \ > /var/www/vhosts/newdomain.tld/httpdocs/.git
这样,你的httpdocs保持相对干净的版本信息(除了在/var/www/vhosts/newdomain.tld/httpdocs/创build的.git 文件 (不是dir),这只是一个GIT的working tree符号链接GITDIR的位置)
剩下的程序是一样的:裸仓库,后期接收钩子
我个人放弃了Gitosis,gitolite和palls,因为只有less数几个版本库的开销太大了。 正确设置您的远程分支机构和shell脚本是所有需要的(由post-receive钩子启动)
更多关于githooks(5)联机帮助上的hook