Subversion-Zugriff per http
===========================
$sonstwer hätte gern ein Subversion-Repository auf Dolly liegen,
Zugriff per SSH ist irgendwie "unschön", da man dann für jeden
SVN-User einen SSH-User anlegen muss.
0. Inhalt
---------
1. SVN-Repository anlegen
2. Apache konfigurieren
3. "Benutzer" anlegen
4. Benutzerrechte vergeben
5. Schuldiger
1. SVN-Repository anlegen
-------------------------
Ich habe mich entschieden, keine Berkeley-DB zu verwenden, sondern
eine "Filesystem-DB", die Subversion mitbringt:
svnadmin create /at/whichever/path --fs-type fsfs
Damit existiert schonmal ein Repository, Tipps zum empfohlenen Layout
gibt http://svnbook.red-bean.com/en/1.1/ch04s07.html#svn-ch-4-sect-7.1
- das wird wichtig, wen man releases, Branches etc. taggen möchte.
Da der Zugriff auf dieses Repository später über den Apache erfolgt,
muss der Benutzer www-data passende Rechte haben, am einfachsten per
sudo chown -R www-data:www-data /path/to/repos.
neue dateien gehören sowieso www-data. Um die Rechte nicht
kaputtzumachen, sollte man auch lokal von Dolly aus per http auf das
repository zugreifen. (mit der Performance hatte ich dabei wenig
Probleme, selbst ein Linux-Kerneltree war "relativ" schnell ein- und
ausgecheckt.)
2. Apache konfigurieren
-----------------------
Nötig ist mod_dav_svn, das ist auf Dolly bereits installiert (Paket
libapache2-svn) und im Apache aktiviert.
"Normales" HTTP möchte ich nicht anbieten, da dann die Passwörter
evtl. unverschlüsselt übers Netz gehen - ich mache einfach 'nen
redirect (und ich habe das in 'nen extra vhost mit eigener Subdomain
eingebaut):
ServerName svn.dom.ain
Redirect / https://svn.dom.ain/
Order allow,deny
Deny from all
Mit SSL dann das DAV_SVN ansprechen. Dabei kann man sich aussuchen, ob
man "jedes Repos extra" einbindet, oder ein Verzeichnis nimmt, in dem
mehrere Repositories liegen können - letzteres habe ich gemacht:
ServerName svn.dom.ain
Include sites-available/includes/ssl.conf
DAV svn
SVNParentPath /pfad/in/dem/die/repos/liegen
AuthType Basic
AuthName "SVN-Repos dom.ain"
AuthUserFile /da/wo/die/geheimnisse/liegen/svn.htpasswd
Require valid-user
3. "Benutzer" anlegen
---------------------
Die Benutzerverwaltung von Subversion benutzt per Default die
Apache-Authentifikation. So muss man neue Benutzer nur noch in die
htpasswd eintragen und sie sind in Subversion auch bekannt.
In Subversion kann man dann noch feingranulare Rechte vergeben, wer
was darf. Damit habe ich mich allerdings noch nicht beschäftigt, das
steht aber im SVN-Buch:
http://svnbook.red-bean.com/en/1.1/ch06s03.html#svn-ch-6-sect-3.2
unter "set access controls"
4. Benutzerrechte
-----------------
Wenn man zum Zugriff auf Repositories Benutzerrechte vergeben /
einschränken möchte, ist dies über das Apache-Kodul mod_authz_svn
problemlos möglich.
Um die Rechtevergabe zu nutzen, definiert man in der Location des
vhosts (da, wo auch das Subversion-Repository definiert wird)
AuthzSVNAccessFile /da/wo/es/liegt/accessfile
Darin stehen dann "ACLs" für den Zugriff auf Repositories:
[/]
hauptuser = rw
[repo1:/]
hauptuser = rw
user2 = rw
user3 = r
[repo2:/teil/eines/repos]
gastuser1 = rw
gastuser2 = r
Genaueres findet sich im Subversion-Handbuch unter
http://svnbook.red-bean.com/en/1.1/ch06s04.html#svn-ch-6-sect-4.4.2
5. Schuldiger
-------------
verbrochen wurde diese Kurzanleitung von Matthias
(geschrieben am 6.10.2005)
gnuher.de-kb@merz.inka.de