Subversion Server unter Debian Lenny einrichten

Seit längerer Zeit hatte ich den Plan mir eine Quellcode-Verwaltung zu installieren. Da CVS mittlerweile doch schon etwas antiquiert ist und nicht mehr weiterentwickelt wird, habe ich mich hierzu für Subversion entschlossen. Wie sich Subversion unter Debian Lenny einrichten lässt, möchte ich Euch hier nun näher beschreiben.

Bei meinem Subversion Server habe ich mich entschlossen, die Authentifizierung über den Apache mit Hilfe des dav-Moduls zu realisieren.

Installation

Als erstes müssen die benötigten Pakete installiert werden:

1
aptitude install subversion apache2 libapache2-svn

Konfiguration

Nun muss man das Subversion Verzeichnis für die Repositories erstellen und für den Apache Benutzer www-data lese- und schreibbar machen.

1
2
sudo mkdir /var/svn
sudo chown -R www-data:www-data /var/svn

Das Verzeichnis muss nicht zwingend /var/svn sein und kann beliebig geändert werden.

Server mit SSL absichern

Will man den Subversion Server absichern, so kann man dies mit SSL tun. Hat man den Apache Server schon vorher für https eingerichtet oder will den Subversion Server nicht absichern, so können die nächsten Schritte entfallen.

OpenSSL installieren und das Apache Modul aktivieren:

1
2
aptitude install openssl ssl-cert
a2enmod ssl

Der /etc/apache2/ports.conf, wenn nicht vorhanden, dies hinzufügen:

1
2
3
<ifModule mod_ssl.c>
    Listen 443
</ifModule>

Nun muss eine Konfiguration für den Virtualhost mit SSL eingerichtet werden. Dazu kann man einfach die Standart Konfiguration kopieren und anpassen:

1
cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl.domain.tld

Nun muss in der neuen Datei

1
<virtualHost *:80>

mit

1
<virtualHost *:443>

ersetzt werden. Und oberhalb von

1
</virtualHost>

dies eingefügt werden:

1
2
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/ssl.domain.tld.pem

Danach muss man das SSL-Zertifikat erstellen:

1
2
mkdir /etc/apache2/ssl
make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/ssl.domain.tld.pem

Schließlich muss die neue Site noch aktiviert werden.

1
2
a2ensite ssl.new.site
/etc/init.d/apache2 reload

Eure Konfiguration könnt Ihr testen, indem Ihr https://domain.tld in Euren Browser eingebt.

Einrichten des Apache Moduls dav_svn

Zum Einrichten von dav_svn, muss die Datei /etc/apache2/mods-available/dav_svn.conf zwischen den Location-Tags, folgendermaßen ergänzt werden:

1
2
3
4
5
6
7
8
9
DAV svn
SVNParentPath /var/svn

AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd

Require valid-user
SSLRequireSSL      # this line must be added if you want SSL enabled

Danach kann das Modul aktiviert werden:

1
2
a2enmod dav_svn
/etc/init.d/apache2 restart

Jetzt muss noch ein Benutzer für DAV eingerichtet werden. Der erste Benutzer wird so eingerichtet:

1
htpasswd -c /etc/apache2/dav_svn.passwd benutzer1

Weitere Benutzer so:

1
htpasswd /etc/apache2/dav_svn.passwd benutzer1

Erstes Repository erstellen

Jetzt kann man das erste Subversion Repository erstellen:

1
2
svnadmin create /var/svn/test
chown -R www-data:www-data /var/svn/test

Ein Checkout kann so gemacht werden:

1
svn co https://domain.tld/svn/test

Ich hoffe meine Anleitung hat Euch ein Stück weit geholfen. Über Kommentare und Verbesserungsvorschläge freue ich mich jeder Zeit. 🙂

