Debian 10 (Buster) – SVN Server Installation

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:

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.

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:

cat /etc/apache2/dav_svn.passwd

Jetzt kann der Subversion Deamon gestartet werden und mit der Konfiguration von Webdav fortgeschritten werden.

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:

nano /etc/apache2/dav_svn.authz

Und mit folgendem Inhalt befüllen:

[groups]
admins = testuser1

[/]
* = r
@admins = rw

[Repo TEST:/testlocal]
testuser2 = r

Abschließend die Datei /etc/apache2/mods-available/dav_svn.conf anpassen.

nano /etc/apache2/mods-available/dav_svn.conf

Damit sie so aussieht (https ist nicht aktiviert):

<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.

/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:

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