Bei mir dient Subversion schon länger zur Codeverwaltung. Darin kann ich einfach verschiedene Projekte releasefest speichern. Manche bevorzugen git, aber in einer „single developper“ Umgebung, die nicht veröffentlicht wird, reicht mir persönlich SVN aus. Immer wieder kommt die Aktualisierung zum Zuge und dabei setze ich immer wieder einen Server neu auf. Dieses mal hat es den SVN Server getroffen. Dieser wird mit Debian 10 (Buster) komplett neu aufgesetzt.

Die Installation erfolgt, wie auf debian üblich, ganz einfach über den Paketmanager apt. Login als root und folgende Befehle ausführen:
1 2 3 4 5 | apt update && apt upgrade apt install subversion apache2 libapache2-mod-svn a2enmod authz_user mkdir /var/lib/svn chown -R www-data /var/lib/svn |
Nach erfolgreicher Installation werden Benutzer angelegt. Für unsere Instanz wird der erste Benutzer mit „-cm“ angelegt, die folgenden nur mit „-m“ („c“ bedeutet hier „create“ und „m“ bedeutet „modify“). Die Vorgestellte Option „-b“ erlaubt uns das passwort über die commandline einzugeben statt interaktiv danach zu fragen.
1 2 | htpasswd -bcm /etc/apache2/dav_svn . passwd testuser1 testuser1 htpasswd -bm /etc/apache2/dav_svn . passwd testuser2 testuser2 |
Den Inhalt der erstellten Passwort-Datei kann mit folgendem Befehl abgefragt werden:
1 | cat /etc/apache2/dav_svn . passwd |
Jetzt kann der Subversion Deamon gestartet werden und mit der Konfiguration von Webdav fortgeschritten werden.
1 2 3 4 | svnserve -d -r /var/lib/svn a2enmod dav a2enmod dav_svn a2enmod authz_svn |
Damit der Zugang zu den Repositories auf userbasis an- bzw. abgeschaltet werden kann, muss die Datei /etc/apache2/dav_svn.authz gepflegt werden. Datei wie folgt anlegen:
1 | nano /etc/apache2/dav_svn.authz |
Und mit folgendem Inhalt befüllen:
1 2 3 4 5 6 7 8 9 | [groups] admins = testuser1 [/] * = r @admins = rw [Repo TEST:/testlocal] testuser2 = r |
Abschließend die Datei /etc/apache2/mods-available/dav_svn.conf anpassen.
1 | nano /etc/apache2/mods-available/dav_svn .conf |
Damit sie so aussieht (https ist nicht aktiviert):
1 2 3 4 5 6 7 8 9 10 | < Location /svn> DAV svn SVNParentPath /var/lib/svn/ SVNListParentPath on AuthType Basic AuthName "Subversion Repository" AuthUserFile /etc/apache2/dav_svn.passwd AuthzSVNAccessFile /etc/apache2/dav_svn.authz Require valid-user </ Location > |
Am Ende noch den Apache durchstarten, damit ist alles fertig installiert und konfiguriert.
1 2 3 | /etc/init .d /apache2 restart oder service apache2 restart |
Jetzt kann die Webseite des Servers aufgerufen werden. (http://host.domain/svn/) Nach der Authentifizierung wird die „Collection of Repositories“ angezeigt, also die Liste der aktuellen Repositories. Zum Anfang ist diese leer. Ein neues Repository kann wie folgt angelegt werden:
1 2 3 4 5 | cd /var/lib/svn mkdir testlocal svnadmin create testlocal chown -R www-data:www-data /var/lib/svn chmod -R 775 /var/lib/svn |
Unter /var/www/html/ ist die Standard-Webseite des Apache hinterlegt. Diese kann nun für weitere / andere Zwecke verwendet werden, exklusive dem Pfad …/svn/ . Dieser wird automatisch auf SVN umgeleitet.
QUELLEN
https://serverfault.com/questions/159247/how-does-authzsvnaccessfile-work