Subversion Server installieren
Dieser Beitrag beschreibt, wie man einen Subversion Server installiert um diesen z.B. für die Verwaltung der Module und Themes seiner Drupal Domains zu nutzen. Dabei gehe ich davon aus, dass auf dem Server ein Debianbasiertes System (z.B. Debian / Ubuntu, ...) installiert ist. Das Tutorial entstammt dem öffentlich verfügbaren Buch zu Subversion und kann dort nachgelesen werden.
Ach ja. Ich benutze hier öfter das Wort Repository. In Deutsch bedeutet es so viel wie Lager oder Depot und beschreibt den Ort, an dem Subversion die Nutz- aber auch die Benutzerdaten verwaltet.
Pakete installieren
Der Subversion-Server ist Bestandteil des Pakets subversion, das sich unter Debiansystemen einfach per apt installieren lässt:
/# aptitude install subversion
Hierdurch werden mehrere Programme installiert, mit denen man das Repository erstellen kann:
Repository und Benutzer einrichten
Da wir später den SVN Server per svnserve betreiben (also ohne Apache oder ähnliches), wird ein Benutzer eingerichtet, mit dem der svnserver als Dienst gestartet wird. Der Benutzer wird svnserv heissen und als einziger Benutzer in einer gleichlautenden Gruppe Mitglied sein:
/# groupadd svnserve
/# useradd -g svnserve -s /bin/false -d /dev/null svnserve
Weiter als root kann nun mit dem Befehl svnadmin ein neues Repository angelegt werden:
/# svnadmin create /var/svn
Der Befehl erzeugt ein neues Verzeichnis /var/svn mit folgendem Inhalt:
drwxr-xr-x 2 4096 2008-06-23 12:12 conf
drwxr-xr-x 2 4096 2008-06-23 12:12 dav
drwxr-sr-x 5 4096 2008-06-23 12:12 db
-r--r--r-- 1 2 2008-06-23 12:12 format
drwxr-xr-x 2 4096 2008-06-23 12:12 hooks
drwxr-xr-x 2 4096 2008-06-23 12:12 locks
-rw-r--r-- 1 229 2008-06-23 12:12 README.txt
Im Verzeichnis conf werden wir nun die Datei svnserve.conf an unsere Bedürfnisse anpassen.
/var/svn# cd conf
/var/svn/conf# vim svnserve.conf
[general]
password-db = userfile
realm = Mein Drupal SVN Server
# Anonymous darf sich nicht verbinden
anon-access = none
# Angemeldete Benutzer duerfen alles
auth-access = wrte
Per :w speichert vim die Datei und per :q wird die Datei beendet. In Zeile 1 wurde auf eine Datei "userfile" verwiesen, die wir im letzten Schritt noch anlegen müssen. Es wird ein User angelegt, mit dem später die Änderungen in das Repository geschrieben werden. Dabei ist der User nicht mit dem Linux-Systembenutzer zu verwechseln sondern ein Benutzer, der später bei der Nutzung des Subversion Repository eingegeben werden muss. Wer hier mehrere Benutzer benötigt, kann
das entsprechend anpassen:
/var/svn/conf# vim userfile
[users]
mcgo = password
Wieder per :w und :q speichern und schliessen. Diesen Inhalt machen wir jetzt ausschliesslich für den angelegten SVN-User beschreibbar:
/var/svn/conf# cd /var
/var# chown svnserver.svnserver svn -R
/var# chmod 770 svn -R
Serverdienst einrichten
Es sind nun alle Vorarbeiten erledigt um den Subversion Server dauerhaft in Betrieb zu nehmen. Mit dem folgenden Eintrag wird für jede SVN-Anfrage automatisch durch xinetd Prozess ein svnserver Prozess gestartet. Dazu ist es notwendig, im Verzeichnis /etc/xinetd.d eine neue Datei zu erstellen.
/var# cd /etc/xinetd.d
/etc/xinetd.d# vim subversion
service svn
{
disable = no
socket_type = stream
wait = no
user = svnserve
server = /usr/bin/svnserve
server_args = -i -r /var/svn
log_on_failure += USERID
instances = UNLIMITED
}
Nach dem Speichern per :w :q und einem Neustart ist der Server einseatzbereit. Neustarten und testen lässt sich das folgendermaßen über netstat:
/etc/xinetd.d# /etc/init.d/xinetd restart
* Stopping internet superserver xinetd [ OK ]
* Starting internet superserver xinetd [ OK ]
/etc/xinetd.d# netstat -l|grep svn
tcp 0 0 *:svn *:* LISTEN
Der SVN Server ist jetzt einsatzbereit und kann von den oben angelegten Benutzern genutzt werden. Eventuell müsste eine vorhandene Firewall so konfiguriert werden, dass Verbindungen auf dem TCP und UDP Port 3690 akzeptiert werden.



