Heute ist Tag 1 mit meinem neuen Server und natürlich ist noch nicht alles wieder so, wie es vorher war. Für einige kleine Projekte benötige ich ein SVN-Repository und da ich einen eigenen Server habe lohnt es sich ja auch diesen dafür zu verwenden. Da einige Projekte eventuell auch für die Allgemeinheit verfügbar sein sollen, möchte ich diesmal gleich den Zugriff per DAV ermöglichen, damit nicht immer ein Benutzer angelegt oder ein zentrales Passwort veröffentlicht werden muss. Da die letze Einrichtung auch bei mir schon wieder etwas her ist habe ich bei How-To Geek den Artikel Install Subversion with Web Access on Ubuntu gefunden. Hier nun meine Zusammenfassung zum Umsetzen auf einem Server mit Ubuntu 10.04 LTS (sollte aber auch auf anderen Linux Distributionen ähnlich funktionieren, abgesehen von den Speicherpfaden und der Art der Installation).
Installieren von Subversion
Die Installationshilfen von Ubuntu machen einem diesen Schritt ja sehr einfach. Zuerst einmal müssen bei meinem frisch installierten Server die Paketquellen aktualisiert werden. Das macht man mit folgendem Befehl (solltet ihr nicht als „root“ angemeldet sein, müsst ihr eventuell noch „sudo “ vor diesen und weiter Befehl setzen):
[bash gutter=“false“]
apt-get update
[/bash]
Anschließend können wir Subversion und die Erweiterung für den Apache-Server installieren, was mit folgendem Befehl passiert:
[bash gutter=“false“]
apt-get install subversion libapache2-svn
[/bash]
Wenn alles geklappt hat ist Subversion auch schon installiert. Um es zu testen könnt ihr den „svn“ Befehl auf der Konsole testen und dabei auch gleich feststellen, ob das WebDAV Modul verfügbar ist:
[bash gutter=“false“]
svn –version
[/bash]
WebDAV Ordner einrichten
Zuerst einmal legen wir ein Verzeichnis an, in dem später all unsere SVN-Repositories abgelegt werden:
[bash gutter=“false“]
mkdir /var/svn
[/bash]
Anschließend erstellen wir einen weiteren Unterordner für alle SVN-Repositories, die wir später per WebDAV freigeben möchten:
[bash gutter=“false“]
mkdir /var/svn/public
[/bash]
Erzeugen des ersten öffentlichen Repository
So, nun sind wir bereit unser erstes Repository zu erzeugen und dieses anschließend freigeben zu können. Zuerst einmal müssen wir das SVN-Repository selbst erzeugen. Dies geschieht mit dem Befehl svnadmin, genauer gesagt mit dem Unterbefehl svnadmin create:
[bash gutter=“false“]
svnadmin create /var/svn/public/myproject
[/bash]
Der Befehl erzeugt keine Ausgabe, lass euch also nicht irritieren, wenn da nicht viel passiert. Um zu kontrollieren, ob das Erstellen des SVN-Repositories geklappt hat, seht euch einfach mal den Inhalt des Ordners an:
[bash gutter=“false“]
cd /var/svn/public/myproject
ls -l
total 24
drwxr-xr-x 2 root root 4096 2011-05-22 13:21 conf
drwxr-sr-x 6 root root 4096 2011-05-22 13:21 db
-r–r–r– 1 root root 2 2011-05-22 13:21 format
drwxr-xr-x 2 root root 4096 2011-05-22 13:21 hooks
drwxr-xr-x 2 root root 4096 2011-05-22 13:21 locks
-rw-r–r– 1 root root 229 2011-05-22 13:21 README.txt
[/bash]
Repository über WebDAV freigeben
Nun müssen wir die Konfiguration des WebDAV Moduls anpassen, damit das Repository von außen verfügbar ist. Dazu öffnen wir die Konfigurationsdatei:
[bash gutter=“false“]
vi /etc/apache2/mods-enabled/dav_svn.conf
[/bash]
Hier müsst ihr in ein paar Zeilen die anführenden Kommentarzeichen entfernen. Eure Konfiguration sollte dann mindestens folgende Zeilen (unkommentiert) enthalten:
[bash gutter=“false“]
<Location /svn>
DAV svn
SVNParentPath /var/svn/public
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>
[/bash]
Nachdem ihr die Konfiguration gespeichert habt können wir den Zugang für euer öffentliches Repository machen. Wir verwenden hier allerdings eine Benutzer-Autorisierung, damit wir den Schreibzugriff auf das Repository einschränken können. Zum Erstellen eines Benutzers wird folgender Befehl verwendet. Gebt dort anschließend zweimal das neue Passwort des Nutzers ein:
[bash gutter=“false“]
htpasswd -cm /etc/apache2/dav_svn.passwd public
New password:
Re-type new password:
Adding password for user public
[/bash]
Damit die Benutzer auch in das Verzeichnis schreiben können, muss es noch auf den Apache-Benutzer übertragen werden, da wir es ja als root erzeugt haben. Das geschieht mit folgendem Befehl:
[bash gutter=“false“]
chown -R www-data /var/svn/public/
[/bash]
Das war es im Grunde auch schon. Was jetzt noch fehlt ist ein Neustart des Apache-Servers, damit die neue Konfiguration auch geladen wird:
[bash gutter=“false“]
/etc/init.d/apache2 restart
[/bash]
Testen des öffentlichen Repositories
Jetzt könnt ihr das neue öffentliche Repository testen. Navigiert dazu einfach in eurem Browser auf eine eurer Domains und dort in den Unterordner /svn/myproject
. Ihr solltet dann in etwa folgendes sehen:
Das war es auch schon. Jetzt habt ihr euern eigenen Subversion Server und könnt dort nach Belieben öffentliche Projekte verwalten. Solltet ihr aber mal ein nicht öffentliches Projekt haben, könnte ihr dieses weiterhin über das svn+ssh:
Protokoll betreiben. Dazu müsst ihr es einfach nur direkt im /var/svn
Ordner ablegen und dann per SSH für bestimmt Benutzer erreichbar machen. Falls Interesse besteht werde ich das in einem separaten Artikel nochmal kurz erklären.
Fragen und Anmerkungen sind wie immer gerne gesehen!