Vor einiger Zeit habe ich auf meinem MacMini Server den Apache so erweitert, dass über ihn die auf diesem Rechner gehosteten GIT Repositories genutzt werden können.
Doch mit der Installation von Mountain Lion ist die Migration der Server Anwendungen nicht so erfolgreich verlaufen, so sind dann auch diese Konfigurationseinstellungen verloren gegangen.
Da meine Heizung kaputt gegangen ist und ich daher mit kaltem Wasser duschen müsste, arbeite ich heute von daheim und kann daher nebenher das GIT Setup noch einmal kontrollieren.
In Mountain Lion Server (ML) hat sich in der Server.app so Einiges geändert. Insbesondere sind nun auch die Konfigurationsdateien an einer gänzlich anderen Stelle im Dateisystem abgelegt. Doch das soll uns nicht stören, {“ starten wir einfach mal die Installation “} indem wird mit einem ps auxw | grep http
ermitteln, aus welchem Verzeichnis der Apache httpd seine Einstellungen liest. Offensichtlich wird hier seit ML die Datei httpd_server_app.conf
im Verzeichnis /Library/Server/Web/Config/apache2
verwendet. Starten wir also dort mit den Arbeiten.
cd /Library/Server/Web/Config/apache2
export SERVER_INSTALL_PATH_PREFIX=/Applications/Server.app/Contents/ServerRoot
Die benötigten Konfigurationsdateien sind in einem winzigen GIT Repository auf Bitbucket und Github gehostet. Dort befinden sich die notwendigen Dateien in den Unterverzeichnissen webapps
und webapp_scripts
. Diese kopieren wir an die entsprechenden Stellen der Konfigurationsverzeichnisses:
cp ~/gitOnLion/webapps/de.reswi.git.plist webapps
cp ~/gitOnLion/webapp_scripts/httpd_git.conf webapp_scripts
In httpd_git.conf
muss nun der individuelle Ablageort der GIT Repositories hinterlegt werden. Bei mir ist dies das Verzeichnis /Volumes/Daten/git
, für diese Einstellung wird in dieser Datei eine Environmentvariable definiert. In dieser Zeile muss nun der lokal gültige Pfad einmalig eingetragen werden.
Damit sind die Vorbereitungen soweit eigentlich beendet. Nun muss das vorbereitete Konfigurationsfragment so in die Konfiguration des Apache eingetragen werden, dass sie auch bei künftigen Änderungen verlässlich berücksichtigt wird.
webappctl start de.reswi.git
Dieser Befehl startet die GIT ‘Webapp’ allerdings noch nicht. Tatsächlich wird nur die Konfiguration des Apache neu aufgebaut, wobei nun auch unsere Erweiterung genutzt wird. Allerdings ist dies nun auch der passende Moment, die Konfiguration nun noch einmal vom Apache konfigurieren zu lassen:
apachectl -t -D FOREGROUND -D WEBSERVICE_ON -f `pwd`/httpd_server_app.conf
Sollte ein Konfigurationsfehler gemeldet werden, sollte zuerst diese Webapp wieder aus der Apache-Konfiguration entfernt werden. Danach beginnt die Fehlersuche…
webappctl stop de.reswi.git
Ist die Konfiguration durch den Apache erfolgreich geprüft worden, kann nun der Apache Prozess neu gestartet werden. Tatsächlich reicht es, diesen Dienst anzuhalten, er wird durch das System dann automatisch wieder nachgestartet. An dieser Stelle ist es definitiv noch eine gute Idee sicherzustellen, dass GIT auch auf dem System installiert ist. Die vorliegende Konfiguration geht davon aus, dass eine aktuelle Version von Xcode installiert ist. Das damit verfügbare git-http-backend
wird erwartet, um die korrekte Protokollumsetzung durchzuführen. Die Selbstverständlich kann auch über Homebrew eine entsprechende GIT Version installiert werden.
Anyway: ich bin experimentierfreudig und mir auch sicher, dass Xcode installiert ist…
launchctl stop org.apache.httpd
Zur Sicherheit sollten wir gleich für den Test ein eigenes Repository anlegen. Spätestens jetzt wird uns gegebenenfalls auffallen, dass uns GIT fehlt.
mkdir /Volumes/Daten/git
cd /Volumes/Daten/git
git init --bare newRepository.git
chown -R _www:_www newRepository.git
Nun sollten die GIT Verzeichnisse korrekt durch den Apache bereitgestellt werden. Dies lässt sich leicht testen, indem eines der Repositories geklont wird. Wahrscheinlich wird bei einem ersten Zugriffsversuch die SSL Verifikation zu einem Abbruch führen. Ursache ist das in der Regel selbst signierte SSL Zertifikat für die HTTPS Kommunikation. Die Überprüfung dieses Zertifikats durch GIT kann allerdings abgeschaltet werden.
git config --global http.sslverify false
git config --global http.postBuffer 512000000
git clone https://user@local.server/git/newRepository.git
Bei dem verwendeten user
handelt es sich um einen nativen Benutzer des Serversystems. Der Apache nutzt für die Authentisierung der Zugriffe standardmäßig auch die übliche Benutzerverwaltung.
Nach diesen Änderungen sollte eigentlich der Nutzung eines Mac Mini als GIT Server nichts mehr entgegenstehen. Allerdings sollte man berücksichtigen, dass diese Repositories wertvoll sind und zusätzlich auch noch auf einem externen Sicherungsmedium (das ist keine angeschlossene USB Platte) gesichert werden.