Im Netz findet man jede Menge Anleitungen, wie man SVN unter WAMP einrichtet. Trotzdem stand ich mal wieder mitten im Wald. Ich konnte zwar SVN in den Apache integrieren, jedoch ließ sich der Apache danach nur noch auf der Kommandozeile starten, und nicht mehr über das WAMP-Tray-Icon. Aber beginnen wir von vorn…
Bereits seit längerem habe ich den WAMP-Server inklusive xdebug-Plugin für die PHP-Entwicklung im Einsatz. Diesen wollte ich nun um die SVN-Integration erweitern, ohne einen zusätzlichen Apache installieren zu müssen. Hier zunächst meine vorhandene Konfiguratoin:
Wamp-Verzeichnis: D:\wamp
Apache-Version: 2.2.11
MySQL-Version: 5.1.33
PHP-Version: 5.2.9-2
Schritt 1 – Download
Als erstes habe ich mir die aktuelle Version (Version 1.6.2) von Subversion als ZIP-Archiv für den Apache 2.2 geladen. Es gibt für Apache 2.0 und 2.2 separate Downloads .. daher muss man hier auf die Vorraussetzung sehr genau achten. Die Einen Installer wollte ich nicht verwenden. Für den Apache 2.2 kann man das ZIP-Archiv unter nachfolgendem Link downloaden … es ist der letzte Eintrag in der Tabelle.
Download SVN Binaries für Apache 2.2.x
Schritt 2 – Entpacken
Ich habe mich entschieden, die SVN-Programmdateien in die Verzeichnisstruktur von WAMP zu integrieren. In meinem Falls hab ich das Archiv nach “D:\wamp\bin” entpackt. Die folgende Abbildung zeigt die Verzeichnisstruktur.
Schritt 3 – Konfigurieren von Apache
Viele Anleitung im Netz und auch die readme-Datei von SVN empfiehlt an dieser Stelle die .so-Dateien in den “modules”-Ordner von Apache zu kopieren und danach den Systempfad zu erweitern, damit Apache auf alle Bibliotheken von SVN zugreifen kann. Das hat mich in große Schwierigkeiten gebracht, weshalb ich hier einen anderen Weg gehen möchte. Warum, kann weiter unten nachgelesen werden.
Bei meinem hier gezeigten Lösungsansatz müssen keinerlei Dateien in den Apache kopiert werden, noch muss die PATH-Umgebungsvariable angepasst werden.
Zunächst öffnet man die httpd.conf-Datei über das WAMP-Traymenü oder direkt über einen Editor und sucht nach den folgenden beiden Zeilen:
#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule dav_module modules/mod_dav.so
Dies sind zwei in Apache bereits enthaltene Module die man für die Nutzung von SVN benötigt. Daher muss man am Anfang jeder Zeile das “#”-Zeichen löschen.
Jetzt müssen noch zwei neue Module hinzugefügt werden, die nicht im Apache enthalten sind. Die betreffenden Module befinden sich im SVN-Ordner, und das ist gut so. Wenn der Apache diese Module direkt aus dem SVN-Bin-Verzeichnis lädt, können auch alle weiteren benötigten SVN-Bibliotheken fehlerfrei geladen werden. Um das zu erreichen, fügt man die beiden folgenden Zeilen in die httpd.conf-Datei ein:
LoadModule dav_svn_module "../../svn-win32-1.6.2/bin/mod_dav_svn.so"
LoadModule authz_svn_module "../../svn-win32-1.6.2/bin/mod_authz_svn.so"
Der Pfad zu den Modulen ist relativ angegeben. Falls man einmal die Wamp-Installation verschieben muss, funktionieren die SVN-Module dennoch. Wir sind aber noch nicht ganz fertig. Ein bestimmte Pfad auf unserem Webserver soll zukünftig den Zugriff auf das SVN-Repository ermöglichen. Hierfür fügen wir am Ende folgenden Abschnitt in die httpd.conf-Datei ein.
<Location /svn>
DAV svn
SVNListParentPath on
SVNParentPath D:\wamp\svn_repository
#SVNIndexXSLT “/svnindex.xsl”
#AuthType Basic
#AuthName “Subversion-Projektarchive”
#AuthUserFile passwd
#AuthzSVNAccessFile svnaccessfile
#Require valid-user
</Location>
Kurz noch zur Erklärung: In der ersten Zeil geben wir an, dass wir die Adresse “/svn” des Webservers konfigurieren wollen. Die zweite Zeile aktiviert SVN. Die nächsten beiden Einstellungen (SVNListParentPath und SVNParentPath) legen ein Verzeichnis fest, wo sich mehrere SVN Projekt-Archive befinden können. Das hat den Vorteil, dass man über eine URL mehrere SVN-Projekte erreichen kann und gleichzeitig das Anlegen eines neuen Projektarchives durch das Anlegen eines neuen Ordner ermöglicht wird. Die nachfolgenden Zeilen richten die Zugangskontrolle ein, die ich hier jedoch deaktiviert habe. Wer die Benutzersteuerung einrichten möchte, kann hier mehr erfahren.
Nun speichern wir die vorgenommen Änderung der httpd.conf-Datei. Man muss noch sicherstellen, dass das oben mittels “SVNParentPath” angegeben Verzeichnis auch existiert. Über den Explorer kann man das noch kurzer Hand erstellen. Zum Schluß wählt man aus dem Menü des Wamp-TrayIcons den Eintrag “Restart All Services”.
Schritt 4 – Testen der Einrichtung
Natürlich wollen wir jetzt wissen, ob unser SVN jetzt auch funktioniert. Dafür benötigt man einen Browser. Am einfachsten ist wieder das Wamp-TrayIcon. Aus dem Menü einfach “localhost” auswählen und der Standard-Browser wird geöffnet. Nun noch die Adresse auf “http://localhost/svn” geändert …. und man sieht … nun nicht viel.
Aber es funktioniert soweit. Jetzt müssen wir noch ein Projektarchiv in unserem Repository einrichten. Dazu sind folgende Schritte notwendig:
1) Erstellen eines neuen Ordner
2) Anlegen des Projektarchives
Mit Hilfe von TortoiseSVN initialisieren wir nun unseren eben angelegten Ordner.
Das angelegt Verzeichnis kann man nun auch im Webbrowser wiederfinden. Die Einrichtung ist nun vollends abgeschlossen und man kann nun weitere Ordner und Dateien in das angelegte Projektarchiv imortieren.
Warum?
Die meisten Anleitungen im Netz empfehlen die innerhalb SVN zu findenden .so-Module in das “modules”-Verzeichnis des Apache zu kopieren. Das wiederum führt dazu, dass man entweder bestimmte DLLs von SVN in das bin-Verzeichnis des Apache kopiert oder das SVN-Bin-Verzeichnis in den systemweiten Pfad aufnimmt. Leider habe ich dabei einen Fehler gemacht und das SVN-Bin-Verzeichnis nur in die Pfadvariable meines Windowsbenutzer aufgenommen. Durch diesn Fehler ließ sich der Apache über das Wamp-TrayIcon nicht mehr starten. In der Ereignisanzeige fand ich später folgende Fehlermeldung:
The Apache service named reported the following error:
>>> httpd.exe: Syntax error on line 86 of D:/wamp/bin/apache/Apache2.2.11/conf/httpd.conf: Cannot load D:/wamp/bin/apache/Apache2.2.11/modules/mod_dav_svn.so into server: Das angegebene Modul wurde nicht gefunden.
Gleichzeitig konnte ich jedoch die “httpd.exe” unter meinem Benutzer aus einer Shell starten und mit dem Webserver inkl. SVN fehlerfrei arbeiten. Erst nach einiger Zeit wurde mir klar, dass der Apache vom Wamp-TrayIcon als Dienst (unter dem lokalen Dienste-Account) gestartet wird und daher meine lokal definierten Umgebungsvariablen (und somit auch der erweiterte Pfad) nicht verwendet wurden. Daher suchte ich nach einer eigenen Lösung, mit welcher ich dem Problem zukünftig aus dem Weg gehen kann.
Wampserver Homepage
Handbuch zu TortoiseSVN
Subversion Download Page