Trac

Aus schokokeks.org Wiki
Zur Navigation springen Zur Suche springen

Einführung

Trac ist ein in Python geschriebenes, ausgesprochen populäres Projektmanagement-Tool. Es kombiniert Bugtracker, ein minimalistisches Wiki und einen Sourcecode-Browser für verschiedene Versionsmanagement-Systeme und eignet sich dadurch sehr gut für Open Source Projekte jeder Größe.

Die Installation von Trac unterscheidet sich prinzipiell von der Installation üblicher PHP/MySQL Applikationen, weshalb sie hier genauer ausgeführt wird.

Technische Vorraussetzungen

Um Trac einsetzen zu können wird ein virtual host benötigt, auf dem FastCGI aktiviert ist. Das lässt sich über die Konfigurations-Maske erledigen. Gehen wir davon aus, dass trac.host.com so konfiguriert ist und Das htdocs-Verzeichnis in /home/<user>/websites/trac.host.com/htdocs liegt.

Trac selbst ist bereits auf dem Server installiert. Derzeitig liegt es in der Version 0.11 vor.

Wenn MySQL als RDBMS verwendet werden soll, muss eine MySQL-Datenbank verfügbar sein. Diese lässt sich ebenso über die Konfigurations-Maske anlegen.

Trac installieren

Trac-Umgebung aufsetzen

Trac wird mit einem Kommandozeilen-Werkzeug trac-admin ausgeliefert. Mit trac-admin lassen sich alle administrativen Aufgaben auch von der Kommandozeile erledigen.

Verzeichnis auswählen

Die Trac-Umgebung kann vollständig getrennt vom eigentlichen htdocs-Verzeichnis installiert werden. Das ist aus Sicherheitsgründen eine sehr gute Idee. Wir entscheiden uns hier für /home/<user>/websites/trac.host.com/trac.

RDBMS auswählen

Trac unterstützt prinzipiell PostgreSQL, MySQL und Sqlite, wobei die letzte Variante am besten getestet ist. Trotzdem habe ich mehrfach Trac in Kombination mit MySQL eingesetzt und dabei bisher keine Probleme festgestellt.

Trac-Umgebung initialisieren

Um Trac zu initialisieren, verwenden wir das Kommandozeilen-Werkzeug und führen trac-admin /home/<user>/websites/trac.host.com/trac initenv aus. initenv führt uns interaktiv durch die Installation.

Projektname festlegen
$ trac-admin /home/<user>/websites/trac.host.com/trac initenv
Creating a new Trac environment at /home/<user>/websites/trac.host.com/trac

Trac will first ask a few questions about your environment 
in order to initalize and prepare the project database.

 Please enter the name of your project.
 This name will be used in page titles and descriptions.

Project Name [My Project]> Mein Projektname

Der Projektname kann beliebig vergeben werden und kann später editiert werden. Geben Sie einen Projektname an und bestätigen diesen mit der Eingabetaste.

Datenbankverbindung angeben

Nach der Vergabe des Projektnames wird nach den Datenbank-Verbindungsinformationen gefragt. Als Standard wird sqlite vorgeschlagen, falls das verwendet werden soll, einfach die Eingabetaste betätigen.

 Please specify the connection string for the database to use.
 By default, a local SQLite database is created in the environment 
 directory. It is also possible to use an already existing 
 PostgreSQL database (check the Trac documentation for the exact 
 connection string syntax).

Database connection string [sqlite:db/trac.db]> 

Wenn MySQL verwendet werden soll, sehen die Verbindungsinformationen ähnlich aus wie diese:

mysql://<user>:<password>@localhost/<datenbank name>

Die Felder in spitzen Klammern sind natürlich durch die entsprechenden Werte zu ersetzen.

Wenn Trac die Datenbank-Verbindung akzeptiert und sich verbinden kann, wird das Trac-Schema angelegt.

VCS-Integration
Please specify the type of version control system,
 By default, it will be svn.

 If you don't want to use Trac with version control integration, 
 choose the default here and don't specify a repository directory. 
 in the next question.

Repository type [svn]> 

Wenn Sie Subversion verwenden wollen, bestätigen sie diese Voreinstellung einfach mit der Eingabetaste. Die VCS-Integration kann später auch noch angepasst werden.

