Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

Was fehlt?

Es liegt in der Natur der Sache: Ein Wiki ist niemals fertig. Wir geben uns große Mühe, mit der Entwicklung Schritt zu halten; lassen Supportanfragen direkt in neue Artikel einfließen … aber auch wir sind nicht perfekt. Wenn du hier nicht fündig wirst: Nicht schmollen - Bescheid sagen! Unter hallo@uberspace.de steht dir unser Team gerne bereit. Hand drauf!

cool:trac

Softwareprojekte verwalten

Schon seit Jahren ist Trac eins der bekannten Schwergewichte in der Welt freier Software - und natürlich kannst du es auch auf deinem Uberspace einsetzen. Da die Installationsdokumentation sehr umfangreich ist und viele verschiedene Implementierungen abdeckt (Standalone-Server, CGI, FastCGI, mod_wsgi, mod_python, …), haben wir dir hier die entsprechenden Schritte zusammengestellt, um Trac innerhalb weniger Minuten in der Umgebung, die wir bei Uberspace.de bieten, installiert zu bekommen.

Trac-Installationen bestehen aus zwei Komponenten: Trac selbst, also der zugrundeliegenden Software, die außerhalb des DocumentRoots liegt, und einem oder auch mehreren Trac-Projekten, die mit Hilfe von Trac-eigenen Tools angelegt werden. Daher ist die Anleitung auch in zwei Abschnitte aufgeteilt: Den ersten musst du nur einmalig durchgehen; der zweite fällt dann einmal pro Projekt an.

Für beide Schritte musst du dich zunächst per SSH auf deinem Uberspace einloggen.

Trac installieren

Wie bereits in unserer Python-Doku beschrieben, kannst du dir mittels easy_install jederzeit simpel beliebige Python-Module installieren. Dafür muss nur einmalig die Pfad-Struktur bestehen. Falls du sie nicht schon eingerichtet hast, erledigst du das schnell mit

[petra@neon ~]$ mkdir -p ~/bin ~/lib/python2.4 ~/lib/python2.6

Trac benötigt eine etwas neuere Version von Genshi als die zentral vorinstallierte:

[petra@neon ~]$ easy_install --user Genshi
Searching for Genshi
...
Installed /home/petra/lib/python2.6/Genshi-0.6-py2.6.egg
Processing dependencies for Genshi

Dann kommt die eigentliche Trac-Installation - befindest du dich auf einem Python-2.6-System, dann einfach so:

[petra@neon ~]$ easy_install Trac
Searching for Trac
...
Installed /home/petra/lib/python2.6/Trac-0.12.2-py2.6.egg
Processing dependencies for Trac

Befindest du dich hingegen auf einem System, das noch Python 2.4 als Default einsetzt, so müsstest du die LTS-Version von Trac verwenden, da die aktuellsten Versionen nicht mehr mit Python 2.4 laufen (Danke an Daniel Sandmeier für den Hinweis):

[petra@neon ~]$ easy_install http://download.edgewall.org/trac/Trac-0.12.4.tar.gz

Das war's schon! Trac ist jetzt in ~/lib/python2.4 oder ~/lib/python2.6 (je nachdem ob auf dem Host, auf dem dein Uberspace liegt, defaultmäßig Python 2.4 oder Python 2.6 läuft) installiert und hat in deinem ~/bin-Verzeichnis den Befehl trac-admin installiert, den du - da ~/bin im $PATH liegt - auch direkt ausführen kannst.

Projekt einrichten

Mittels trac-admin kannst du nun dein Projekt einrichten. Es muss nicht innerhalb des DocumentRoots liegen und sollte es eigentlich auch nicht. Im Beispiel wollen wir das Projekt, das bei uns den klangvollen Namen frittenbude bekommen soll, direkt im Home-Verzeichnis anlegen. Und so geht's:

[petra@neon ~]$ trac-admin ~/frittenbude initenv
Creating a new Trac environment at /home/petra/frittenbude
...
Congratulations!

Im Verlauf wird erst der frei wählbare angezeigte Projektname abgefragt (z. B. „Meine Frittenbude“); anschließend wird nach der Datenbankverbindung gefragt. Standardmäßig benutzt Trac eine SQLite-Datenbank, die keiner weiteren Zugangsdaten bedarf; du kannst den Vorschlag einfach bestätigen.

Fast schon zu einfach? Stimmt, ein bisschen fehlt auch noch. Zum einen solltest du den Mailversand anpassen, damit /usr/sbin/sendmail zum Versand genutzt wird. Öffne dazu mit einem Texteditor die ~/frittenbude/conf/trac.ini und ändere die Einstellungen smtp_enabled und email_sender wie folgt ab:

smtp_enabled = true
email_sender = SendmailEmailSender
sendmail_path = /usr/sbin/sendmail

Das kannst Du auch ganz bequem machen indem Du einfach diese zwei Befehle in die Shell kopierst:

sed -i -e "s/^smtp_enabled.*/smtp_enabled = true/" ~/frittenbude/conf/trac.ini
sed -i -e "s/^email_sender.*/email_sender = SendmailEmailSender/" ~/frittenbude/conf/trac.ini
sed -i -e "s/^sendmail_path.*/sendmail_path = \/usr\/sbin\/sendmail/" ~/frittenbude/conf/trac.ini

Im Verzeichnis frittenbude liegt jetzt sozusagen „das Projekt“; was aber noch fehlt, ist das sogenannte Deployment, sprich: Die Anbindung an den Webserver. Hierzu hat trac-admin den Befehl deploy, dem man als Argument mit übergibt, wohin deployt werden soll. Auf geht's:

