Subversion auf Subdomain mit Authentifizierung einrichten
Subversion ist eine freie Versionsverwaltung, die vor allem in professionellen Entwicklungsumgebungen eingesetzt wird. Aber auch für Privatanwender kann Subversion sinnvoll sein. Ich nutze Subversion unter anderem für meine Studienarbeiten und Java-Projekte. Einfach ausgedrückt, ermöglicht Subversion, jeden hochgeladenen Stand einer Datei wiederherzustellen. Dieser Artikel zeigt euch, wie ihr einen Subversion-Server aufsetzt, bei dem die Zugangskontrolle über den Apache Webserver auf einer Subdomain realisiert wird.
Getestet habe ich dieses Setup auf meinem vServer unter Ubuntu 9.04. Es werden hierbei Kenntnisse über die Apache Webserver-Administration und Subversion-Kenntnisse vorausgesetzt. Die Subversion-Repositories werden hier unter /var/www/svn liegen, du musst also gegebenenfalls die Pfade anpassen.
Benutzer wechseln
Damit du später keine Rechteprobleme bekommst, wechselst du zunächst den Benutzer:
su www-data
Jetzt bist du als der Benutzer eingeloggt, der für den Betrieb des Webservers zuständig ist. Lege nun den Ordner an, in dem alle Repositories liegen sollen:
mkdir /var/www/svn
Repositories anlegen
Neue Repositories legst du mit dem svnadmin-Befehl an:
svnadmin create /var/www/svn/<Repository>
<Repository> musst du natürlich durch den gewünschten Repository-Namen ersetzen.
Benutzer anlegen
Für die Authentifizierung wird hier die Basic-Authentifizierung des Apache Webservers verwendet. Wechsel dazu erst einmal das Verzeichnis, in dem die Repositories liegen:
cd /var/www
Nun erstellst du die Datei .htpasswd mit dem htpasswd-Befehl:
htpasswd -c .htpasswd <Benutzername>
Sollte die Datei bereits existieren und du möchtest nur einen weiteren Benutzer anlegen, lässt du den Parameter weg:
htpasswd .htpasswd <Benutzername>
Einen Benutzer löschen, kannst du so:
htpasswd -D <Benutzername>
Zugriffsberechtigungen anlegen
Nun legst du die Datei /var/www/svn/.authz mit einem Texteditor an und blockierst grundsätzlich erst einmal sämtliche Zugriffe:
[/] * =
In der Datei kannst du komplexe Zugriffsberechtigungen setzen. Eine ausführliche Übersicht über alle Möglichkeiten findest du in dem Artikel Path-Based Authorization des Subversion-Benutzerhandbuches.
Installation
Jetzt musst du erst einmal wieder zu dem normalen Benutzer zurückwechseln:
exit
Nun installierst du die erforderlichen Pakete:
aptitude install subversion libapache2-svn
Danach muss das Subversion-Modul für den Apache Webserver aktiviert werden:
a2enmod dav_svn
Subdomain einrichten
Jetzt hast du alle nötigen Vorkehrungen getroffen und kannst die Subdomain einrichten. Erstelle dafür die neue Textdatei svn unter /etc/apache2/sites-available mit folgendem Inhalt (Domain und ggf. Pfade anpassen):
<VirtualHost *:80> ServerName svn.techspread.de <Location /> DAV svn SVNParentPath /var/www/svn AuthType Basic AuthName "Subversion" AuthUserFile /var/www/svn/.htpasswd AuthzSVNAccessFile /var/www/svn/.authz Satisfy Any Require valid-user </Location> CustomLog /var/log/apache2/svn-access.log combined ErrorLog /var/log/apache2/svn-error.log </VirtualHost>
Um Anonymous-User komplett auszusperren, löschst du Satisfy Any aus der Datei. Jetzt muss nurnoch die Subdomain aktiviert und die Apache-Konfiguration neu eingelesen werden:
a2ensite svn /etc/init.d/apache2 reload
Bitte beachten!
Falls du in den Repositories sensible Daten speicherst, solltest du den Datenverkehr per SSL verschlüsseln. Des Weiteren solltest du dir im Klaren darüber sein, dass ein Konfigurationsfehler auch dazu führen kann, dass unautorisierte Benutzer auf deine Daten zugreifen können. Du solltest dich also etwas mehr mit dem Thema beschäftigen!
Weiterführende Links
Um dich weiter mit der Materie zu beschäftigen, kann ich folgende Quellen empfehlen:
Veröffentlicht am 25.09.2010

Jeffrey schrieb am 26. September 2010
Habe mir auch schon überlegt, ob ich auf meinem VServer Subversion einrichten soll.
Bin dann aber bei der Dropbox geblieben. Bietet ja ebenfalls Versionierung der Dateien an.