Trac
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.