[petra@neon ~]$ trac-admin ~/frittenbude deploy ~/frittenbude/deploy
Copying resources from:
  trac.web.chrome.Chrome
    /home/petra/.python-eggs/Trac-0.12.2-py2.4.egg-tmp/trac/htdocs
    /home/petra/frittenbude/htdocs
Creating scripts.

Damit hat trac-admin unter anderem das von uns benötigte FastCGI-Script generiert, das wir nun nur noch ins fcgi-bin-Verzeichnis installieren müssen (der Befehl install setzt dabei auch gleich die richtigen Rechte, nämlich 0755). Dabei geben wir dem FastCGI-Script auch gleich den passenden Namen (die Endung .fcgi können wir weglassen, weil alles, was in fcgi-bin liegt, sowieso als FastCGI-Script ausgeführt wird):

[petra@neon ~]$ install ~/frittenbude/deploy/cgi-bin/trac.fcgi ~/fcgi-bin/frittenbude

Und weil es bei Trac schon häufiger vorgekommen ist, dass dieses FastCGI-Script mit DOS-Zeilenumbrüchen installiert wurde (was der Python-Interpreter übel nimmt), jagen wir in jedem Fall sicherheitshalber noch einmal dos2unix drüber:

[petra@neon ~]$ dos2unix ~/fcgi-bin/frittenbude

Fertig! Unter https://petra.neon.uberspace.de/fcgi-bin/frittenbude/ kannst du das Trac-Projekt nun aufrufen.

URL aufhübschen

@implizit empfiehlt, das generierte FastCGI-Script nicht in fcgi-bin abzulegen, sondern in einem eigenen Verzeichnis im DocumentRoot und dann mit einer .htaccess-Datei die Ausführung zu aktivieren und mit einer RewriteRule für eine ansprechendere URL zu sorgen. Das bietet nebenbei den Charme, dass hier dann z.B. auch ein einfacher Passwortschutz via .htaccess ergänzt werden kann (was hier aber kein Bestandteil des Beispiels ist). Schöne Idee, besten Dank - und so funktioniert's:

[petra@neon ~]$ mkdir -m 0755 ~/html/frittenbude
[petra@neon ~]$ install ~/frittenbude/deploy/cgi-bin/trac.fcgi ~/html/frittenbude/frittenbude.fcgi
[petra@neon ~]$ dos2unix ~/html/frittenbude/frittenbude.fcgi
[petra@neon ~]$ cat <<'__EOF__' > ~/html/frittenbude/.htaccess
Options +ExecCGI
AddHandler fcgid-script .fcgi
# oder auf Hosts mit mod_fastcgi statt mod_fcgid:
#AddHandler fastcgi-script .fcgi

RewriteEngine On
RewriteBase /frittenbude
RewriteRule ^$ frittenbude.fcgi  [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) frittenbude.fcgi/$1  [QSA,L]
__EOF__

Solltest du im vorigen Schritt bereits den Wrapper in fcgi-bin abgelegt haben, so kannst du ihn jetzt getrost entfernen:

[petra@neon ~]$ rm -f ~/fcgi-bin/frittenbude

Statische Inhalte

In diesem Setup werden statische Inhalte ebenfalls via fcgi von Trac selbst ausgeliefert, was nicht besonders performant ist. Du kannst die Inhalte auch optional direkt über den Apache ausliefern, indem du sie an die richtige Stelle im html-Verzeichnis schiebst:

[petra@neon ~]$ mv ~/frittenbude/deploy/htdocs ~/html/frittenbude/chrome

So greifen die RewriteCond-Zeilen aus der .htaccess und die Dateien werden direkt über den Apache ausgeliefert.

Nutzer anlegen

Als letztes muss noch ein wenig Aufwand betreiben werden, um Nutzeranmeldungen für Trac zu erlauben. Da wir Shared Hosting anbieten, fällt für uns die Standardmethode über Apache aus. Wir empfehlen stattdessen die Account Manager Erweiterung, die Anmeldung etwas dynamischer realisiert.

Dazu muss die Erweiterung erst einmal noch installiert werden (Achtung: die URL enthält eine Versionsangabe, schaut ggf. vorher nochmal nach, ob es nicht eine neuere Version gibt):

easy_install https://trac-hacks.org/svn/accountmanagerplugin/tags/acct_mgr-0.4.4

Nun folgt noch eine Einrichtung, die Du wieder in der trac.ini ergänzen musst:

cat <<__EOF__ >> ~/frittenbude/conf/trac.ini

[components]
trac.web.auth.loginmodule = disabled
acct_mgr.htfile.htdigeststore = enabled
acct_mgr.pwhash.htdigesthashmethod = enabled
acct_mgr.register.* = enabled
acct_mgr.admin.* = enabled
acct_mgr.api.* = enabled
acct_mgr.notification.* = enabled
acct_mgr.register.* = enabled
acct_mgr.web_ui.* = enabled

[account-manager]
password_store = HtDigestStore
htdigest_file = /home/$USER/frittenbude/trac.htdigest
htdigest_realm = TracRealm
hash_method = HtDigestHashMethod

__EOF__

Danach einfach nur kurz Trac neustarten, damit die neue Config und das Python-Modul auch geladen werden:

[petra@neon ~]$ killall frittenbude.fcgi

Dann kannst Du Dich über das Webinterface registrieren und anmelden. Damit Du aber auch die Administration über das Webinterface erledigen kannst, musst Du dem neu angelegten Nutzer noch die nötigen Privilegien einräumen:

[petra@neon ~]$ trac-admin ./frittenbude/ permission add petra TRAC_ADMIN

Das wars, nun also viel Spass mit Deinem Trac!

cool/trac.txt · Zuletzt geändert: 2016/03/19 14:41 von uber