Git-Server selbst installieren

In Eigenregie

Beinahe über Nacht hat das von Linus Torvalds geschriebene Git die Welt der Versionskontrolle übernommen. Für den Einsatz im Team bietet sich ein eigener Git-Server an, der Repositories beherbergt. Dieser Artikel zeigt zwei Wege dafür auf.
Mit E-Mail-Diensten muss sich jeder Administrator früher oder später einmal beschäftigen. Das zur CeBIT erscheinende ADMIN 02/2012 gibt dazu Praxis-Tipps und ... (mehr)

Im Prinzip braucht man für Git [1] keinen Server, denn es handelt sich um ein Peer-to-Peer-System. Wenn man im Team Software entwickelt oder andere Dateien bearbeitet, ist es aber praktisch, einen zentralen Platz zu haben, an dem sich die Dateien befinden, der sich zum Beispiel in Backups einbinden lässt. Prinzipiell lassen sich dafür auch Services im Internet verwenden, etwa Gitorious [2] oder das allgegenwärtige Github [3], das für Open-Source-Projekte kostenlos ist. Der kommerzielle Dienst von Github startet bei 25 US-Dollar im Monat bis zum Platinum-Tarif mit 200 US-Dollar, bei Gitorious sind es mindestens 99 US-Dollar.

Um selbst einen Git-Server zu installieren, gibt es mehrere Möglichkeiten. Die beiden bekanntesten sind Gitolite [4] und Gitosis [5]. Beide sind – wen wundert's – bei Github erhältlich, Gitolite ist in Perl geschrieben, Gitosis in Python, ansonsten sind sich beide ziemlich ähnlich. In vielen Distributionen (etwa Fedora und Ubuntu) sind beide Programme im Paket-Repository enthalten und lassen sich entsprechend einfach installieren. Was bei der Installation passiert, unterscheidet sich von Fall zu Fall und führt zu jeweils anderen Konfigurationsschritten.

Grundsätzlich müssen Sie, um den Git-Server aufzusetzen, ein Verzeichnis für die Konfiguration und die Repositories und einen zugehörigen Benutzer anlegen. Dazu kommt noch das Setup der SSH-Schlüssel, über die die Authentifizierung ausschließlich läuft. Der Zugriff auf die Git-Repositories erfolgt immer über SSH, sodass die Git-Server keinen eigenen Port erfordern. Im Prinzip ist es also auch möglich, Gitosis neben Gitolite zu installieren, nur eben mit jeweils eigener Benutzer-ID.

Gitolite

Auf Ubuntu wird bei Gitolite zwar das Paket installiert, aber kein Benutzer und entsprechend auch kein Verzeichnis angelegt. Bei Fedora dagegen gibt es nach der Paketinstallation einen Benutzer »gitolite« und für die Repositories das Verzeichnis »/var/lib/gitolite« .

Der Artikel beschreibt im Folgenden die manuelle Installation mit einem Benutzer »git« und seinem Home-Verzeichnis »/home/git« . Das Prinzip von Installation und Benutzung verdeutlicht Abbildung 1, ein Diagramm aus der Gitolite-Dokumentation.

Abbildung 1: Die Installation von Gitolite grafisch dargestellt. Bei Gitosis funktioniert es ähnlich.

Als künftiger Administrator des Git-Servers kopieren Sie den Ihren öffentlichen SSH-Schlüssel erst einmal (von einer Workstation/Client-Rechner aus) auf den Server an einen Ort, auf den auch der Benutzer »git« zugreifen darf, etwa ins Tmp-Verzeichnis:

scp .ssh/id_dsa.pub Server:/tmp/ofrommel.pub

Haben Sie noch kein Schlüsselpaar, erzeugen Sie es mit »ssh-keygen« . Auf dem Git-Server laden Sie erst einmal die Software von Github herunter:

git clone git://github.com/sitaramc/gitolite

Als Root-User führen Sie das Installations-Skript aus, das die Gitolite-Programme systemweit installiert:

# gitolite/src/gl-system-install
using default values for EUID=0:
/usr/local/bin /var/gitolite/conf /var/gitolite/hooks

Alternativ können Sie das auch als Git-User machen, dann landen die Dateien in dessen Home-Verzeichnis.

Wechseln Sie dann mit »su - git« die Benutzer-ID, und importieren Sie Ihren SSH-Public-Key in Gitolite:

gl-setup /tmp/ofrommel.pub

Gitosis präsentiert Ihnen noch einmal die Konfigurationsdatei »/home/git/.gitolite.rc« , die Sie normalerweise aber erst einmal so belassen können.

Konfiguration mit Git

Auf dem Client-Rechner klonen Sie nun das Repository, das Gitolite zur Administration mitbringt. Die Verwaltung findet künftig so statt: Sie editieren die Konfigurationsdaten dort und schieben die Änderungen dann wieder auf den Server. Der folgende Befehl klont das Repository:

git clone git@Server:gitolite-admin.git

Bricht die Verbindung ab, liegt das vielleicht daran, dass die SSH-Konfiguration nicht stimmt. Die Datei ».ssh/authorized_keys« des Git-Users muss aussehen wie in Listing 1. Wichtig ist die Zeile mit »command=« .

Listing 1

.ssh/authorized_keys

 

Hat alles funktioniert, befinden sich im neuen Verzeichnis »gitolite-admin« die beiden Verzeichnisse »conf« und »keydir« . Editieren Sie »conf/gitolite.conf« , um ein neues Repository anzulegen. Per Default enthält es bereits ein Test-Repository, wie Listing 2 zeigt.

Listing 2

conf/gitolite.conf

 

Wie man sieht, hat nur der Benutzer (Schlüssel-Besitzer) »ofrommel« Lese- und Schreibzugriff auf das Repository »gitolite-admin« . Ein neues Repository legen Sie an, indem Sie beispielsweise den Testing-Eintrag (beide Zeilen) kopieren und anpassen. Dann bestätigen Sie die Änderungen mit »git commit -a« und überspielen mit »git push« die Änderungen auf den Server, der das Anlegen des neuen Repository bestätigt:

Initialized empty Git repository in
/home/git/repositories/projekt.git/

Die Public-Keys weiterer Git-Benutzer legen Sie mit passenden Dateinamen ins Unterverzeichnis »keydir« , comitten und pushen die Änderungen wie eben beschrieben. Mehr Informationen, etwa zu der genauen Syntax, finden Sie auf dem Git-Server im Verzeichnis »$HOME/share/gitolite/conf/example.conf« beziehungsweise »/var/gitolite/conf/example.conf« oder im recht ausführlichen Gitolite-Wiki unter [6].

comments powered by Disqus

Artikel der Woche

Loadtests ohne Server

Für Loadtests der eigenen Server bietet sich die Cloud an, denn kurz getaktet lassen sich dort viele Rechnerinstanzen starten, die das eigene Budget nur wenig belasten. Noch flexibler, günstiger und besser skalierbar sind Tests mit einer Serverless-Infrastruktur wie AWS Lambda. Wir führen vor, wie Sie dort mit Serverless Artillery eigene Loadtests starten. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Container

Wie setzen Sie Container ein?

  • Gar nicht
  • Docker standalone
  • Docker mit Kubernetes
  • Docker mit Swarm
  • Docker mit anderem Management
  • LXC/LXD
  • Rocket
  • CRI-O auf Kubernetes
  • Container auf vSphere
  • Andere (siehe Kommentare auf der Ergebnisseite)

Google+

Ausgabe /2018