19 Reaktionen auf: Subversion Server unter Debian Lenny einrichten

  • Pingback: Editor des Subversion Terminal Programms ändern » Beitrag | Benjamin Vötterle » Bennis Welt

  • Markus

    thanks 😉

  • Lars

    hi, bin grad deinem tutorial gefolgt. funzt allet wie’s soll, danke!
    eine frage hab ich jedoch: wie kann pro svn-repo eine nutzerliste definieren`?

  • Mike

    Der Part mit „DAV svn“ muss mit

    umschlossen sein

  • Alex (Webseite)

    DAV svn
    SVNParentPath /var/svn

    AuthType Basic
    AuthName „Subversion Repository“
    AuthUserFile /etc/apache2/dav_svn.passwd

    Require valid-user
    SSLRequireSSL # this line must be added if you want SSL enabled

    Sollte es nicht so ausehn ?

  • Alex (Webseite)

    mit klammern location davor und danach

  • Benni (Webseite)

    @Alex: Darum steht auch „zwischen den Location-Tags“ über dem Code-Snippet 😉

    @Mike: Also bei mir gehts ohne „. Würde mich auch sehr wundern, wenn es das braucht.

  • daVirus (Webseite)

    danke für das tut, habs glei getestet udn funzt soweit alles, allerdings würd ich gern das einsehen des svn verzeichnisses per htaccess schützen, also das man username und pw brauch um per web in das svn repo zu guggen

    habs mit htaccess schon probiert, aber apache ignoriert das iwi immer, bin so langsam ratlos, hat da wer ne idee oder n tip?

  • Bartisimos

    $ sudo a2enmod ssl

    muss bei einem Apachen mit einer Version größer als 2 gemacht werden, damit der apache auch ssl aktiviert, sonder startet er nicht durch.

    zum HTaccess würde ich mal das overwrite in der vhost datei prüfen.

  • Bodo Eichstädt (Webseite)

    Eigenes, selbst signiertes SSL Zertifikat? Nimm doch ein kostenloses von cacert (www.cacert.org)!

  • Leo

    HI!

    danke für dein Tut, hat besten geklappt.

  • Pikachu

    Super! So muss eine Anleitung sein – hat alles auf Anhieb geklappt!

  • Thomas (Webseite)

    Wer mehr Kontrolle haben will(z.B. SVN nur über Subdomain ansprechen), kann auch sie dav_svn.conf leer lassen und statt dessen einen VHost erstellen.

    etwa so:

    DAV svn
    SVNParentPath /var/svn
    AuthType Basic
    AuthName „Subversion Repository“
    AuthUserFile /etc/apache2/dav_svn.passwd
    Require valid-user

  • Dominik (Webseite)

    Hat super funktioniert, vielen Dank!

  • Dodeli

    Was fuer ne super Anleitung, hat alles bestens funktioniert!

    Vielen Dank!

  • Klaus Berner

    Hab alles wie im Tutorial gemacht aber irgendwie scheitert es bei mir den Apache dann aus dem Web anzusprechen. (firewall ist eingerichtet usw)

    Ebenso klappt das hier nicht
    „https://domain.tld in Euren Browser eingebt.“

    Wenn ich den Server dagegen mit der internen ip anspreche ist alles prima.

    • Benjamin Vötterle (Webseite)

      „https://domain.tld“ ist ein Platzhalter, den du mit der Domain deines Servers ersetzen musst.

  • Philipp

    Hallo, ich habe ein kleines Problem:

    Es hat alles soweit geklappt, das er mir bis zum Checkout keine Fehler gemeldet hat.
    Sobald ich aber den Checkout mache meldet es mir folgendes:

    svn: Der Server hat einen unerwarteten Rückgabewert (405 Method Not Allowed) in Antwort auf die Anfrage PROPFIND für »/svn/Skalium« zurückgeliefert

    Was ist das Problem?

  • silverSl!DE (Webseite)

    THX
    gerade die SSL-Geschichte het mir weitergeholfen!

    Wollte nur der Allgemeinheit kundtun, fals noch jemand probleme mit dem checkout hat:
    1. in der dav_svn.conf den SVNParentPath überprüfen:
    – Wenn mehrere Projekte/Repos im SVNPath sind muss „SVNPath“ (Default) durch „SVNParentPath“ wie oben im Beispiel ersetzt werden.
    2. Pfad auf richtige Schreibweise prüfen:
    ich hatte versehentlich /man/… statt /mnt/…. beim SVNParentPath getipt.
    3. Rechte im Filesystem für den User www-data setzen:
    chown für svn- und Unterverzeichnisse ist eh klar. s.o. aber ebenso müssen die ÜBERgeordneten verzeichnisse das r-x für www-data haben. DAS war mein Problem an dem ich seit gestern abend sitze/ gesessen habe… *facepalm*

    Beste Grüße
    silverSl!DE

Das sag ich oder frag ich noch

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.