Linux als SOHO-Server
für Linux- und Windows-Clients |
Kapitel:
|
Bei Subversion, oder kurz auch 'SVN' genannt, handelt es sich um eine
Open-Source-Software zur Versionskontrolle von Dateien und Verzeichnissen.
Eine Versionskontrollsystem ist sinnvoll, um den Überblick der Änderungen über
einen langen Zeitraum bei Software-Projekten zu behalten. Speziell ist dieses
sehr
hilfreich, wenn
mehrere Personen an einem Projekt netzwerkübergreifend gemeinsam arbeiten. Die Versionierung erfolgt in einem zentralen Projektarchiv, auch Repository genannt, in Form einer einfachen Revisionszählung. Alle Änderungen an den Daten werden im Repository aufzeichnet, so dass veraltete Daten wieder herzustellen oder sich Änderungen zwischen den verschiedenen Versionen angezeigt werden können. Dabei kann das SVN-Repository den Nutzern auf unterschiedlichen Übertragungswege zur Verfügung gestellt werden:
Auf der vorliegenden Seite werden die notwendigen Schritte zum Aufbau eines einfachen 'SVN'-Servers aufgezeichnet. Bei der Anleitungen wird der Zugriff auf dem SVN-Server über die Übertragungsprotokolle 'svn://' und 'http://' vorgestellt. Bemerkungen zum Repositories / Projekt-Layout
Vorab noch ein paar Bemerkungen zum Repositories und Projekt-Layout. Das
Repository ist der zentrale Speicherbereich der Daten, es beinhaltet den
aktuellen Stand inklusiver Versions-Geschichte in einer bauartigen Speicherung.
Für Projekte, die mit Subversion verwaltet werden, bieten sich
unterschiedliche Layouts für die Organisation an. So können mehrere Projekte in
einem Repository existieren, oder auch jedes Projekt kann in einem
separaten Repository erstellt werden. 'svn://'-Zugang - Elementare Installation und Konfiguration von SubversionFür einen Subversion-Server müssen zunächst die elementaren Komponenten installiert werden, des weiteren sind einige Dinge bezüglich des Aufbaus des Repositorys und dessen Zugriff zu berücksichtigen. Nachdem die elementaren Arbeiten erledigt sind, sollte der Subversion-Server über den 'svn://'-Zugang genutzt werden können, d.h. ein entsprechender SVN-Client kann auf den Server zugreifen. Zunächst ist das Paket 'subversion' zu installieren, wobei zu bemerken ist, das dass Paket den Client- und Server-Anteil von Subversion beinhaltet. Die Installation kann unter Debian-Linux mittels 'aptitude' einfach erledigt werden:
Entsprechende Abhängigkeiten zu anderen Debian-Paketen sollten automatisch
aufgelöst werden.
Es wird zunächst einen Gruppe: 'svn-users' erstellt.
Der exemplarische Benutzer 'svn-user' wird dann der Gruppe 'svn-users' hinzugefügt:
Auch können andere, schon existierende Benutzer, mittels 'addgroup' der Subversion-Gruppe hinzugefügt werden. Ein weiter wichtiger Schritt ist die Erstellung des Repositorys. Dabei wird als Beispiel, wie bei der obigen Erklärung, nur ein Repository für unterschiedliche Projekte angelegt. Zunächst ist das Verzeichnis, indem sich das Repository befinden soll, zu erstellen:
Mit dem Befehl: 'svnadmin' kann nun das eigentliche leere Repository angelegt werden.
In diesem Fall wird ein Repository mit ebenfalls dem Namen 'repository' erzeugt. Auch können neben diesem, noch weitere unabhängige Repositories angelegt werden. Mittlerweile nutzt Subversion standardmäßig die 'fsfs'-Datenbank. Möchte man stattdessen die Berkeley-Datenbank nutzen, ist dieses durch die Option '--fs-type' bei der Erstellung anzugeben. Als nächstes sind die Rechte und Besitzverhältnisse des Repositorys festzulegen:
Mit 'chown' wird das Repository mit Rechten des Apache-Servers 'www-data' und Benutzern der Gruppe 'svn-users' versehen. Der Apache-Servers kommen im weiteren Verlauf dieser Seite zum tragen, wenn der SVN-Server für den 'http://'-Zugriff erweitert wird. Des weiteren werden die Zugriffsrechte mit 'chmod' gesetzt. Beide Operationen sind mit der Option '-R', für rekursiv, auf das Repository anzuwenden. Als nächstes sind innerhalb des Repositorys noch weitere Einstellungen für den 'svn://'-Zugang zu konfigurieren. Dazu ist die Datei 'svnserve.conf', innerhalb des Repositorys, zu editieren:
Wichtig sind dabei die markierten Zeilen, wobei 'anon-access = read' bedeutet, dass ein anonymer Lesezugriff erlaubt ist. Möchte man einen anonymen Zugriff unterbinden, so ist 'none' einzutragen. In der Zeile 'auth-access = write' wird festgelegt, das autorisierte Benutzer lesen und schreiben dürfen. Damit die Authentifizierung über die Datei 'passwd' innerhalb des Repositorys stattfindet, ist die Zeile 'password-db = passwd' auszukommentieren. Auch sollte ein 'realm' für das Repository gesetzt werden. Danach sind die Benutzer und Passwörter in der 'passwd'-Datei zu hinterlegen:
In diesem Beispiel bekommt der Benutzer 'svn-user' mit dem Passwort 'secret' Zugriff auf das Repository. Nun sollte alles für den SVN-Server berücksichtigt sein, und der eigentliche Server kann gestartet werden. Der Start des eigentlichen Servers 'svnserve' kann permanent über ein Start-Script während des Hochlaufs des Systems geschehen oder bei Bedarf über den Super-Dämon 'inetd'. Im Folgenden wird der Start über den 'inetd'-Dämon berücksichtigt, dazu ist die Konfigurationsdatei 'inetd.conf' um folgende Zeile zu ergänzen:
Das erste 'svn' gibt den Service an, welcher in der Datei '/etc/services' definiert ist. Der Port für Subversion ist '3690'. In der fünften Spalte wird der Benutzer und die Gruppe angegeben, mit der das Programm in aus der sechsten Spalte gestartet werden soll. Dabei stehen die Parameter '-i' für den Start im 'inetd'-Modus und '-r' legt das 'root'-Verzeichnis der Repositories fest. Ein Zugriff auf Dateien in höheren Verzeichnisebenen ist somit nicht möglich. Nach einem Neustart des Super-Dämons 'inetd' (mit: '/etc/init.d/openbsd-inetd restart') kann der SVN-Server genutzt werden. 'http://'-Zugang - Erweiterung des SVN-ServersErgänzend zum zuvor beschrieben 'svn://'-Zugriff kann der Zugang zum SVN-Server via 'http://' erweitert werden. Dazu verwendet Subversion in Zusammenarbeit mit dem 'Apache2'-Webserver das 'WebDAV'-Protokoll um Daten zwischen Client-Programm und Server auszutauschen. Für den 'http://'-Zugang ist das Paket 'libapache2-svn' zu installieren:
Auch sollten alle weitere Abhängigkeiten wie die Installation von 'Apache2' oder 'WebDAV' aufgelöst werden. Damit ein Web-Zugriff zum Repository gewährleistet ist, muss sichergestellt werden, dass die folgenden Apache-Module aktiviert sind: a2enmod authz_user a2enmod dav a2enmod dav_svn Standardmäßig sollte die Module jedoch schon aktiviert sein. Danach ist die Datei 'dav_svn.conf' anzupassen:
Wichtig ist die Angabe des 'SVNPath' (gelbe Markierung), hier ist Pfad zum Repository anzugeben. Die beiden grün markierten Einträge dienen der Authentifizierung und Autorisierung. Beide Dateien müssen noch erstellt bzw. bearbeitet werden. Zunächst sollte die Datei 'dav_svn.passwd' erstellt werden, da laut Konfigurationsdatei der Autorisierungstyp: 'Basic' zum tragen kommt, kann das Erstellen der Datei mit dem Kommando 'htpasswd' erfolgen: htpasswd -cm /etc/apache2/dav_svn.passwd svn-user die Option '-c' steht für 'create' und darf nur beim ersten Benutzer zum Erstellen der Datei angewendet werden. Weitere Benutzer sind ohne Option '-c' der Passwort-Datei hinzuzufügen. Das Passwort ist nach dem 'htpasswd'-Kommando einzugeben und muss wiederholt werden. htpasswd -m /etc/apache2/dav_svn.passwd another_user Die Datei 'dav_svn.authz' regelt, was ein Nutzer darf, wenn er eingeloggt ist, so kann man z.B. Zugriff auf einzelne Repositories oder gar einzelner Verzeichnisse oder Dateien einschränken. Solange nur einige wenige Benutzer auf den Subversion-Server zugreifen reicht eine einfache Konfiguration aus:
Die Konfiguration der obigen 'dav_svn.authz' besagt, alle Benutzer erhalten lesenden Zugriff und Mitglieder der Gruppe 'svn-users' haben zusätzlich schreibend Zugriff. Weitere Konfigurationsmöglichkeiten können dem Online-Buch zu Subversion entnommen werden. Nun sollte auch der Zugriff via 'http://' fertig sein, nach dem Neustart des 'Apache2'-Servers mit kann ein erster Zugriff mit einem Web-Browser geprüft werden,. Dazu ist bezogen auf dieses Beispiel, folgender Link im Browser einzugeben: 'http://<SVN-Server>/svn/repository'.
Der Subversion-Server sollte nun für Clients über die Zugänge 'http://' nutzbar sein. Subversion - ClientsUm mit einem SVN-Server arbeiten zu können, wird eine entsprechende Software auf dem Client benötigt. Auf der Homepage von Subversion findet man passende Programmpakete für eine Vielzahl gängiger Betriebssysteme in den jeweils dafür vorgesehen Formaten. Im Folgenden werden für die Betriebssysteme Linux und Windows jeweils eine kommandozeilenorientierter- bzw. grafischer -Client für Subversion vorgestellt. Subversion Client unter LinuEin Linux-System, welcher auf einem Subversion-Server zugreifen möchte, benötigt ebenfalls das Paket: 'subversion'. Unter Debian kann dieses Paket, genau wie beim Server, mit:
installiert werden. Danach kann schon via Kommandozeile auf dem SVN-Server zugegriffen werden. Ein brauchbarer GUI-Client unter Linux stellt 'RapidSVN' dar. Nach der Debian-Installation mittels:
kann der Client von der GNOME-Oberfläche unter 'Anwendung => Entwicklung => RapidSVN' gestartet werden. Auf der Homepage von 'RapidSVN' kann auch eine Windows-Version heruntergeladen werden. Subversion unter WindowsFür Windows, bezogen auf der Kommandozeile, können die zertifizirten Binärdateien für Subversion von der Homepage von 'CollabNet' heruntergeladen werden. Auf der Downloadseite findet sich ein Installer, der nur den Client-Anteil von Subversion enthält. Nach einer kurzen Registrierung kann der Client heruntergeladen und anschließend installiert werden. Nach der Installation kann ein SVN-Server über die Kommandozeile (DOS-Box) bedient werden. Viel besser oder einfach genialer ist der freie GUI-Client für Subversion 'TortoiseSVN'. Die Open-Source-Software 'TortoiseSVN' basiert auf Subversion und bietet als Subversion-Client alle Funktionen, sowie eine leicht zu benutzende Oberfläche. 'TortoiseSVN' bietet keine eigene Programm-Oberfläche, sondern integriert sich in die Windows-Shell und ist damit in jedem Programm verfügbar, welches die Windows-Shell benutzt (Kontextmenü, Windows Explorer Ordner-/Datei-Ansicht etc.). Alle Befehle von Subversion sind über das Kontextmenü des Explorers zugänglich; 'TortoiseSVN' fügt dort ein eigenes Untermenü ein. Auf der Download-Seite kann 'TortoiseSVN' als 32- und 64-bit-Version 'msi'-Paket heruntergeladen werden. Die Installation erledigt sich wie bei jeden 'msi'-Paket unter Windows. Hier ein Screenshot von 'TortoiseSVN':
Auf der Download-Seite von 'TortoiseSVN' kann ebenfalls eine deutsches Sprachpaket, sowie eine deutsche Bedienungsanleitung heruntergeladen werden. Web-Frontends zu SubversionBezüglich Subversion gibt es eine Reihe von Web-Frontends, die dem Benutzer auf einfache Weise das Navigieren innerhalb der Repositories ermöglicht. Die bekanntesten Vertreter hierfür sind 'ViewVC' und 'WebSVN'. Beide Applikationen unterstützen neben grafischen 'Diffs' auch Syntax-Highlighting und Multimedia-Dateiformate. Das Handling der beiden erwähnten Frontends kann im Internet, ausgehend von der Seite: 'http://svn.debian.org/', ausprobiert werden. ViewVC'ViewVC' (vormals ('ViewCVS') ist ein Web-Frontend für 'CVS'- und Subversion-Repositories. Das Tool ist in der Sprache 'Python' geschrieben und kann unter Debian-Linux einfach installiert werden:
Bei der Installation sollten alle weiteren Abhängigkeiten automatisch aufgelöst werden. Die eigentliche Konfiguration findet in der Datei '/etc/viewcv/viewvc.conf' statt. Hierzu ein Ausschnitt mit den wichtigsten Konfigurations-Parametern:
Da 'ViewVC' in diesem Beispiel mit Subversion- und nicht mit 'CVS'-Repositories zusammenarbeiten
soll, ist 'cvs_roots'
auszukommentieren. Wenn mehrere Repositories bestehen, kann mittels 'root_parents'
ein Verzeichnis angegeben werden, worin nach den Repositories gesucht wird. Nach den gemachten Konfigurationen kann 'ViewVC' direkt als 'CGI'-Aufruf vom Browser aus gestartet werden (Aufruf: 'http://<SVN-Server>/cgi-bin/viewvc.cgi'). Einen noch einfacheren Aufruf, der Form 'http://<SVN-Server>/viewvc/', kann erreicht werden, indem ein 'ScriptAlias' für den 'Apache2' definiert wird. Hierzu erstellt man am einfachsten innerhalb des Verzeichnisses '/etc/apache2/conf.d' einfach eine Datei mit den Namen 'viewvc' mit folgenden Inhalt:
Anschließend sollte der 'Apache2' neu gestartet werden. Durch den Aufruf mittels URL: 'http://<SVN-Server>/viewvc/' kann das Web-Frontend genutzt werden.
WebSVN'WebSVN' ist ein Web-Frontend geschrieben in 'PHP', das eigens für Subversion entwickelt worden ist. Es macht einen etwas moderneren Eindruck bezüglich der Darstellung und kann sogar 'RSS'-Feeds erzeugen. Die Installation unter Debian geht wie gewohnt einfach von statten:
Während der Installation sind einige Abfragen zur Konfiguration von 'WebSVN' zu beantworten:
Die Resultate zur Konfiguration werden in der Datei: '/etc/websvn/svn_deb_conf.inc' abgelegt. Mittel des Kommandos 'dpkg-reconfigure websvn' kann die Dialog-Konfiguration jederzeit auch erneut durchlaufen werden. Eine weitere Konfiguration kann innerhalb der Datei: '/etc/websvn/config.php' erfolgen, hierzu bilden die Kommentare innerhalb der Datei und die Homepage von 'WebSVN' Hilfe an. Nach der Installation kann der Zugriff über den Link: 'http://<SVN-Server>/websvn/' erfolgen.
Das Handling von 'WebSVN' sollte für einen geübten SVN-Benutzer selbsterklärend sein. AnmerkungenUmfassende Informationen bezüglich Subversion lassen sich aus dem Online-Buch zu Subversion gewinnen, siehe Link unten. Für einen SVN-Server im lokalen Netzwerk (Intranet) sollten die Zugriffsmethoden 'svn://' bzw. 'http://' ausreichend sein. Für öffentlich erreichbare SVN-Server sollte besser das 'svn+ssh://'- bzw. 'https://'-Protokoll verwendet werden, entsprechende Realisierungsbeispiele lassen sich im Internet hierzu finden. Weitere Infos
letzte Änderung: 01. Januar 2014 |
Copyright © 2004 Norbert Eusterholz |