it-artikel:svn-subversion-wie-man-sich-einen-einfachen-svn-server-unter-ubuntu-debian-installiert

SVN/Subversion - Wie man sich einen einfachen SVN Server unter Ubuntu/Debian installiert

Dieser Artikel beschäftigt sich mit der Grund-Installation des beliebten Versionierungssystems Subversion (SVN) auf Ubuntu / Debian inkl. der Einrichtung als Server-Dienst über das eigene SVN Protokoll.

Installationsanleitung

  1. Installation des “standard SVN” unter Ubuntu durch eingabe von:
    aptitude install subversion subversion-tools
  2. Einen geeigneten Speicherort für sein SVN Repository (Filebasierte Datenbank) sollte man sich bereits gesucht haben. In meinem Beispiel verwende ich ein Verzeichniss :/mnt/md6raid5/svnrepo/ welches zuvor mit mkdir angelegt wurde. Achtung: Für die nächsten Schritt MUSS das Verzeichniss komplett leer sein!
  3. Da wir später den SVN Server-Dienst nicht unter dem ROOT Benutzer laufen lassen wollen, sondern lieber einen “normalen User Account” mit niedrigen Benutzerrechten nutzen wollen, legen wir uns besser gleich noch einen solchen Service-Benutzer an. Sie geht z.b. mit dem Befehl:
    useradd -d /mnt/md6raid5/svnrepo -c 'svn-server service' -r -s /bin/false svn
    1. Dabei steht -d /pfad für das Homeverzeichniss des Users “svn”
    2. -c “text” für ein einfaches Kommentar, was sehr sinnvoll ist wenn man später mal wieder wissen möchte wer bzw wozu der Benutzeraccount eigentlich genutzt wurde
    3. -s /pfad steht “normalerweise” für die SHELL d.h. die Kommando-Umgebung eines Benutzeraccounts welche nach dem Login am System automatisch gestartet wird. Da wir hier jedoch “nur” einen Service-Benutzer anlegen und dieser kein Login durchführen soll, geben wir hier statt dessen zur Sicherheit eine FAKE SHELL (/bin/false).
    4. -r gibt nur an dass wir hier einen speziellen Service-Benutzer und KEINEN Normalen Useraccounte anlegen wollen. Der Unterschied anschließend liegt in der verwendeten UID. Normale User erhalten für gewöhnlich UIDs > 1000. Service-Accounts erhalten UIDs < 1000. Funktionell macht das soweit ich weis keinen Unterschied. Es ist eher als Konvention zu verstehen.
  4. Das Verzeichniss sollte nun dem SVN Service Benutzer “svn” zugeordnet werden. Das geschiet mit dem Befehl:
    chown -R svn.svn /mnt/md6raid5/svnrepo
  5. Ich persönlich empfehle noch das SET-GUID Bit auf dem Repo-Verzeichniss zu setzen, damit jeder Zeit neu dazukommende Verzeichnisse stets die gleiche Gruppenmitgliedschaft erhält wie das übergeordnete Verzeichniss. Das geschiet mit dem Befehl:
    chmod -R g+s /mnt/md6raid5/svnrepo
  6. Das Basis-Repository wird nun mit folgendem Befehl angelegt:
    svnadmin create /mnt/md6raid5/svnrepo
  7. Wenn man anschließend ein ls -la macht kann man sehen dass durch den letzten Schritt eine svn-interne Datei und Ordnerstruktur zur internen Verwaltung angelegt wurde. Manuelle Änderungen/Eingriffe an dieser Struktur sollte man besser NICHT tun ohne genau zu wissen was man tut.
  8. An dieser Stelle ist das SVN zur lokalen Nutzung bereits vollständig eingerichtet. Ich möchte jedoch einen SVN SERVER einrichten. D.h. der Zugriff soll per SVN Protokoll auch übers Netz (svn://hostname/projektname) und per SSH möglich sein. Dazu müssen wir nun dafür sorgen dass unf unserem System nun ein geeigneter Daemon so installiert wird dass dieser auch nach dem Neustart des Systems immernoch verfügbar ist. Den Server-Dienst (Daemon) haben wir bereits als Teil des “subversion” Pakets mitinstalliert. Dieser lautet “svnserve”.
  9. Da dem Daemon leider keine geeigneten system-v Start/Stop Scripte, inetd bzw xinetd Konfig-Dateien beiliegen müssen wir nun selbst für eine geignete Methode zum starten des Daemon sorgen. Hierzu kann man sich entweder ein System-V kompatibles Start-/Stop-Script (init script) bauen, oder man bindet den Daemon per /etc/inetf.conf bzw xinetd.d ein. Je nach dem was man mag bzw was man bei sich installiert hat. Ich wähle in diesem Beispiel die Methode über xinetd.d.
  10. Darum lege ich als nächstes unterhalb von /etc/xinetd.d/ eine Textdatei mit folgendem Inhalt an:
    # Begin /etc/xinetd.d/svn
    # default: on
    # description: Its an SVN Server Daemon
    
    
    # This is the tcp version.
    
    service svn
    {
            port                    = 3690
            socket_type             = stream
            protocol                = tcp
            wait                    = no
            user                    = svn
            server                  = /usr/bin/svnserve
    	server_args		= -i -r /mnt/md6raid5/svnrepo
    }
    
    # End /etc/xinetd.d/svn
  11. Nun nur noch kurz den xinet.d neu durchstarten mit:
    /etc/init.d/xinetd restart

    und der Server müsste nun laufen und empfangsbereit sein. Das kann man auch gerne vorher nochmal kontrollieren mit

    netstat -l4 | grep svn
  12. Jetzt sollte der Arbeit mit einem beliebigen svn Client nichts mehr im Wege stehen.

Sollte ich etwas vergessen haben zu erwähnen oder sich Fehler in der Dokumentation befinden, schreibt mir bitte einfach kurz eine email. Ich bin für jeden Verbesserungsvorschlag dankbar und erwähne dich gerne für deinen Beitrag.

Axel Werner 2011-05-09 21:21

it-artikel/svn-subversion-wie-man-sich-einen-einfachen-svn-server-unter-ubuntu-debian-installiert.txt · Last modified: 2011-05-09 21:23 by mail@awerner.myhome-server.de