Subversion unter SUSE Linux 10, Apache2 und Plesk installieren

Ich habe heute beschlossen, einen Subversion-Server auf meinem VPS zu installieren, den ich bei Host Europe angemietet habe. Mein Server läuft unter SUSE Linux 10, Apache2 mit Plesk.

[Update 2008-06-01: Plesk Version ist 8.3]

Mein Ziel war, Subversion so zu installieren, dass es mit Plesk nicht ins Gehege kommt. Nach einiger Recherche habe ich auf verschiedenen Seiten und in Foren Informationen gefunden, die beschreiben, was ungefähr getan werden muss. Allerdings habe ich nirgends eine zusammenhängende Anleitung gefunden, in der die komplette Einrichtung beschrieben ist.

Bevor jetzt irgendjemand anfängt und das nachmacht, was ich hier beschreibe ein wichtiger Hinweis:

Ich habe keine Ahnung, ob das was ich hier beschreibe auf jedem System funktioniert. Bitte macht auf jeden Fall ein Backup, bevor Ihr anfangt und lest Euch im Zweifel die verlinkte Dokumentation durch. Prüft, ob die von mir verwendeten Pfade und Benutzer bei Euch Sinn geben.

Vor allem macht mich nicht dafür verantwortlich, sollte etwas schief gehen…

Ihr braucht auf jeden Fall die Root-Rechte für Euren Server. Soweit nicht anders beschrieben, werden alle folgenden Schritte als Benutzer root ausgeführt.

Ich gehe davon aus, dass Ihr auf Eurem lokalen Rechner schon einen Subversion-Client installiert habt.

Schritte, die auf dem VPS ausgeführt werden müssen, sind mit

remote:~#

gekennzeichnet. Schritte, die Ihr auf Eurem lokalen Rechner ausführt, sind mit

local:~#

gekennzeichnet.

Hier eine Liste der Schritte, die für die Installation notwendig sind:

Darüber hinaus enthält der Artikel noch folgende Informationen:

Los geht’s!
1. Subversion und Subversion-Server installieren
Als erstes müssen die Software-Pakete subversion und subversion-server installiert werden. Hierzu in ein Terminal wechseln und als root-Benutzer folgendes Kommando absetzen:

remote:~# rug install subversion subversion-server

Falls Subversion schon installiert sein sollte, kommt folgende Fehlermeldung:

ERROR: 'subversion' is not available, or is fully up-to-date.

Ihr könnt prüfen, ob Subversion installiert ist, in dem Ihr folgendes Kommando abschickt:

remote:~# rug info subversion subversion-server

In der Ausgabe gibt es für jedes der beiden Pakete einen Abschnitt. In beiden Abschnitten müssen die Texte Installed: Yes und Status: up-to-date vorkommen.

Falls auf Eurem Server Subversion schon installiert war, kann das natürlich bedeuten, dass die im Folgenden beschriebenen Schritte eventuell nicht mehr funktionieren.

2. Subversion-Repository anlegen

Nachdem uns nun die Software zur Verfügung steht, können wir weiter machen. Damit wir unseren Subversion-Server testen können, brauchen wir ein Repository. Als Speicherort für das Repository habe ich mir /srv/svn/ ausgesucht. Das Repository habe ich einfach mal repos genannt.

Das Anlegen des Repositories erfolgt ebenfalls im Terminal:

remote:~# svnadmin create /srv/svn/repos

Damit der Apache das Repository lesen und beschreiben kann, müssen wir im die Rechte dazu geben:

remote:~# chown -R wwwrun:www /srv/svn/repos

3. Den Subversion-Server konfigurieren

Ich gehe im Folgenden davon aus, dass Ihr auf Eurem VPS eine Domain (im Beispiel example.com) liegen habt, über die der Zugriff auf Subversion erfolgen soll. Für den Zugriff auf die Repositories möchte ich die URL http://example.com/svn/repos nutzen.

Wechselt in das Verzeichnis, in dem die Konfigurationsdateien für Eure Domain liegen:

remote:~# cd /srv/www/vhost/example.com/conf

