BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

SVN-Server mit Trac auf FreeBSD installieren

Um einen Subversion-Server, auf welchen man per WebDAV zugreift, und dazu ein Trac auf FreeBSD zu installieren, können das Trac und Subversion aus den Ports installiert werden:

# cd /usr/ports/devel/subversion
# make -DWITH_MOD_DAV_SVN install clean
# cd /usr/ports/www/trac
# make install clean

Nun kann ein Verzeichnis erstellt werden, in dem alle SVN-Repositories gespeichert werden sollen:

# mkdir -p /var/db/svn/repos

Danach kann ein Repository erstellt werden:

# svnadmin create /var/db/svn/repos/<Projektname>

Ist das Repository erstellt, kann eine gewünschte initiale Verzeichnisstruktur dem Repository hinzugefügt werden:

# svn import <Pfad zu initialer Verzeichnisstruktur> file:///var/db/svn/repos/<Projektname> -m "Initial Import"

Nun kann ein Verzeichnis erstellt werden, in dem die Zugriffsberechtigungen für den SVN-Server abgelegt werden:

# mkdir -p /var/db/svn/access

Anschliessend kann eine Passwortdatei mit dem SVN-Benutzer erstellt werden:

# htpasswd -c /var/db/svn/access/users <Benutzer1>

Weitere Benutzer können wie folgt hinzugefügt werden:

# htpasswd  /var/db/svn/access/users <Benutzer2>

Nun kann eine Datei angelegt werden, in der die Lese- und Schreibrechte geregelt werden. Folgende Datei gewährt allen Leserechte und Benutzer1 und Benutzer2 Lese- und Schreibrechte:

# vi /var/db/svn/access/control
[/]
* = r
<Benutzer1> = rw
<Benutzer2> = rw

Die Rechte auf die Benutzerdateien werden nun noch eingeschränkt:

# chmod 600 /var/db/svn/access/*
# chown -R www:www /var/db/svn

Damit über den Apache auf den SVN-Server zugegriffen werden kann, muss der Apache-Server in der rc.conf aktiviert werden:

# echo 'apache2_enable="YES"' >> /etc/rc.conf
# echo 'apache2ssl_enable="YES"' >> /etc/rc.conf

Damit auch über SSL auf den SVN-Server zugegriffen werden kann, muss ein Zertifikat für den Apache erstellt werden.

Nun können die SVN-Einstellungen in der httpd.conf gemacht werden:

# vi /usr/local/etc/apache2/httpd.conf
# SVN WebDAV Repository Setup
<Location /svn>
DAV svn
SVNParentPath /var/db/svn/repos
SVNIndexXSLT "http://<Domain>/svnindex.xsl"

# anonymous first
Satisfy Any
Require valid-user

# authenticating them valid ones
AuthType Basic
AuthName "Subversion Repositories"
AuthUserFile /var/db/svn/access/users
AuthzSVNAccessFile /var/db/svn/access/control
</Location>

<Directory "/usr/local/share/subversion/xslt/">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>

Alias /svnindex.xsl "/usr/local/share/subversion/xslt/svnindex.xsl"
Alias /svnindex.css "/usr/local/share/subversion/xslt/svnindex.css"

Nun kann ein Verzeichnis erstellt werden, in dem alle Trac-Instanzen gespeichert werden:

# mkdir -p /var/db/trac

Danach kann ein Trac initialisiert werden:

# trac-admin /var/db/trac/<Projektname> initenv

Dabei müssen verschiedene Fragen beantwortet werden:

Project Name [My Project]> <Projektname>
Database connection string [sqlite:db/trac.db]>[Enter]
Repository type [svn]>[Enter]
Path to repository [/path/to/repos]> /var/db/svn/repos/<Projektname>
Templates directory [/usr/local/share/trac/templates]>[Enter]

Danach kann auch das Trac in der httpd.conf konfiguriert werden:

# vi /usr/local/etc/apache2/httpd.conf
ScriptAlias /cgi-bin/ "/usr/local/share/trac/cgi-bin/"
<Directory "/usr/local/share/trac/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>

ScriptAlias /<Projektname> /usr/local/share/trac/cgi-bin/trac.cgi
<Location /<Projektname> >
SetEnv TRAC_ENV "/var/db/trac/<Projektname>"
</Location>

<Location "/<Projektname>/login">
AuthType Basic
AuthName "Guete Morge"
AuthUserFile /var/db/svn/access/users
Require user <Benutzer1> <Benutzer2>
</Location>

Die Rechte für das Trac müssen noch angepasst werden:

# chown -R www:www /var/db/trac

Zu guter Letzt muss der Apache gestartet werden:

# /usr/local/etc/rc.d/apache2.sh start

Der SVN-Server ist nun unter https://<Domain>/svn/<Projektname>/, das Trac unter https://<Domain>/<Projektname>/ erreichbar.

Eine ausführliche Anleitung zu SVN unter FreeBSD findet man unter: http://www.bsdguides.org/guides/freebsd/misc/subversion.php

Vielen Dank an Alain für seine Tipps zur Konfiguration.

Comments (6)  Permalink

Comments

foo @ 09.03.2008 21:46 UTC
Moin,

Zwischen
und

gehört noch ein

AuthzSVNAccessFile /var/db/svn/access/control

hin. Ansonsten kann _jeder_ Anonym einchecken.
Beat @ 09.03.2008 22:09 UTC
Hobbala, das ging wohl vergessen. Habs korrigiert. Danke für den Hinweis!
foo @ 09.03.2008 23:00 UTC
Ach und noch was. Man sollte noch sicher sein, dass die /var Partition groß genug ist bzw. dass genug Speicherplatz frei ist.
Ansonsten kann man das Repository auf unter /usr/svn/ anlegen o.ä.

Gruß
martin @ 15.08.2008 21:31 UTC
ich hatte gerade das problem, dass trac upgrade nicht mehr wollte mit der meinung 'unsupported version control system "svn"'.

hintergrund: ich hatte subversion und python geupdatet, wodurch wohl das python-svn-binding verloren ging.
ein gepflegtes 'sudo portinstall py-subversion' behob das problem.
ingo @ 24.08.2009 11:52 UTC
Funktioniert sehr gut - gutes Howto!

Was mache ich falsch? Habe unter ../var/db/svn/repos verschiedene Repository angelegt. User A soll Zugriff auf Rep1 bekommen User B auf Rep2.

Habe folgendes in die control Datei eingetragen:

[rep1:/rep1]
usera = rw

[rep2:/rep2]
userb = rw

Alles funktioniert wenn ich beide User für alles freischalte. Wie setze ich die Rechte richtig?

[/]
usera = rw
userb = rw


Danke
Ingo
Beat @ 07.09.2009 16:27 UTC

Hallo Ingo,

Ich habe hier folgende Konfiguration ohne Probleme im Einsatz:

[rep1:/]
usera = rw

[rep2:/]
userb = rw

Gruess Beat

No new comments allowed (anymore) on this post.