构建一个中心Git remote以服务于Apache生产站点
我一直将其作为在托管VPS上运行的生产web服务器的起点。VPS运行cPanel和WHM,它最终将托管多个客户端网站,每个网站都有自己的cPanel帐户(因此,每个网站都有自己的Linux用户和主目录,从中为网站提供服务)。每个客户端的站点都是一个独立的Git存储库 目前,我正在通过SSH将每个存储库推送到客户机主文件夹中的裸repo,例如构建一个中心Git remote以服务于Apache生产站点,apache,git,file-permissions,cpanel,whm,Apache,Git,File Permissions,Cpanel,Whm,我一直将其作为在托管VPS上运行的生产web服务器的起点。VPS运行cPanel和WHM,它最终将托管多个客户端网站,每个网站都有自己的cPanel帐户(因此,每个网站都有自己的Linux用户和主目录,从中为网站提供服务)。每个客户端的站点都是一个独立的Git存储库 目前,我正在通过SSH将每个存储库推送到客户机主文件夹中的裸repo,例如/home/username/git/repository.git/。根据上面的教程,每个repo都配置为通过post-receive钩子签出到另一个目录。在
/home/username/git/repository.git/
。根据上面的教程,每个repo都配置为通过post-receive钩子签出到另一个目录。在这种情况下,每个回购协议都签出到自己的/home/username/public_html
(新cPanel帐户的默认DocumentRoot),文件随后由Apache提供服务。虽然这是可行的,但它要求我(在本地开发环境中)像这样设置远程设备:
url = ssh://username@example.com/home/username/git/repository.git/
它还要求我在每次按下时输入用户的密码,这并不理想
为了将我的所有存储库集中在一个文件夹中,我还尝试将/root/git/repository.git
作为root用户,然后从那里签出到相应的主目录。但是,这会导致所有签出的文件都归root所有,从而阻止Apache为站点提供服务,并出现如下错误
[error] [client xx.xx.xx.xx] SoftException in Application.cpp:357: UID of script "/home/username/public_html/index.php" is smaller than min_uid
(据我所知,这是一个文件所有权/权限问题)
我可以解决每个回购协议的post-receive钩子中的chown和chgrp命令的问题,但是,这也在我脑海中升起了“不太正确”的旗号。我也考虑过gitosis(将我所有的回购集中在/home/git/
),但我假设我遇到了同样的文件所有权问题,因为签出的文件将由git用户拥有
我只是用错误的方式来处理这件事吗?我觉得我完全错过了第三个更优雅的解决方案。或者我应该坚持我上面描述的方法之一
它还要求我在每次按下时输入用户的密码,这并不理想
如果您将公共ssh密钥发布到Destination帐户“.ssh/authorized_keys
”文件,则不必这样做
另请参见示例。也是官方的参考 它还要求我在每次按下时输入用户的密码,这并不理想 如果您将公共ssh密钥发布到Destination帐户“
.ssh/authorized_keys
”文件,则不必这样做
另请参见示例。但也是官方参考。谢谢!这肯定会有帮助。然而,我最初的问题中有一个问题仍然存在:我应该将我的存储库集中在服务器上的一个地方吗?或者为每个单独的存储库登录到一个单独的帐户有意义吗?@peterjmag:如果您采用类似gitolite的策略,您只需要将每个用户的SSH公钥发布到管理Git repo的一个中央帐户。有关更多详细信息,请参阅Gitolite文档:谢谢!这肯定会有帮助。然而,我最初的问题中有一个问题仍然存在:我应该将我的存储库集中在服务器上的一个地方吗?或者为每个单独的存储库登录到一个单独的帐户有意义吗?@peterjmag:如果您采用类似gitolite的策略,您只需要将每个用户的SSH公钥发布到管理Git repo的一个中央帐户。有关更多详细信息,请参阅Gitolite文档: