git-http-backend with apache2.4 Centos 7

git-http-backend with apache2.4 Centos 7

我尝试在我的 apache 服务器上设置一个 Git-server 但它不起作用! 我得到以下 git.conf

SetEnv GIT_PROJECT_ROOT /var/www/html/git/project1
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ /usr/libexec/git-core/git-http-backend/

<Directory "/var/www/html/git/project1">
   Options ExecCGI Indexes
   Require all granted
</Directory>

<LocationMatch "^/git/.*/git-receive-pack$">
   AuthType Basic
   AuthName "Git Access"
   AuthUserFile /var/www/html/git/users/.htpasswd
   Require valid-user
</LocationMatch>

我创建了一个用户,但我无法访问该站点。

Forbidden

You don't have permission to access /git/ on this server.

如果我注释第 3 行

#ScriptAlias /git/ /usr/libexec/git-core/git-http-backend/

现在我可以访问站点并可以看到 git 存储库。有谁知道我该如何解决这个问题。 英语不是我的第一语言,所以请耐心等待我的文字。 感谢您阅读最诚挚的问候 山姆

正在关注 git http-backend doc

SetEnv GIT_PROJECT_ROOT /var/www/git

这应该是您拥有 git 存储库(repo1.git、repo2.git、...)的根文件夹。它不应该是 /git/project1,它看起来像 repo 本身的名称。

所以试试这个例子:

SetEnv GIT_PROJECT_ROOT /var/www/git
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ /usr/libexec/git-core/git-http-backend/

<LocationMatch "^/git/.*/git-receive-pack$">
    AuthType Basic
    AuthName "Git Access"
    Require group committers
    ...
</LocationMatch>

注意:在互动环节之后,您需要确定:

如果后面的点不包括httd_rw,您需要键入(如“How come my Apache can only access root owned files?”),以更改其上下文:

chcon -vR --type=httpd_sys_content_t /html/