Plesk 虚拟主机中的多个 git repos

Plesk 虚拟主机中的多个 git repos

每个 plesk vhost 只有一个用户访问该 httpdocs 目录。我想使用 Git 管理一大堆独立的虚拟主机。

这是否意味着为每个虚拟主机安装一个具有单独用户/ ssh 公钥组合的单独 Git 存储库,或者是否有办法将其集中化?

吉托西斯听起来好像有帮助 - 但我不确定它是否可以将文件推送到每个虚拟主机。

答案1

通常有两种方法来解决此类问题;

  1. 你有一个裸存储库,将应用程序集中在服务器上的某个位置,并且每个httpdocs文件夹中都有一个此存储库的克隆(带有工作树)

    post-receive hook然后在裸仓库上设置一个来更新httpdocs此仓库的所有克隆,通常一个 shell 脚本就足够了(并且可以设置权限并chmod根据您的用户执行全局操作)

    并且您在本地计算机上有另一个存储库副本,该副本会推送到bare服务器上的此存储库,从而触发 post-receive 挂钩,并更新httpdocs目录中的所有“子”存储库

  2. .git从中取出零件httpdocs(我建议这样做),然后在/private/home/git/myrepo(创建它)文件夹working tree中设置存储库httpdocs

    $ 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版本信息就相对干净了(除了.git文件(不是目录)在 中创建/var/www/vhosts/newdomain.tld/httpdocs/,这只是 GIT 将 符号链接到working tree的位置的方式GITDIR

    其余过程相同:裸存储库、接收后挂钩

我个人放弃了 Gitosis、gitolite 和 palls,因为对于几个存储库来说,它们的开销太大了。正确设置远程分支和 shell 脚本就足够了(由 post-receive 钩子启动)

更多hook关于githooks(5)手册页

相关内容