SVN Server Aufsetzen
Ich habe viele Anleitungen gefunden wie man solch einen Subversion (SVN) Server
aufsetzt, allerdings keine, die die Zugriffssteuerung so verwaltet, dass die
verschiedenen Bereiche (Repositories) von unterschiedlichen Leuten mit
unterschiedlichen Rechten bearbeitet können.
Ich werde das mit den folgenden Absätzen erlären.
SVN kennt ein eigenes Protoll, mit dem man auf einen SVN Server zugreifen kann.
Dieses wird aber mittlerweile von vielen Firewalls gesperrt, weil die Firmen dazu
übergehen ausgehend auch nur wenige Ports zuzulassen. Was immer funktionieren
muss ist Port 80 (HTTP), welcher für den Zugriff auf Webseiten notwendig ist.
Was liegt also näher, über den HTTP Port auch den Zugriff auf das SVN
Repository herzustellen. Die SVN Entwickler haben das auch in die Tat umgesetzt.
Man braucht also zuerst einen Apache basierten WEB Server. Diesen kann man als
echten oder virtuellen Server mieten. Man braucht sich in der Regel auch nicht mit
dem Installieren der Server Software auseinander setzten. Ich verweise hier einfach
mal auf GOOGLE.
Zuerst sollte man einmal das lesen.
Unter "Apache HTTP Server einrichten" wird empfohlen eine Datei "subversion.conf"
via "httpd.conf" oder "apache2.conf"(Debian) in die Konfiguration einzubinden. Damit
ist man aber sehr beschränkt in den Möglichkeiten, die einem der WEB
Server bietet. Ich habe das mal versucht, aber war damit nicht zufrieden, weshalb
ich nach einer Lösung via normaler URL Konfiguration im Apache geforscht
habe.
Hier eine Kurzfassung von mir (alles als root auszuführen):
Pakete installieren:
apt-get install subversion subversion-tools libapache2-svn
Directory /home/svn anlegen:
mkdir /home/svn
Dummy User für svn:
useradd -d /home/svn -c 'svn-server service' -r -s /bin/false svn
Directory nur für SVN User zugänglich machen:
chown -R svn.svn /home/svn
Neue Verzeichnisse und Files sollen immer der SVN User Gruppe gehören:
chmod -R g+s /home/svn
Im Folgenden "repo1" natürlich mit seinem eigenen Repository ändern.
Ein Repository anlegen:
svnadmin create /home/svn/repo1
Der owner des Repositories muss der SVN User sein:
chown -R svn.svn /home/svn/repo1
Pakete für den WEB Zugriff installieren:
apt-get install enscript websvn
Beim letzten Installationsschritt wird man nach dem SVN Verzeichnis gefragt. Hier
muss man "/home/svn" angeben, damit es auf Anhieb funktioniert. Durch die Angabe
der Wurzel aller Repositories, können in Zukunft weitere angelegt werden und
erscheinen dann automatisch in der WEB Oberfläche.
Sollte etwas nicht funktionieren, dann muss man im Verzeichnis "/etc/websvn" mal
nach dem Rechten sehen.
Bei mir sieht das dann so
aus.
Jetzt kann man sich zwar das Reposity anschauen, aber noch nichts ein- oder
auschecken. Dazu muss jetzt der Zugriff via HTTP oder HTTPS konfiguriert werden.
In Verzeichnis "/etc/apache2/sites-available" speichert der Apache WEB Server die
Konfigurationsdateien für die diversen WEB Seiten. Dort muss man eine Datei
"subversion" anlegen. Hier ist mein Muster.
Wichtig sind dabei:
"ServerName svn.anw.at" ... beliebige URL
"AssignUserId svn svn" ... Sicherheit, weil der Zugriff nur als
User svn erfolgt
Wenn man hier mehrere Repositories, verwalten möchte, dann braucht man nur
entsprechend mehrere
<location repoX>
</location>
Blöcke in die Datei zu schreiben, die jeweils auf ein eigenes Repository
zeigen. Man erhät dadurch pro Repository eigene Dateien für die
Authentifizierung und kann somit sehr einfach unterschiedliche Teams an den
unterscheidlichen Projekten arbeiten lassen.
Damit Apache diese neue Seite auch anzeigt, muss in "/etc/apache2/sites-enabled"
ein symbolic link auf die Datei in "/etc/apache2/sites-available/subversion"
erstellt werden. Jetzt muss man die Konfiguration des WEB Servers neu laden.
Das geht mit "/etc/init.d/httpd reload"
oder "apachectl -k graceful"
Damit ist die WEB Server Konfiguration fertig und wir können mit der dem
SVN WEB Dav Modul weiter fortfahren.
Jedes SVN Repository enthält ein Verzeichnis mit dem Namen "conf". Dort
befinden sich die Steuerdateien. In unserem Beispiel wäre das
"/home/svn/repo1/conf". Das Beste ist die
Dokumentation
zu studieren.
Die Datei "authz" definiert
für jeden user, oder Gruppen von Usern die Zugriffsrechte und die Datei
http.passwd enthält
die notwendigen Passwörter dazu.
Damit müsste bereits der Zugriff via Browser möglich sein. Hier kann man sich mein SVN Repository anschauen. Sieht nach wenig aus, also wie ein Browser listing (ist es ja auch), aber im Hintergrund werkelt das Apache SVN Modul und berücksichtigt schon die Zugriffsrechte.
Der Zugriff kann von der Kommandozeile aus mit dem Programm "svn" erfolgen,
oder mit dem Windows Programm TortoiseSVN, oder vielen anderen.
Wenn man anonym zugreifen will, dann geht das per HTTP. Wenn man etwas
einchecken möchte, würde ich HTTPS empfehlen, damit das Passwort
verschlüsselt übertragen wird.
Die URL zu meinem Repository ist https / http://svn.anw.at/avr32-toolchain/trunk
Die offizielle Webseite des (Apache) SVN Projekts