Git Server mit Apache und dem Git Smart HTTP Protkoll

Um ein zentrales Git Repository mit mehreren Personen zu nutzen bieten sich verschiedene Methoden an. Als einfachste Lösung empfinde ich den Datenaustausch über einen Apache Webserver, da man aus den meisten Netzwerken ohne Probleme an den HTTPS Port 443 kommt.
In diesem Tutorial sprechen die Clients mit dem Repository über das sogenannte „Git Smart HTTP“ Protokoll.

1. Software installieren
Zusätzlich zu einem bestehenden Apache Webserver wird nur noch folgendes Paket benötigt:
apt-get install git-core

2. Verzeichnisstruktur für Git anlegen
Für die Git Projekte lege ich typischerweise eine neue Ordnerstruktur an:
mkdir -p /var/git

3. Git Repository anlegen
Zuerst wird ein leeres Verzeichnis für das neue Projekt angelegt:
mkdir /var/git/<projekt>

Jetzt wechselt man in das Verzeichnis und initialisiert das Repository, hierbei ist es wichtig die Datei „git-daemon-export-ok“ anzulegen, damit das Repository über Smart HTTP exportiert werden kann:

cd /var/git/<projekt>
git init --bare
git update-server-info
touch git-daemon-export-ok

Zum Schluss müssen die Recht soweit angepasst werden, damit der Apache Webserver in dem Verzeichnis lesen und schreiben darf:

chgrp www-data /var/git/<projekt> -R
chown www-data /var/git/<projekt> -R
chmod 750 /var/git/<projekt>

4. Repository übergreifende Apache Konfiguration
Damit der Smart HTTP Export nachher funktioniert müssen einige Umgebungsvariablen definiert werden, dafür legen wir unter /etc/apache2/conf.d die Datei git.conf an:

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

Jetzt werden alle Repositorys exportiert in denen die Datei „git-daemon-export-ok“ enthalten ist, die Absicherung über einen Benutzernamen und Passwort wird in Punkt 5 des Tutorials beschrieben.

In dem VirtualHost über den die Git-Repositorys angeboten werden muss folgender Alias gesetzt werden:

Alias /git /var/git

5.Absicherung des Git-Repositorys mit einer Basic-Authentication
Zuerst wird eine Datei angelegt, in der die einzelnen Gruppen definiert werden:

touch /etc/apache2/groups

Die Gruppen und Benutzer trägt man nach diesem Schema ein:

groupname : user1 user2

Jetzt wird eine Passwortdatei angelegt in der später die Benutzer und ihre Passwörter eingetragen werden:

touch /etc/apache2/passwd

Die Nutzer werden mit diesem Befehl angelegt:

htpasswd /etc/apache2/passwd username

Nun wird man aufgefordert das Passwort des Benutzers zweimal einzugeben.

In dem Verzeichnis /etc/apache2/conf-available.d/ wird nun für das Repository eine eigene Konfigurationsdatei angelegt, zum Beispiel projekt.conf mit folgendem Inhalt:

<Location "/git/projekt">
AuthType Basic
require group groupname
AuthName "Projekt"
AuthUserFile /etc/apache2/passwd
AuthGroupFile /etc/apache2/groups
SSLRequireSSL
</Location>

Abschließend muss die Konfigurationsdatei noch aktiviert werden und der Apache2 muss die Konfiguration laden, dies geschieht mit folgenden Befehlen:

a2enconf projekt
systemctl reload apache2


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert