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