Sonntag, 8. März 2009

Trac

"Use the best tools available for testing and for analyzing the problem, the design, and the implementation" - Bjarne Stroustroup

Das Projekt, in das sich im Moment all meine Energie stecke wird langsam aber sich groß. Ich benutzte bisher lediglich Subversion mit WebSVN um der Änderungen Herr zu bleiben - und ein paar ganz normale Text Dateien. Mir war Trac schon etwas früher zufälligerweise aufgefallen, ich konnte damit aber herzlich wenig anfangen da ich eigentlich Support für ein WebSVN Feature suchte, das Trac lediglich für sich selbst implementiert hatte.

Ich gab dem ganzen heute einen Versuch und installierte es auf meinem System. Gentoo ist ja nicht gerade dafür bekannt, leicht konfigurierbar zu sein. Trac ist mal wieder ein Paradebeispiel und hat mich etliche Stunden gekostet. Aber wenn auf einem Linux System mal etwas erst läuft, dann läuft es meistens auf ewig! Das Setup dauerte auch zusätzlich noch etwas länger, da ich versehentlich meine 'system locales' geschrottet hatte, und die Python Skripte von Trac regelmäßig deshalb abschmierten.

Ich dachte also ich 'emerge' es einfach schnell, passe ein paar Config-Dateien an und es sollte laufen. Pustekuchen!

Probleme:

Ich habe einen Apache Server (ohne vHosts) der "/var/www/localhost/htdocs" verfügbar macht. Da liegen alle meine Skripte und anderes nützliches Zeugs wie PHPMyAdmin, MRTG, WebSVN usw. Ich dachte also ich könnte einfach ein weiteres Verzeichnis namens Trac hinzufügen und es dann einfach benutzen! Nö! Erstmal liegt Trac in "/var/lib/trac". Und es ist auch komplett in Python geschrieben, und nicht in PHP. D.h., um es Apache fähig zu machen brauch man für diesen ein Python Modul. Ansonsten stellt Trac den sog. Trac Daemon aka tracd bereit, einen Webserver. Der lief anfangs nur via Kommandozeile aber nicht per Init-Skript; erst als ich den Kram aus $TRACD_OPTS in "/etc/conf.d/tracd" löschte, wollte er starten.

Trac kam also nicht mit meinem Apache klar - jedenfalls nicht so einfach wie ich mir das vorgestellt hatte. Ich versuchte es krampfhaft dennoch; später war mir allerdings der Aufwand mit den vHosts einfach zu hoch und ich ließ es bleiben. Das nächste war der Datenbank Kram. Trac unterstützt (in diesem Moment) SQlite, PostgreSQL und MySQL. Da ich MySQL bereits eingerichtet hatte lag die Entscheidung auf der Hand. Das war ein Fehler. Trac warnt aber vor seiner MySQL Unterstütztung und bezeichnet sie als "experimental". War mir egal.

Ich richtete also ein neues Trac Projekt ein: "trac-admin /var/lib/trac/blah initenv". Ich füllte einen Kommandozeilenfragebogen aus und es ging los. Das hatte, mal abgesehen von den vorher genannten Gründen, aufgrund der Tatsache dass man den "trac" Eintrag in der MySQL DB manuell erstellen musste, nicht problemlos geklappt. Ich tat es also mehrere Male und irgendwann war ich einigermaßen zufrieden mit dem Ergebnis.

Eine weitere Odyssee hatte ich mit der Rechteverwaltung. Es funktionierte zwar alles, aber ich konnte mich einfach nicht authentifizieren, um Inhalte verändern zu können. Auch hier bietet Trac zahlreiche Möglichkeiten. Nach dem Klicken auf Login kam jedes Mal: "Authentication information not available. Please refer to the installation documentation" was nicht soooo aufschlussreich war. Ich probierte also so ziemlich alles aus was in der Dokumentation erwähnt wurde. Und ldap Krams, was mich wieder dazu brachte an Apache herumzufummeln. Ich werde nicht lange um den heißen Brei herumreden... es hat mich bereits Stunden gekostet herauszufinden, was wohl die beste Konfiguration für mein System ist, also will ich jetzt keine Zeit mehr vergeuden :-). Tada:

Via Trac Daemon mit SQlite DB in einer lokalen Datei mit "basic authentification" (Standalone) mittels .htpasswd. Das klappt alles bei mir. Bloß bis ich das erstmal alles begriffen hatte! Ganz wichtig ist folgendes: "tracd --basic-auth=environmentname,/fullpath/environmentname/.htpasswd,/fullpath/environmentname /fullpath/environmentname" - Na? Alles klar? Also übersetzt heißt das folgendes (und so ungefähr sieht das auch in meiner "/etc/conf.d/tracd" aus):

PROJ="/var/lib/trac/blah"
TRACD_OPTS="--basic-auth=Blah,$PROJ/.htpasswd,$PROJ $PROJ"

Nicht vergessen ein .htpasswd File in $PROJ zu erstellen! Das geht wirklich ganz einfach mit dem gleichnamigen Befehl. Und dann sollte auch schon alles klappen. Das ist keine Installationsanleitung für einen Produktionsserver, aber wohl für ein kleines Heimprojekt und ein paar Beteiligte.

Bis auf die, für Einsteiger, relativ schwierige Installation finde ich das Projekt wirklich gelungen. Es macht Spaß damit zu arbeiten und vereint viele altbekannte Features auf einfache Weise, die einem einen nicht unwesentlichen Teil Arbeit abnehmen können. Ich werde bestimmt noch öfter über Trac reden in Zukunft...

Keine Kommentare:

Kommentar veröffentlichen