Step-by-Step Anleitung zur Installation eines Subversion (SVN) Servers mit Apache Integration + WebZugriff via WebDAV
Apache SVN ist eines der bekanntesten Open-Source Versionierungssysteme für Dateien und Ordner. Die Versionierung erfolgt dabei im Gegensatz zu GIT in einem zentralen Repository, welches in dieser Anleitung Schritt für Schritt installiert und erstellt wird.
Mittlerweile empfehle ich eigentlich GIT als Versionierungssystem, weil die Vorteile einer dezentralen Logik überwiegen, aber ein Kunde von uns möchte gerne SVN einsetzen und so legen wir einen neuen Server an. 😉
Abhängigkeiten und erforderliche Programme installieren
Folgende Voraussetzung sollte für den Betrieb von SVN installiert sein:
*) Apache Webserver (apt-get install apache2)
In folgendem Tutorial genauer beschrieben: LAMP Installation unter Debian Wheezy
Subversion installieren und Repository anlegen
Im ersten Schritt wird das subversion Programm via apt-get installiert:
[bash]apt-get updateapt-get install subversion[/bash]
Nach der Installation wird ein Ordner erstellt, wo die Repositories abgelegt werden (/var/svn)
[bash]mkdir /var/svn[/bash]Nun kann auch schon das erste Repository im Ordner /var/svn/ angelegt werden. Ich verwende hierfür den Namen „meinprojekt“. Er kann natürlich nach belieben angepasst werden bzw. können mehrere Repos angelegt werden:
[bash]svnadmin create /var/svn/meinprojekt[/bash]SVN mit dem Apache verbinden
Subversion ist nun als eine lokale Variante auf unserem Server installiert. Damit nun auch von extern auf das Service zugegriffen werden kann benötigen wir WebDAV auf dem Apache Webserver mit dem SVN Modul „libapache2-svn“.
[bash]apt-get install libapache2-svn[/bash]Nach der Installation des Modul, wird dieses nun entsprechend konfiguriert. Dazu bearbeiten wir die Datei /etc/apache2/mods-available/dav_svn.conf mit dem Lieblingseditor und passen sie für unsere Bedürfnisse an.
Inhalt:
[bash] <Location /svn>DAV svn
SVNParentPath /var/svn
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
</Location>
[/bash]
Der URL String /svn wird nun auf unserer Repositories im Verzeichnis /var/svn gemappt.
[sam id=“2″ codes=“true“]Subversion WebDAV Benutzer anlegen
Als Authentifizierung dient die Datei /etc/apache2/dav_svn.passwd, welche als User Datenbank verwendet wird. Die Datei wird folgendermaßen erstellt. Dabei wird der Benutzer „meinuser“ angelegt. Dieser kann natürlich wieder frei gewählt werden:
[bash]htpasswd -c /etc/apache2/dav_svn.passwd meinuser[/bash]Weitere Benutzer hinzufügen:
[bash]htpasswd /etc/apache2/dav_svn.passwd deinuser[/bash]Berechtigungen für das SVN Verzeichnis richtig setzen:
[bash]chown www-data:www-data /var/svn -R[/bash]Apache Webserver neu starten:
[bash]/etc/init.d/apache2 restart[/bash]Zugriff auf das SVN Repository
Zugriff via Browser (Webinterface)
[bash]http://meinedomain/svn/meinprojekt[/bash]Zugriff via Subversion Client (Versions für Mac)
Subversion (SVN) Zugriff via Subdomain:
Damit das SVN Repository nicht nur via „hostname/svn“ erreichbar ist sondern auch direkt via Subdomain (svn.domain.com) aufgerufen werden kann ist eine Anpassung der Apache Konfiguration nötig. Der Eintrag von /etc/apache2/mods-available/dav_svn.conf wird direkt in die vhost Config des Webservers übernommen:
zB: /etc/apache2/sites-available/default
Inhalt:
[bash]<VirtualHost *:80>ServerName svn.sysadminslife.com
DocumentRoot /var/svn
<Location />
DAV svn
SVNParentPath /var/svn
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
</Location>[/bash]
Apache neu starten
[bash]/etc/init.d/apache2 restart[/bash]Der Aufruf funktioniert nun direkt auf die Subdomain:
[bash]http://svn.sysadminslife.com/meinprojekt[/bash]
Wie kann man heutzutage noch subversion nutzen? Warum nicht Git oder zumindest Bazaar (letzteres wegen der einfachen Bedienbarkeit)?
Hallo Dakira,
das war die Anforderung des Kunden 😉 Wie im Blogpost erwähnt empfehle ich ausschließlich Git!
Gruß
Patrick
Argh. Wer lesen kann ist klar im Vorteil. Das kommt davon, wenn man Artikel nur überfliegt. Kundenerziehung ist wahrscheinlich auch nicht eure Aufgabe. 😉
Ne 😉 Kunde ist König *lach* Einen Hinweis kann man dem immer geben, was er dann daraus macht ist immer seine Sache 😉
Hi,
ich hab noch einen fehler entdeckt. Du musst beim Mappen des Verzeichnis auf mappen , nicht auf . Dann geht es auf Anhieb (ubuntu Server mit der aktuellen apache2 Version )