Wednesday, February 2, 2022

[SOLVED] git-http-backend with apache2.4 Centos 7

Issue

I try to set up a Git-server on my apache server but it dont work! I got the following 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>

I created a user but I cant acces the site.

Forbidden

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

If I comment line 3

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

Now I can acces the site and can see the git repository. Does anyone know how I can fix this. English isn't my first language so please be patient with my text. Thanks for reading best regards Sam


Solution

Following git http-backend doc:

SetEnv GIT_PROJECT_ROOT /var/www/git

This should be the root folder under which you have git repos (repo1.git, repo2.git, ...). It should not be /git/project1, which looks like the name of a repo itself.

So try the example:

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>

Note: after an interactive session, it turns out you need to be sure that:

If the later point does not include httd_rw, you need to type (as in "How come my Apache can only access root owned files?"), to change its context:

chcon -vR --type=httpd_sys_content_t /html/


Answered By - VonC
Answer Checked By - Willingham (WPSolving Volunteer)