SVN Server einrichten

Wie man unter Linux einen Subversion Server einrichtet.

Inhalt

  • Benötigte Pakete
  • Depot erstellen
  • Benutzer erstellen / Zugriff erlauben
  • Zugriffssteuerung über Gruppen

Benötigte Pakete

Zum betreiben eines SVN Servers werden einige Pakete und Apache-Module benötigt.

Apache

Zunächst brauchen wir natürlich den Apache-Server, bei den meisten Distributionen ist er schon vorinstalliert. Andernfalls findet man über den Paketmanager der Distribution eine passende Installation, ansonsten bietet sich der Download von http://www.apache.org/ an. Auf die Grundkonfiguration von Apache werde ich an dieser Stelle nicht weiter eingehen, dafür gibt es schon mehr als genug Tutorials.

Apache Module

Für SVN werden zwingend folgende Module benötigt:

  • mod_authz_* (user,owner,host,groupfile,default,dbm)
  • mod_dav
  • mod_dav_fs
  • mod_dav_lock
  • mod_dav_svn (wird evtl. beim Kompilieren von Subversion erzeugt)
  • mod_authz_svn (siehe oben)

Wenn alle Module vorhanden sind (idr. zu finden unter /usr/lib/apache2/modules/ oder /usr/lib/httpd/modules/) sollten sie sichergehen das diese auch in der /etc/apache2/httpd.conf (oder /etc/httpd/conf/httpd.conf) eingetragen und nicht auskommentiert sind! (Durch eine # am anfang der Zeile)

Diese Zeilen sollten dann in der httpd.conf vorhanden sein:

LoadModule authz_dbm_module modules/mod_authz_dbm.so
LoadModule authz_default_module modules/mod_authz_default.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_owner_module modules/mod_authz_owner.so
LoadModule authz_user_module modules/mod_authz_user.so

LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
LoadModule dav_lock_module modules/mod_dav_lock.so

Um sicherzugehen das keines der Module den start von Apache durch einen Fehler verhindern sollte nun der Apache (neu) gestartet werden. ("apache2ctl restart")

Subversion

SVN gibt es in den meisten fällen ebenfalls als Paket "subversion" im Packetmanager eurer Distribution, auch hier gibt es natürlich alternativ den Download von http://subversion.tigris.org/ . Gestartet wird der Server über den Befehl "svnserve -d" (als Dienst). Zum laden beim Starten von Linux muss man den Server zu den Startscripts hinzufügen. Das geht je nach Distribution z.B. mit:

rc-update add apache2
- oder -
chkconfig --level 5 httpd on

WICHTIG: Möglicherweise muss beim kompilieren von subversion das USE-Flag "apache2" hinzugefügt werden damit auch das Apache-Modul erzeugt wird.

Depot erstellen ("Repository")

Wenn alle benötigten Pakete installiert sind kann das erste Depot erstellt werden. Dazu sind mehrere Schritte nötig.

In diesem Beispiel gehe ich davon ausdas die Depot im Ordner /var/svn gespeichert werden.

Zunächst erstellen wir den eben erwähnten Ordner und darin unser erstes Depot:

mkdir /var/svn
svnadmin create /var/svn/repo1

Als nächstes muss der gewünschte vhost bearbeitet werden. Meistens zu finden unter /etc/apache2/vhosts.d/. Bei einer frischen Installation von Apache ist das normalerweise die Datei 00_default_vhost.conf.

Sollten keine vhosts eingerichtet sein kann man die "location" natürlich auch in die httpd.conf eintragen.

In den gewünschten vhost fügen wir nun eine location für unser SVN Depot ein:

<VirtualHost (...)>
(...)
        <Location /svn_repo1>
		DAV svn
		SVNPath /var/svn/repo1
		AuthType Basic
		AuthName "Subversion repository"
		AuthUserFile /etc/svn-auth-file
	        AuthzSVNAccessFile /etc/svn-access-file
	        Require valid-user
        </Location>
(...)
</VirtualHost>

Die hierbei angegebenen Dateien /etc/svn-auth-file und /etc/svn-access-file bestimmen welche Benutzer (und Gruppen) Zugriff auf das Depot haben. Dazu mehr auf der nächsten Seite.

Benutzer erstellen / Zugriff erlauben

Zunächst erstellen wir (sofern noch nicht geschehen) in Linux einen Benutzer der zugang zu dem Depot erhält:

useradd -G apache svn1
- oder -
adduser -G apache svn1

Hinweis: Sollte keiner der beiden Konsolenbefehle verfügbar sein einfach über die Grafische oberfläche den entsprechenden Benutzer erstellen. Und dabei nicht vergessen ihn zur Gruppe "apache" hinzuzufügen!

Und legen für diesen auch ein Passwort fest:

passwd svn1

Hinweis: Wenn der Benutzer schon vorhanden war ist hier die Stelle zum weiterlesen.

Nun brauch der Benutzer nur noch ein Passwort für SVN und die nötigen Zugangsrechte.

Als erstes stellen wir das SVN-Passwort des Benutzers ein:

htpasswd -c /etc/svn-auth-file svn1

New password: (Passwort eingeben)
Re-type new password: (Und nochmal)
Adding password for user svn1

Jetzt fehlen nur noch die Zugriffsrechte des Benutzers, dazu erstellen wir mit einem Texteditor der Wahl die noch fehlende Datei /etc/svn-access-file. Darin werden die Zugriffsrechte eines (oder mehrerer) Depots definiert. Bei einem einfachen Benutzer-Zugriff ohne Gruppen sieht diese Datei in unserem Beispiel so aus:

[svn_repo1:/]
svn1 = rw

Hierbei steht das "r" und das "w" für Lese- (read) und Schreibrechte (write).

Zu guter letzt müssen wir noch unter Linux die Rechte für den Ordner setzen:

chown -R svn1:apache /var/svn/repo1
chmod -R 770 /var/svn/repo1

Warum das Verzeichniss für den Besitzer ausführbar sein muss ist mir zwar schleierhaft aber dem ist scheibar so.

Auch an dieser Stelle muss noch einmal der Apache-Server neu gestartet werden. ("apache2ctl restart")

Lokal sollte der SVN Server jetzt unter der URL http://localhost/svn_repo1/ erreichbar sein. Zum Login wird der Benutzername svn1 mit dem zuvor gewählten SVN-Passwort benutzt.

Zugriffssteuerung über Gruppen

Kommt demnächst, bin grad zu faul dafür ;)
Author

