SVN (Subversion) Server auf Linux installieren

Eine Versionsverwaltung ist das A und O eines Entwicklers. Wenn man alleine Arbeitet ist einem ein GIT vielleicht zu groß, hier kommt SVN ins Spiel. Es ist ein zentrales Versionsverwaltungstool welches man sehr einfach installieren und betreiben kann. Hier die Schritte um einen RaspberryPi oder eine andere Linux-Maschine in einen SVN Server zu verwandeln.

Schritt 1: Apache Webserver installieren

Der SVN Server läuft auf einem Apache Web-Server. Der ist mit APT schnell installiert.

sudo apt update
sudo apt -y install apache2 apache2-utils

Schritt 2: Apache SVN mit allen nötigen Tools installieren

sudo apt -y install vim tree subversion libsvn-dev libapache2-mod-svn subversion-tools

Schritt 3: Die nötigen Module für SVN aktivieren und den Apache Server neustarten

sudo a2enmod dav dav_svn
sudo systemctl restart apache2

Schritt 4: Apache SVN Konfiguration anpassen (/etc/apache2/mods-enabled/dav_svn.conf)

Alias /svn1 /media/svnNAS
<Location /svn>

   DAV svn
   SVNParentPath /media/svnNAS

   AuthType Basic
   AuthName "Subversion Repository"
   AuthUserFile /etc/apache2/svn_user/dav_svn.passwd
   Require valid-user
</Location>

Mein SVN Verzeichnis auf dem Server ist „/media/svnNAS“.
Der Link bzw. der Alias ist „/svn“ (http://deinedomainoderip/svn/.

Das AuthFile haben ich unter „/etc/apache2/svn_user/dav_svn.passwd“ abgelegt.

Schritt 5: Apache Server neustarten

sudo systemctl restart apache2

Schritt 6: Benutzer für den SVN Server erstellen

Das ganze muss natürlich sicher sein, dafür legt man eine eigene Datei an die den Benutzernamen und das Passwort (verschlüsselt) speichert. Wie oben bereits beschrieben, habe ich das File in „/etc/apache2/svn_user/dav_svn.passwd“ abgelegt.

htpasswd -cm /etc/apache2/svn_user/dav_svn.passwd admin

Nach der Eingabe wird zugleich das Passwort abgefragt welches der Benutzer haben soll

New password: (PASSWORT)
Re-type new password: (PASSWORTBESTÄTIGEN)
Adding password for user admin

Wir verwenden bei dem Befehl zwei Optionen. Zum einen „c“ welches angibt, dass wir eine neue Datei erstellen wollen. Dieses brauchen wir für neue User danach nicht mehr. Und „m“ welches angibt, dass das eingegebene Passwort per MD5 verschlüsselt wird.

Für neue Benutzer ist der Befehl dann wie folgt:

htpasswd -m /etc/apache2/svn_user/dav_svn.passwd NeuerBenutzer

Schritt 7: Das erste Repository mit „svnadmin“ anlegen

Wie man in der Konfiguration gesehen hat, habe ich meinen Repository-Speicher auf „/media/svnNAS“ abgelegt. Der Ordner „svnNAS“ muss also erst angelegt werden.

mkdir /media/svnNAS

Wenn das erledigt ist, können wir mittels „svnadmin“ unser erstes Repository anlegen

svnadmin create /media/svnNAS/(repo-name)

(repo-name) müsst ihr durch den Namen eures ersten Repositorys ändern!
Dieser Befehl erstellt nun automatisch die passende Ordner und Dateistruktur die benötigt wird,

Schritt 8: Rechte für den Apache

Da der SVN Server auf einem Apache läuft, hat auch nur der Apache die Möglichkeit das Repository aufzurufen. Daher muss das Repository dem Benutzer des Apache zugewiesen sein. In der Regel ist das „www-data“ mit der gleichnamigen Gruppe.

chown -R www-data:www-data  /media/svnNAS

Zusätzlich benötigt der Server die passenden Lese und Schreibrechte

chmod -R 775 /media/svnNAS

Mit der Option „-R“ werden auch Unterordner und Dateien mit diesen Rechten ausgestattet.

Schritt 9: FINALE – Der Test eures SVN Servers

Der Server ist fertig. Das praktisch, man kann euer erstes Repository nun direkt im Browser aufrufen.
Gehen wir davon aus, ihr habt das Repository „MyRepo“ genannt, dann könnt ihr mit folgendem Link das ganze aufrufen:

http://serveripodername/svn/MyRepo

Jetzt solltet ihr aufgefordert werden, euren Benutzernamen und Passwort einzugeben. Danach erscheint euer erster Repository!

Abschließende Wort

Subversion ist in der Regel nicht die erste Wahl, ein GIT hat viele Vorteile. Ich mag Subversion aber für mich Zuhause lieber. Im Falle eines Server-Ausfalls, habe ich aber keinen Zugriff mehr auf meine Daten. Da ist GIT praktischer. Dennoch, für meine privaten Arbeiten, mein bevorzugtes Tool.

Als Tool auf meinem Mac nutze ich Versions. Ein praktisches Tool für die Arbeiten mit einem Subversion-Server.

Und nun, viel Spass damit! Bei Fragen, gerne kommentieren.