Subversion auf Subdomain mit Authentifizierung einrichten

veröffentlicht am 25. September 2010

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:

Kommentare

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.

Kommentar #1 von Jeffrey am 26. September 2010


Vielen dank das ist genau wonach ich lange gesucht habe.
Das Tutorial ist sehr gut erkläre.

Kommentar #2 von Alae am 23. August 2012


Hinterlasse einen Kommentar