Erfahrungen

Es sind noch keine Kommentare vorhanden.

Hier Kannst Du einen Kommentar verfassen


Bitte gib mindestens 10 Zeichen ein.
Wird geladen... Bitte warte.
* Pflichtangabe

Verwandte Beiträge

Das 'Nested Sets' Modell - Bäume mit SQL

Das 'Nested Sets' Modell - Bäume mit SQL

Dieses Tutorial beschreibt die 'Nested Sets'-Technik, mit der man solche Bäume mit SQL performant konstruieren kann. ...

gorski@

Autor : gorski@
Kategorie: mySQL-Tutorials

Fortschrittsbalkens mit PHP

ProgressClass stellt eine PHP-Klasse für die dynamische Anzeige und Veränderung eines Fortschrittsbalkens zur Verfügung. ...

what@

Autor : what@
Kategorie: PHP-Tutorials

Eines Warenkorbsystem für Anfänger

Ein kurzes Tutorial für Anfänger um ein einfaches aber funktionelles Warenkorbsystem zu erstellen. Freue mich über Rückmeldungen und Kritik - denn nur so verbessert man sich :) ...

web3hoster

Autor : web3hoster
Kategorie: PHP-Tutorials

Einfaches News-Script

Das hier ist ein kleines Tutorial, um zu zeigen wie so ein News-Script aussehen kann. Im Grunde ist es nichts anderes als ein Gästebuch, in welches jedoch nur der Webmaster (oder sonstige authorisierte Personen) etwas eintragen kann. Natürlich kann man ...

pik

Autor : pik
Kategorie: PHP-Tutorials

Variablen über mehrere Seiten hinweg verwenden - der Session-Befehl macht 's möglich!

Oberste Voraussetzung um Session-Befehle korrekt auszuführen ist, dass der Provider a) PHP und b) das speichern von Sessions auf dem Server überhaupt erlaubt. Wird der Session-Befehl unterstützt jedoch nicht das direkte speichern von Sessions bzw. Sess ...

ndo@

Autor : ndo@
Kategorie: PHP-Tutorials

Was muss ich in WordPress einstellen, damit Google Fonts nicht mehr geladen werden?

Möchten Du WordPress davon abhalten, Google Fonts zu verwenden? Hier erfährst Du, was du dafür in WordPress einstellen musst. ...

admin

Autor : admin
Kategorie: Sonstige Tutorials

Was muss ich in WordPress einstellen, damit Google Fonts nicht mehr geladen werden?

Möchten Du WordPress davon abhalten, Google Fonts zu verwenden? Hier erfährst Du, was du dafür in WordPress einstellen musst. ...

admin

Autor : admin
Kategorie: Sonstige Tutorials

Tutorial veröffentlichen

Tutorial veröffentlichen

Teile Dein Wissen mit anderen Entwicklern weltweit

Du bist Profi in deinem Bereich und möchtest dein Wissen teilen, dann melde dich jetzt an und teile es mit unserer PHP-Community

mehr erfahren

Tutorial veröffentlichen