In diesem Verzeichnis müsst Ihr die Datei vhost.conf bearbeiten. Falls die Datei noch nicht existiert, könnt Ihr sie einfach anlegen.

In diese Datei müsst Ihr folgende Zeilen kopieren (falls Ihr auf 64bit-Systemen lauft, müsst Ihr statt /usr/lib den Pfad /usr/lib64 nehmen):

LoadModule dav_module /usr/lib/apache2-prefork/mod_dav.so
LoadModule dav_svn_module /usr/lib/apache2/mod_dav_svn.so

<Location /svn>
 DAV svn
 SVNParentPath /srv/svn

 AuthType Basic
 AuthName "Authorization Realm"
 AuthUserFile /srv/svn/user_access/repos_passwdfile
 Require valid-user
</Location>

Damit die Konfiguration aus der vhost-Datei auch aktiv wird, muss die Konfiguration für den Webserver neu geschrieben und der Webserver durchgestartet werden. Dies wird mit folgendem Kommando durchgeführt:

remote:~# /usr/local/psa/admin/sbin/websrvmng −−reconfigure-vhost −−vhost-name=example.com −−restart

[Update 2008-03-05: Sollte später beim Aufruf der Repository-URL ein 404 auftreten, versucht es mal mit websrvmng -a -v und danach noch mal den reconfigure. Ich habe es nicht getestet, der Tipp stammt aus dem Kommentar von Micha (siehe unten)]

4. Benutzer für das Repository anlegen
Damit nicht jeder auf unser Repository zugreifen kann, habe ich einen Passwortschutz auf den Server gelegt. Die Benutzer und ihre Passworte werden in der Datei

/srv/svn/user_access/repos_passwdfile

gesucht. Um den ersten Benutzer test anzulegen verwendet Ihr folgenden Befehl:

remote:~# htpasswd2 -c /srv/svn/user_access/repos_passwdfile test

Ihr werdet nun nach dem Kennwort gefragt, das Ihr für den Benutzer test verwenden wollt. Das Kennwort müsst Ihr danach noch einmal bestätigen. Beim Anlegen weiterer Benutzer müsst Ihr den Schalter -c weglassen:

remote:~# htpasswd2 /srv/svn/user_access/repos_passwdfile noch_n_test

5. Der erste Zugriff auf den Server

Jetzt solltet Ihr schon in der Lage sein, auf Euer – noch leeres – Repository zuzugreifen. Ruft im Browser folgende URL auf:

http://example.com/svn/repos

Ihr werdet nach einem Benutzer und einem Kennwort gefragt. Hier gebt Ihr test und Euer Passwort an.

Wenn Ihr alles richtig gemacht habt, müsstet Ihr Euer leeres Repository sehen.

6. Ein Projekt importieren
Wir machen ein kleines Test-Projekt, das wir in das Repository legen wollen. Dazu baut Ihr Euch auf Eurem lokalen Rechner folgenden Verzeichnissbaum auf (dies müsst Ihr nun nicht mehr als root machen):

./test/branches/
./test/tags/
./test/trunk/
./test/trunk/README

In die Datei README könnt Ihr irgendetwas x-beliebiges reinschreiben.

Importiert das Test-Projekt von Eurem lokalen Rechner in das Repository:

local:~# svn import test http://example.com/svn/repos/test

Wenn Ihr nun erneut über den Browser auf Euren Server schaut, seht Ihr Euer Test-Projekt mit den Unterverzeichnissen und der Datei README.

Ab jetzt könnt Ihr mit Eurem Repository spielen, testen, etc.

Ich möchte noch einmal mit einem frischen Repository starten
Wenn Ihr Euer Repository noch einmal frisch anlegen wollt, löscht einfach das Verzeichnis /srv/svn/repos samt Inhalt und führt danach den Schritt 2 noch einmal aus.

Unschönheiten
Ein kleines Problem hat die oben beschriebene Vorgehensweise: Da ich die LoadModule-Direktiven in die vhost-Datei geschrieben habe, lässt sich auf einem VPS nur genau ein Subversion-Server für genau eine Domain betreiben. Wenn ein zweites Repository auf einer weiteren Domain genutzt werden soll, würden die LoadModule-Direktiven Fehlermeldungen auslösen.