Die nächste Frage bezieht sich auf die Position des Subversion-Repositories im Dateisystem. Trac kann nur mit Subversion integriert werden, wenn das Repository lokal verfügbar ist.

 Please specify the absolute path to the version control 
 repository, or leave it blank to use Trac without a repository.
 You can also set the repository location later.

Path to repository [/path/to/repos]> /home/<user>/subversion/svn.host.com/repositories/<project>

Das war's auch schon, nach der Bestätigung des Repository-Pfades sollten Sie eine Meldung ähnlich zu dieser erhalten:

Project environment for 'My Project' created.

You may now configure the environment by editing the file:

  /home/lars/websites/projects.usrportage.de/trac/portage-mod-jabber/conf/trac.ini

If you'd like to take this new project environment for a test drive,
try running the Trac standalone web server `tracd`:

  tracd --port 8000 /home/lars/websites/projects.usrportage.de/trac/portage-mod-jabber

Then point your browser to http://localhost:8000/portage-mod-jabber.
There you can also browse the documentation for your installed
version of Trac, including information on further setup (such as
deploying Trac to a real web server).

The latest documentation can also always be found on the project
website:

  http://trac.edgewall.org/

Congratulations!

Trac im Web verfügbar machen

Ihre Trac-Umgebung ist nun initialisiert, allerdings noch nicht im Web verfügbar. Wir wollen, dass Trac unter http://trac.host.com erreichbar wird. Deshalb machen wir unsere Trac-Installation in /home/<user>/websites/trac.host.com/htdocs verfügbar. Wir kopieren dazu /usr/share/webapps/trac/0.11/hostroot/cgi-bin/trac.fcgi nach /home/<user>/websites/trac.host.com/htdocs/index.fcgi.

cp /usr/share/webapps/trac/0.11/hostroot/cgi-bin/trac.fcgi /home/<user>/websites/trac.host.com/htdocs/index.fcgi
TRAC_ENV path

Nun muss dem FastCGI-Endpoint noch bekannt gegeben werden, welche Trac-Umgebung der ausliefern soll. Dazu müssen wir die Datei /home/<user>/websites/trac.host.com/htdocs/index.fcgi editieren. Diese sieht so aus:

try:
    from trac.web import fcgi_frontend
    fcgi_frontend.run()
except SystemExit:
    raise
except Exception, e:
    print 'Content-Type: text/plain\r\n\r\n',
    print 'Oops...'
    print
    print 'Trac detected an internal error:'
    print
    print e
    print
    import traceback
    import StringIO
    tb = StringIO.StringIO()
    traceback.print_exc(file=tb)
    print tb.getvalue()

Wir interessieren uns für den oberen Teil, vor dem import-Statement. Wir importieren das Python-Modul os, um die Environment-Variable TRAC_ENV setzen zu können. Der obere Teil muss also so aussehen:

try:
    import os
    os.environ['TRAC_ENV'] = '/home/<user>/websites/trac.host.com/trac/'
    from trac.web import fcgi_frontend
    fcgi_frontend.run()
...
.htaccess

Neben der Anpassung der index.fcgi benötigen wir noch eine .htaccess-Datei um das Verhalten des Webservers zu beeinflussen. Erstmal müssen wir dafür sorgen, dass CGIs ausgeführt werden:

Options +ExecCGI

Zum zweiten müssen wir die index.fcgi als DirectoryIndex festlegen:

DirectoryIndex index.fcgi

Der dritte Streich sorgt dafür, dass alle Anfragen auf das Script index.fcgi laufen:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !\.(png|css|fcgi|txt|jpe?g|gif|pdf|svg)$
RewriteRule ^(.*)$ index.fcgi/$1 [L,QSA]


Nach diesen letzten Anpassungung können Sie erstmals Trac unter http://trac.host.com/ aufrufen. Als nächster Schritt folgt nun die Anpassung der frisch installierten Trac-Instanz, speziell die Einrichtung des Logins.

Trac konfigurieren

Eigene Plugins verwenden

Plugin: "Inhaltsverzeichnis"

Login

Mail-Konfiguration

Ticket Workflow

Visuelle Anpassungen

VCS Integration

Subversion