Trac

Betrifft OS:
FreeBSD

Trac ist ein System zur Unterstützung agiler Entwicklungsprojekte. Das System bietet eine Integration in Subversion, hat ein eigenes Ticketingsystem und einen Wiki. Trac kann das Subversion Repository darstellen und hat eine recht schöne Timeline Darstellung. Es ist ein einfaches, nur wenig adaptierbares System der Firma Edgewall (http://www.edgewall.com).

Installation

Installiere mod_python, um eine gute Performance zu erzielen

# cd /usr/ports/www/mod_python3
# make install clean

Stelle sicher, dass die mod_python Bibliothek existiert. Sie sollte unter /usr/local/libexec/apache2 liegen. Editiere /usr/local/etc/apache2/httpd.conf und addiere die Zeile

LoadModule python_module libexec/apache2/mod_python.so

Starte den Webserver neu

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

Bereite die Unterstützung von WebDAV für Subversion vor

# cd /usr/ports/devel/subversion-python
# make -DWITH_MOD_DAV_SVN build deinstall reinstall

Installation

# cd /usr/local/ports/www/trac
# make install clean

… das dauert…

Richte Subversion ein

Subversion wurde mit Trac installiert. Einrichten

# cd /var
# mkdir svnrep
# cd svnrep
# svnadmin create <Name des Repository>

Danach muss im conf/ Verzeichnis des Repositories die Konfiguration eingerichtet werden. Vergiss nicht die Benutzerdatei anzulegen und Benutzer zu definieren. Die Benutzer sollen auch die sein, die in Trac definiert werden mit denselben Passwörtern. Der anon-access sollte danach auf none gesetzt werden.

Richte den automatischen Start von Subversion ein (ab 1.3) Editiere dazu die Datei /etc/rc.conf

svnserve_enable="YES"
svnserve_flags="-d --Listen-host=0.0.0.0"
svnserve_data="/var/svnrep/<Name des Repository>"
svnserve_user="www"
svnserve_group="www"

Starte den Subversion Server

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

Initialisiere das Trac System

# trac-admin /usr/local/www/data-dist/<Name des Trac repository> initenv

Installiere Trac mit mod_python

Stelle folgendes in der /usr/local/etc/apache2/httpd.conf ein

<Location /mpinfo>
  SetHandler mod_python
  PythonHandler mod_python.testhandler
</Location>

Starte den Webserver neu: # /usr/local/etc/rc.d/apache2.sh restart

Rufe den Browser mit http://YourHost/mpinfo auf. Es sollte jetzt eine Python Informationsseite kommen. Wenn das geklappt hat entferne die obigen Einträge aus der httpd.conf. Ändere die httpd.conf Datei

#
# Richte die Trac Authentisierung ein
#
<Location "/login">  => Der Pfad muss relativ zu DocumentRoot sein
  AuthType Basic
  AuthName "Trac for hmhmhm"
  AuthUserFile /usr/local/etc/trac/xxx.htpasswd  => Da muss der absolute Pfad angegeben werden
  Require valid-user
</Location>
#
# Richte Trac fuer mod-python ein
#
<Location "/">      => Der Pfad muss relativ zu DocumentRoot sein
  SetHandler mod_python
  PythonHandler trac.web.modpython_frontend
  PythonOption TracEnv /usr/local/www/data-dist/xxx
  PythonOption TracUriRoot /     => Der Pfad muss relativ zu DocumentRoot sein
</Location>

Wenn es Probleme mit der Darstellung gibt, so sollte sichergestellt sein, dass in der Datei /usr/local/www/data-dist/xxx/conf/trac.ini folgende Einstellung da ist.

htdocs_location =

Richte Trac mit cgi ein (Alternativ zu mod_python)

Kopiere trac.cgi in das cgi Verzeichnis des Webservers

# cp /usr/local/share/trac/cgi-bin/trac.cgi /usr/local/www/cgi-bin/

Richte Trac in der Datei httpd.conf ein

Es wird angenommen das Trac im Verzeichnis /usr/local/share/trac/ installiert ist. Das Projekt unter /usr/local/www/data-dist/xxx installiert ist.

Editiere /usr/local/etc/apache2/httpd.conf

Alias /xxx/trac /usr/local/share/trac/htdocs

ScriptAlias /xxx /usr/local/www/data-dist/xxx

<Location "/xxx">
  SetEnv TRAC_ENV "/usr/local/www/data-dist/xxx"
</Location>

<Directory "/usr/local/share/trac/htdocs">
  AllowOverride None
  Order allow, deny
  Allow from all
</Directory>

Richte Trac in /usr/local/www/data-dist/xxx/cond/trac.ini ein Ändere den Wert des Parameters

htdocs_location = xxx/trac

Beachte das es derselbe Wert sein muss wie im Alias der httpd.conf Einstellung. Das hat mich viele Stunden gekostet.

Leite die Basis URL auf den Trac Server um

<Directory "/usr/local/www/data/">
  RewriteEngine on
  RewriteRule %{REQUEST_URI} ^/$ [NC,OR]
  RewriteRule %{REQUEST_URI} ^/index* [NC]
  RewriteRule "^(.*)" "http://%{HTTP_HOST}/xxx" [R,L]
</Directory>

Richte Subversion ein, sodass es mitgenutzt werden kann.

Ändere den Eigentümer des Repository so, dass es derselbe Benutzer ist, der auch von Apache für die Abarbeitung der cgi Skripte genutzt wird. Dafür ist chown} oder chgrp} geeignet.

Richte die Authentisierung für Trac ein

Erzeuge Benutzer

# cd /usr/local/etc
# mkdir trac
# cd trac
# htpasswd -c xxx.htpasswd <user>
# htpasswd xxx.htpasswd <user>  => für weitere Benutzer

Editiere die Datei /usr/local/etc/apache2/httpd.conf

<Location "/xxx/login">
  AuthType basic
  AuthName "xxx"
  AuthUserFile /usr/local/etc/trac/xxx.htpasswd
  Require valid-user
</Location>

Richte WebDAV für Subversion ein

Editiere die Datei /usr/local/etc/apache2/httpd.conf Kommentiere den LoadModule Befehl für dav_module aus. Kommentiere den LoadModule Befehl für dav_fs_module aus. Stelle sicher, dass folgende Module geladen werden

LoadModule dav_svn_module       libexec/apache2/mod_dav_svn.so
LoadModule authz_svn_module     libexec/apache2/mod_authz_svn.so

Stelle sicher, dass das Modul mod_mime geladen ist Addiere folgende Zeilen um WebDAV für Subversion einzurichten

<Location /davrep>
  DAV svn
  SVNPath /var/svnrep/<Name des Repository>
  SVNAutoversioning on
  ModMimeUsePathInfo on
</Location>

Starte den Apache Webserver neu (sollte vielleicht zwischendurch auch mal gemacht werden)

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