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):
apt-get update
Anschließend können wir Subversion und die Erweiterung für den Apache-Server installieren, was mit folgendem Befehl passiert:
apt-get install subversion libapache2-svn
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:
svn --version
WebDAV Ordner einrichten
Zuerst einmal legen wir ein Verzeichnis an, in dem später all unsere SVN-Repositories abgelegt werden:
mkdir /var/svn
Anschließend erstellen wir einen weiteren Unterordner für alle SVN-Repositories, die wir später per WebDAV freigeben möchten:
mkdir /var/svn/public
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:
svnadmin create /var/svn/public/myproject
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:
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
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:
vi /etc/apache2/mods-enabled/dav_svn.conf
Hier müsst ihr in ein paar Zeilen die anführenden Kommentarzeichen entfernen. Eure Konfiguration sollte dann mindestens folgende Zeilen (unkommentiert) enthalten:
<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>
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:
htpasswd -cm /etc/apache2/dav_svn.passwd public New password: Re-type new password: Adding password for user public
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:
chown -R www-data /var/svn/public/
Das war es im Grunde auch schon. Was jetzt noch fehlt ist ein Neustart des Apache-Servers, damit die neue Konfiguration auch geladen wird:
/etc/init.d/apache2 restart
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!