2.1 Webserver Apache
Subversion hat den riesigen Vorteil, dass es über das http-Protokoll angesprochen werden kann. Natürlich auch über ssh und andere Varianten, aber über den Webserver hat den Vorteil, dass man vorhandene Sicherheitsmassnahmen etc benutzen kann und keine zusätzlich Ports in einer Firewll nutzen kann. So ist über https eine verschlüsselte Verbindung genauso Möglich wie über ssh, aber zusätzlich mit dem Vorteil, dass keine eigenen Benutzer im System eingerichtet werden müssen.
Um Subversion im Webserver zu benutzen müssen die Module mod_dav und mod_dav_svn in Apache eingebunden sein. Weitere Module sind nicht erforderlich, sinnvoll ist aber, je nach Konfigurationswunsch noch mod_authz_svn.
Letzendlich wird nun das Repository ansprechbar über dieses Stückchen Konfiguration:
PHP-Code:
<Location /mein_repository>
DAV svn
SVNPath /srv/svn/mein_repository
</Location>
2.2 Repository
Als Repository bezeichnet man bei einem SCM-System die "Datenbank" in der Die Dateien, die Änderungen die Meldungen und alles weiter abgelegt sind. ein Repository einzurichten ist sehr einfach:
PHP-Code:
svnadmin create /srv/svn/mein_repository
Dabei ist zu beachten, das natürlich der Pfad /srv/svn xistieren muss und für den user beschreibbar sein muss.
Um ein Repository einzurichten, dass über http ansprechbar ist, sollte dies als root geschehen und die Rechte zum Schreiben in das Repository müssen dem User des Webservers übergeben. Anders ausgedrückt, das Repository muss dem User des Webservers gehören:
PHP-Code:
chown -R wwwrun /srv/svn/mein_repository
Das Repository ist nun ansprechbar.
2.3 Authentifizierung
Durch den Einsatz eines Webservers können natürlich nun die Authentifizierungsmechanismen des Webservers verwendet werde. Hier gibt es 2 Möglichkeiten, einmal die Basic-Authentifizierung:
PHP-Code:
<Location /svn>
DAV svn
SVNParentPath /usr/local/svn
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /etc/svn-auth-file
Require valid-user
</Location>
Zum Anderen die erweiterte Authentifizierung über Subversion:
PHP-Code:
<Location /svn/project>
DAV svn
SVNPath /usr/local/svn/project
# how to authenticate a user
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /path/to/users/file
# only authenticated users may access the repository
Require valid-user
# our access control policy
AuthzSVNAccessFile /path/to/access/file
</Location>
Hierbei sei die Dokumentation über Apache bzw über Subversion für die Erstellung der Zugangsberechtigungen empfohlen.
Lesezeichen