Die Verwaltung von Softwareprojekten und deren Quellcode erfordert zuverlässige und flexible Serverlösungen. Git ist seit langem das bevorzugte Versionskontrollsystem vieler Entwickler und Teams. Obwohl zahlreiche Hosting-Plattformen existieren, entscheiden sich viele Unternehmen und Entwickler für die lokale Bereitstellung von Git Servern, die auf ihrer Infrastruktur laufen. Eine elegante Möglichkeit dafür ist die Kombination des Apache HTTP Servers mit Git über das HTTP-Protokoll. Insbesondere auf Ubuntu 24.
04 LTS bietet sich die Möglichkeit, den Apache Server direkt aus dem Quellcode zu bauen, wodurch maximale Flexibilität und Kontrolle gewährleistet wird. Dies ermöglicht es, spezielle Module und Funktionen zu aktivieren, die für den Git Betrieb unabdingbar sind. Der klassische Paketmanager-Ansatz von Ubuntu bringt zwar eine einfache Installation mit sich, kann aber durch seine Aufteilung der Konfigurationen die Anpassung und Fehlerbehandlung erschweren. Beim Bau aus dem Quellcode hingegen lassen sich Konfigurationsdateien zentral und übersichtlich pflegen, was vor allem in Umgebungen mit individuellen Anforderungen Vorteile bietet. Um den Bauprozess des Apache Servers zu starten, ist es notwendig, zunächst einige wichtige Abhängigkeiten wie Subversion, libtool-bin, autoconf und libpcre2-dev zu installieren.
Anschließend kann die neueste Version 2.4.x aus dem offiziellen Apache SVN-Repository ausgecheckt werden. Besonders hervorzuheben ist dabei, dass der Apache Portable Runtime (APR) ebenfalls direkt vom Quellcode eingebunden und kompiliert wird, was die Kompatibilität und Leistung der Serveranwendung steigert. Der Befehl buildconf ist dabei essenziell, da der SVN-Checkout zunächst keine Konfigurationsdatei enthält.
Mit buildconf wird diese unmittelbar generiert, sodass anschließend die eigentliche Konfiguration des Builds mit spezifischen Optionen wie Debug-Modus, URL-Rewrite oder Log-Debugging vorgenommen werden kann. Besonders wichtig ist das Setzen des Installationspfades, der in diesem Fall auf /opt/apache2 gelegt wird, um eine klare Trennung von Systeminstanzen zu gewährleisten. Nach erfolgreichem Kompilieren und Installieren des Servers kann die Funktionsfähigkeit durch einen Schnelltest überprüft werden. Dabei übernimmt der Apache HTTP Server die Auslieferung einfacher HTML-Seiten, die sich im Ordner htdocs befinden und somit die Basiskonfiguration bestätigen. Der nächste große Schritt ist die Integration von Git in den Apache Server.
Dazu bedient man sich des sogenannten smart HTTP-Protokolls, bei dem Git über die Common Gateway Interface-Schnittstelle (CGI) kommuniziert. Das Herzstück dieser Integration bildet die Datei git-http-backend, die sämtliche notwendigen Git-Operationen und die damit verbundenen HTTP-Anfragen verarbeiten kann. Um dies zu ermöglichen, sind bestimmte Apache-Module wie mod_cgid, mod_alias und mod_env zu aktivieren. Sie sorgen für die Ausführung von CGI-Skripten, das Einrichten von Alias-Pfaden sowie die Übertragung von Umgebungsvariablen. Die Konfiguration des Apache Servers wird durch das Ergänzen von ScriptAlias- und SetEnv-Direktiven angepasst.
Das ScriptAlias weist Anfragen auf /git/ dem git-http-backend zu, während die Umgebungsvariablen GIT_PROJECT_ROOT und GIT_HTTP_EXPORT_ALL den Speicherort der Repositories andeuten und den Export erlauben. Die Absicherung der Git Repositories erfolgt durch das Einrichten einer HTTP-Basic-Authentifizierung. Dazu wird die Funktion AuthUserFile genutzt, welche auf eine .htpasswd-Datei verweist. Nur Nutzer mit gültigen Zugangsdaten erhalten Zugriff auf die Git Server-Dienste.
Die Access-Regeln lassen sich zudem so verfeinern, dass Schreiboperationen wie git-receive-pack besonders geschützt werden, während Leseoperationen flexibler gehandhabt werden können. Die Erstellung der .htpasswd-Datei ist denkbar einfach und erfolgt mit dem Werkzeug htpasswd. Dieses ermöglicht die einmalige oder wiederkehrende Anlage von Nutzern samt verschlüsseltem Passwort. Damit wird ein sicherer, aber auch gut zu verwaltender Zugriff gewährleistet.
Obwohl die beschriebenen Schritte eine solide Grundlage für einen lokalen Git Server mit Apache schaffen, sind Berechtigungen und Besitzverhältnisse der Git Repositories häufig Stolpersteine. Gerade bei Push-Operationen, die Schreibzugriff erfordern, muss der Webserver-Prozess das Recht haben, Daten im Repository-Verzeichnis anzulegen und zu verändern. Eine falsche Gruppenzuordnung oder zu restriktive Dateirechte führen zu Fehlermeldungen wie "unable to create temporary object directory". Die Lösung ist meist das korrekte Setzen von Gruppenzugehörigkeit auf die vom Apache Server verwendete Benutzergruppe, oft daemon, und entsprechende Schreibrechte mit chmod, die jedoch nicht zu großzügig vergeben sein sollten, um Sicherheitsrisiken zu minimieren. Sollte der Apache Server nach einer Konfigurationsänderung nicht sauber starten, empfiehlt es sich, zunächst die laufenden httpd-Prozesse vollständig zu beenden, da diese oft im Hintergrund weiterlaufen und dadurch einen Neustart blockieren.
Werkzeuge wie killall helfen dabei, alle Prozesse zu beenden. Danach kann der Server über apachectl sauber neu gestartet werden. Für die tägliche Nutzung bieten sich hilfreiche Apache CLI-Befehle an, die Syntaxüberprüfungen oder die Anzeige aktiver virtueller Hosts ermöglichen. Diese Werkzeuge helfen bei Fehlerdiagnosen und erleichtern den Betrieb. Das Bauen eines Apache HTTP Servers aus dem Quellcode auf Ubuntu 24 liefert somit eine robuste und anpassbare Plattform für das Hosting von Git Repositories im Firmennetz oder anderen geschützten Umgebungen.
Die Kombination von Systemintegration, Sicherheitsmechanismen und Git-spezifischen Features schafft eine flexible Infrastruktur für Entwicklerteams, die volle Kontrolle über ihre Codebasis behalten wollen. Es bleibt darauf hinzuweisen, dass der Betrieb eines solchen HTTP Git Servers im öffentlichen Internet zusätzliche Sicherheitsmaßnahmen wie HTTPS-Verschlüsselung, Firewalls und striktes Zugriffsmanagement erfordert und daher sorgfältig geplant sein sollte. Mit den vorgestellten Grundlagen kann jedoch jeder Administrator und Entwickler eine stabile und effektive Git-Umgebung auf Basis von Apache und Ubuntu 24.04 aufbauen, die den individuellen Anforderungen gerecht wird und sich durch hohe Performance sowie Wartbarkeit auszeichnet.