Es wäre eventuell auch möglich die LoadModule-Direktiven in die Datei /etc/apache2/sysconfig.d/loadmodule.conf zu legen – ich wollte aber keine direkten Veränderungen am Apachen vornehmen…

Weiterführende Dokumentation
Um tiefer in die Materie zu kommen, empfehle ich folgende Dokumente und Webseiten:

Subversion
http://subversion.tigris.org – die offizielle Homepage von Subversion
Version Control with Subversion – das Buch über Subversion
Plesk
Dokumentation zu Plesk – hier insbesondere der Administrator’s Guide

23 Kommentare für “Subversion unter SUSE Linux 10, Apache2 und Plesk installieren”

  1. Philipp sagt:

    Danke für das Tutorial! War genau das was ich gesucht habe 🙂

    Als kleine Ergänzung vielleicht noch folgendes:

    Um rug zu nutzen, muss:
    – ggf. zmd mittels „rczmd start“ gestartet werden.
    – man u.U. über „rug sa –type=zypp [URL]“ einen neuen Service hinzufügen.

  2. Johannes sagt:

    Kann mich nur Philipp anschließen: Danke für das Tutorial.

    Hier meine Probleme bzw. Lösungen (SUSE 10.1, Plesk 8.1):

    (1) Problem rug
    „remote:~# rug install subversion“
    „ERROR: ZMD does not appear to be running.“
    -> „remote:~# zmd“
    -> OK

    (2) Problem websrvmng
    „remote:~#/usr/local/psa/admin/sbin/websrvmng –reconfigure-vhost –vhost-name=example.com –restart“
    „websrvmng: Some parameters in command string leave unprocessed. Check parameters please.“
    -> „remote:~#/usr/local/psa/admin/sbin/websrvmng –-reconfigure-vhost –-vhost-name=example.com –-restart“
    -> OK

    (3) Problem LoadModule in vhost.conf
    mod_dav_svn.so und mod_dav.so konnten beim Neustart von Apache nicht gefunden werden
    -> Zielverzeichnis ändern /usr/lib64/apache2/*
    -> OK

  3. Das.Beet sagt:

    Bei mir ist übrigens das explizite Starten von zmd nicht notwendig – rug meint:

    remote:~# rug info subversion
    Waking up ZMD…

    Es dauert zwar eine Ewigkeit, aber es funktioniert. Kann da jemand was zu sagen?

    Den Hinweis auf 64bit-Systeme habe ich aufgenommen.

    Das mit den fehlenden double-dash „--“ vor den Parametern ist mir gar nicht aufgefallen. Das ist ein WordPress-Problem: WP will die einfach nicht ohne weiteres anzeigen (http://blog.taragana.com/index.php/archive/how-to-add-double-dash-to-wordpress-posts/). Ist aber nun auch korrigiert.

    Danke Euch für das Feedback.

  4. Philipp sagt:

    Hmm.. Ich hatte ebenfalls die Meldung »ERROR: ZMD does not appear to be running.« erhalten. Daraufhin habe ich zmd gestartet und alles war ok.

    »remote:~# rug info subversion« dauert wirklich ewig! Die Geduld wird aber belohnt 😉

  5. tom sagt:

    Sehr schönes Tutorial, kann mich nur euch allen anschliessen 🙂
    Vllt. schaffst es noch das „trac“ mit reinzubringen;)

    lg,
    -tom

  6. svn server einrichten > "Schützenhilfe" - Server Support Forum sagt:

    […] permalink Die nötigen Paketquellen habe ich mir schon bei opensuse geholt und im Yast hinzugefügt. Es wird die neueste Version 1.5 angeboten / angezeigt. Oki do, dann hier mal der Link: Das.Beet » Blog Archive » Subversion unter SUSE Linux 10, Apache2 und Plesk installieren […]

  7. Radar_RR sagt:

    Hallo,

    eine wirklich gute Erklärung, danke für Deine Arbeit. Hat alles ohne Probleme funktioniert.

  8. reinel.de - Mein Senf » Blog Archive sagt:

    […] http://beetroot.de/wordpress/2008/03/02/subversion-unter-suse-linux-10-apache2-und-plesk-installiere… […]

  9. matt sagt:

    Hallo,

    wenn ich das Repository mit einem Client öffnen möchte, dann erhalte ich folgende Meldung:
    Das Projektarchiv wurde permanent nach »http://www.domain.de/svn/repos/« verschoben; bitte umplatzieren

    Hat jemand ne idee wie ich das weg bekomm?

  10. Fred sagt:

    Dieses Tutorial ist meines wissens, das Einzige das wirklich gut beschreibt, wie es geht. – Und ich habe wirklich einige Zeit zum Thema gegoogelt.
    Eine kleine Nachfrage habe ich aber noch: Gibt es einen Tipp, an welcher Stelle man suchen muss, wenn es mit dem Aufruf des Repsositoies im Browser nicht klappt? Wenn der Browser statt des Login zum Repository nur den Error 404 anzeigt? Schönen Dank im Voraus.

  11. Das.Beet sagt:

    Ich habe eben mal ein bisschen mit meiner Konfiguration gespielt. Ich bekomme den 404 wenn ich folgendes mache:

    1. Ich tippe die falsche URL in den Browser (das können wir wahrscheinlich ausschließen – oder?).
    2. Ich lösche den Inhalt der vhost.conf (gleichbedeutend mit: ich habe die vhost.conf von einer anderen Domain angepasst).
    3. Ich tippe den Inhalt in die vhost.conf rufe jedoch danach den websrvmng nicht auf (bzw. rufe ihn für die falsche Domain auf).

    Ist sichergestellt, dass die richtige vhost.conf bearbeitet wurde?
    Wurde mit dem websrvmng der richtige Server konfiguriert?

    Andere Ideen habe ich gerade nicht. Hilft’s?

  12. Micha sagt:

    nach vielem rumprobieren und googeln hat mir diese Anleitung wirklich geholfen, eine Sache fehlt allerdings um die vhost.conf wirklich zu laden und damit den Pfad und die Module. zumindest wenn man die vhost.conf neu erstellt.

    vor dem reconfigure noch einmal

    websrvmng -a -v

    ansonsten sind die Module nicht geladen und der Pfad natürlich auch nicht korrekt und es wird nix gefunden über den Browser ausser einer 404

  13. Micha sagt:

    noch eine Kleinigkeit die zumindest bei mir gestört hat und vermutlich auch ein Wordpres Problem ist 😉

    in der vhost.conf

    AuthName “Authorization Realm” <<<<<< ‚Authorization Realm‘

  14. Das.Beet sagt:

    Danke Micha! Ich habe die typografischen Hochkomma entfernt. Das macht tatsächlich WordPress so blöd…

    Den Hinweis auf den reconfigure-all habe ich oben in den Text eingebaut. Das scheint wohl auch das Problem von Fred gewesen zu sein.

  15. komochti sagt:

    hallo leute,

    danke erstmal für diesen tutorial.

    auf meinem 1und1 server verlief die installation und konfiguration reibungslos. ich bekam jedoch eine 403 meldung.

    für die, die das gleiche problem haben:

    in die vhost.conf müsst ihr noch ‚SVNListParentPath on‘ reinschreiben (ohne hochkomma). dann könnt ihr auf die repository zugreifen.

    hoffe das hilf jemandem, der das gleiche problem hat.

  16. Renji sagt:

    Erstmal danke für das schöne Tutorial!

    Ich habe alle Schritte nachvollzogen, aber ich bekomme den mysteriösen 404 immer noch. Unterschiede zu diesem Tutorial: Ich hätte das Repos gerne in einer Subdomain laufen. Habe daher die Datei:

    /srv/www/vhosts/example.com/subdomains/svn/conf/vhosts.conf

    angelegt. Muss ich bei dem reconfigure-vhosts nun irgendetwas anderes beachten oder wird bei einer Domain auch all ihre Subdomains berücksichtigt?

  17. Chau sagt:

    Hi,

    vielen Dank für die Anleitung!!!
    Ich habe die Installation erfolgreich abschließen können, aber jedes mal wenn ich auf das Repository zugreifen will bekomme ich einen 500 Internal Server Error…
    An was könnte es liegen?
    Ich lasse SVN auf einen 1und1 Virtual Server laufen.

  18. Atapin sagt:

    Danke!
    Alles super funktioniert!

    [b]Chau sagt: [/b]
    500 Internal Server Error…

    htpasswd2 -c /srv/svn/user_access/repos_passwdfile test
    das sollst du machen.

    wenn hast du keine user_access Ordner, dann sollst du die einfügen
    und wieder befehle
    htpasswd2 -c /srv/svn/user_access/repos_passwdfile test
    ausführen

    Und wenn hast du /srv/svn/repos/conf/passwd geändert dann mach alles zurück.
    der Datei passwd, darf nicht ändern.

  19. Atapin sagt:

    und noch was:
    die Datein vhosts.conf gibst nicht mehr
    statt vhosts.conf hinzufügen das:

    LoadModule dav_module /usr/lib/apache2-prefork/mod_dav.so
    LoadModule dav_svn_module /usr/lib/apache2/mod_dav_svn.so

    DAV svn
    SVNParentPath /srv/svn

    AuthType Basic
    AuthName „Authorization Realm“
    AuthUserFile /srv/svn/user_access/repos_passwdfile
    Require valid-user

    in /srv/www/vhosts/domen.de/conf/httpd.include

  20. Bodhy sagt:

    nice blog. thank you

    rug was not working for me, so I did use zypper as an alternative

  21. Dirk sagt:

    Hallo,

    ich habe die Anleitung hier Schritt für Schritt durchgearbeitet und das SVN läuft auf dem Server wunderbar ABER: Ich kann nichts committen, denn ich bekomme einen 404 Error!

    Die SVN-Konfig ist in der vhost.conf der Domain!

    So ist das problem?

    Thanks Dirk

  22. Paykoman sagt:

    Hallo,

    ich habe 3 Server davon einen kleinen Vserver den ich gerne als svn Server einrichten möchte. Zu erst mal gratulation an dieses tutorial.
    Ich bin leider recht unerfahren muss aber nun auch mal selber an die Arbeit und da habe ich Fragen bzw. Verbesserungen zu diesem Tutorial:

    1) oben sollte man informieren was rug ist ggf. einen Link zur einrichtung von rug (habe keine Ahnung was rug bewirkt).

    2) Philipp sagt: 16. März 2008 um 16:16 (erster Kommentar).
    Ja sowas in der Art meinte ich wobei ich da nur Bahnhofverstehe von dem was geschrieben wurde.

    3) Zum Tutorial, das perfekte Itüpfelchen wäre wenn man für so noobs wie mcih noch eine Ergänzung beim repo anlegen schriebt, womit ich meine wo es später hinmuss. Müssen die Repos also in das Homeverzeichniss einer Domain kopiertwerden oder schaltet man die Domain auf die Repos nach srv/svn/repo ?

    Klar für Profis scheint diese Infos überflüssig, aber hier die Anleitung richtet sich ja nicht an Profis 🙂

    MFG: Paykoman
    PS: das wäre gerade super hilfreich =)

  23. Freiheitsfreund sagt:

    Hallo,
    erstmal ganz herzlichen Dank für die tolle Anleitung! Mein Repository läuft wunderbar.
    Allerdings habe ich nurn ein kleines Problem.
    Ich würde gerne alle Dateien wie hier beschrieben anzeigen, nur HTML-Dateien, die im Repository liegen würde ich gerne auch im Browser als HTML-Dateien anzeigen. Zur Zeit wird mir immer angezeigt, ich könnte die Datei downloaden. Das ist freilich nicht gut, wenn ich HTML-Dateien einfach in meinem Repository mit liegen habe und sie einfach wie normale HTML-Dateien im BRowser anzeigen will.
    Können Sie mir helfen, was ich in der vhost.conf eingeben muss, damit diese Dateien wieder im Browser angezeigt werden?

    Ich wäre für jeden Tipp dankbar!