Wie man Git auf einem Ubuntuserver aufsetzt hatte ich vor einiger Zeit in einem Artikel beschrieben. Nachteil der vorgestellten Methode ist, das sie sich nur für einen Nutzer eignet. Natürlich kann man mit dieser Methode auch mehrere Nutzer zu dem Repositories verbinden, hat damit aber keine Möglichkeit mehr Zugriffsberechtigungen für die Repositories zu setzen.
Als Lösung für das Problem wird Gitolite für die Nutzer und Rechteverwaltung genutzt. Im ersten Schritt werden auf dem Server die notwendigen Pakete installiert:
sudo apt-get install git openssh-server perl
Als nächster Schritt wird der Nutzer angelegt, in welchem Gitolite läuft und in diesen gewechselt:
sudo useradd -m git sudo su git
Danach geht es auch schon an die Installation von Gitolite:
cd ~ git clone git://github.com/sitaramc/gitolite mkdir bin cd gitolite ./install -ln
Anschließend muss der öffentliche SSH Schlüssel von dem Rechner mit welchem auf das System zugriffen werden soll in den Home Ordner des „git“ Nutzers kopiert werden. Anschließend kann das Setup abgeschlossen werden:
cd ~/bin ./gitolite setup -pk $HOME/seeseekey.pub
Damit ist das Setup abgeschlossen und es kann an die Konfiguration gehen. Dazu wird vom Rechner dessen Public Key beim Setup benutzt wurde das entsprechende administrative Repository geklont:
git clone git@192.168.1.128:gitolite-admin
Die Dateistruktur des Repositories sieht dabei wie folgt aus:
conf gitolite.conf keydir seeseekey.pub
In dem Verzeichnis „keydir“ sind die SSH Schlüssel enthalten. Um einen Nutzer hinzuzufügen reicht es einfach einen neuen öffentlichen Schlüssel in das Verzeichnis zu legen und das ganze ins Git Repository einzubringen. Die eigentliche Konfiguration der Repositories erfolgt in der „gitolite.conf“ Datei. Diese sieht nach der Erzeugung so aus:
repo gitolite-admin RW+ = seeseekey repo testing RW+ = @all
Das bedeutet das es zwei Repositores gibt, eines trägt den Namen „gitolite-admin“ und dient der Verwaltung. Das zweite Repository ist „testing“ auf das alle Nutzer zugreifen dürfen. Benötigt man nun ein neues Repository, so fügt man einen neuen „repo“ Abschnitt mit dem Namen und den entsprechenden Rechten hinzu. Sobald das ganze commitet und gepusht wurde, legt Gitolite das neue Repository an. Wenn man bei den Schlüsseln mehrere SSH Schlüssel pro Nutzer wünscht, so legt man dafür am besten eine Verzeichnisstruktur an:
keydir seeseekey rechner1 seeseekey.pub rechner2 seeseekey.pub
Möchte man ein Repository löschen so entfernt man es aus der „gitolite.conf“ und löscht es anschließend auch vom Server. Damit hat man eine Lösung für Git Server mit mehren Nutzern und und entsprechender Verwaltung.
Was auch eine sehr interessant ist, ist Gitlab (http://gitlab.org). Das hat bis vor kurzem auch noch gitolite aufgebaut, ist mittlerweile aber davon unabhängig. Wenn einen Server hat, der etwas stärker ist als ein Raspberry Pi (der ist leider zu langsam ;)), eine wirklich tolle Sache. :)
Gitlab hatte ich davor getestet und war mir einfach zu viel Overkill ;)
Pingback: Gogs unter Linux betreiben | seeseekey.net