<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.schokokeks.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=DelphiN</id>
	<title>schokokeks.org Wiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.schokokeks.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=DelphiN"/>
	<link rel="alternate" type="text/html" href="https://wiki.schokokeks.org/Spezial:Beitr%C3%A4ge/DelphiN"/>
	<updated>2026-04-30T06:00:59Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wiki.schokokeks.org/wiki/index.php?title=Trac&amp;diff=8877</id>
		<title>Trac</title>
		<link rel="alternate" type="text/html" href="https://wiki.schokokeks.org/wiki/index.php?title=Trac&amp;diff=8877"/>
		<updated>2009-11-06T15:25:58Z</updated>

		<summary type="html">&lt;p&gt;DelphiN: Änderung 8876 von DelphiN (Diskussion) wurde rückgängig gemacht.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung ==&lt;br /&gt;
[http://trac.edgewall.org/ 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.&lt;br /&gt;
&lt;br /&gt;
Die Installation von Trac unterscheidet sich prinzipiell von der Installation üblicher PHP/MySQL Applikationen, weshalb sie hier genauer ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
=== Technische Vorraussetzungen ===&lt;br /&gt;
Wir gehen im Folgenden davon aus, dass &#039;&#039;trac.host.com&#039;&#039; über das [https://config.schokokeks.org/ Konfigurations-Interface] konfiguriert ist und Das &#039;&#039;htdocs&#039;&#039;-Verzeichnis in /home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs liegt.&lt;br /&gt;
&lt;br /&gt;
Trac selbst ist bereits auf dem Server installiert. Derzeitig liegt es in der Version 0.11 vor.&lt;br /&gt;
&lt;br /&gt;
Wenn MySQL als RDBMS verwendet werden soll, muss eine MySQL-Datenbank verfügbar sein. Diese lässt sich ebenso über die Konfigurations-Maske anlegen.&lt;br /&gt;
&lt;br /&gt;
== Trac installieren ==&lt;br /&gt;
=== Trac-Umgebung aufsetzen ===&lt;br /&gt;
Trac wird mit einem Kommandozeilen-Werkzeug &#039;&#039;trac-admin&#039;&#039; ausgeliefert. Mit &#039;&#039;trac-admin&#039;&#039; lassen sich alle administrativen Aufgaben auch von der Kommandozeile erledigen.&lt;br /&gt;
&lt;br /&gt;
==== Verzeichnis auswählen ====&lt;br /&gt;
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 &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== RDBMS auswählen ====&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==== Trac-Umgebung initialisieren ====&lt;br /&gt;
Um Trac zu initialisieren, verwenden wir das Kommandozeilen-Werkzeug und führen &#039;&#039;trac-admin /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac initenv&#039;&#039; aus. &#039;&#039;initenv&#039;&#039; führt uns interaktiv durch die Installation.&lt;br /&gt;
&lt;br /&gt;
===== Projektname festlegen =====&lt;br /&gt;
&lt;br /&gt;
 $ trac-admin /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac initenv&lt;br /&gt;
 Creating a new Trac environment at /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac&lt;br /&gt;
 &lt;br /&gt;
 Trac will first ask a few questions about your environment &lt;br /&gt;
 in order to initalize and prepare the project database.&lt;br /&gt;
 &lt;br /&gt;
  Please enter the name of your project.&lt;br /&gt;
  This name will be used in page titles and descriptions.&lt;br /&gt;
 &lt;br /&gt;
 Project Name [My Project]&amp;gt; Mein Projektname&lt;br /&gt;
&lt;br /&gt;
Der Projektname kann beliebig vergeben werden und kann später editiert werden. Geben Sie einen Projektname an und bestätigen diesen mit der Eingabetaste.&lt;br /&gt;
&lt;br /&gt;
===== Datenbankverbindung angeben =====&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
  Please specify the connection string for the database to use.&lt;br /&gt;
  By default, a local SQLite database is created in the environment &lt;br /&gt;
  directory. It is also possible to use an already existing &lt;br /&gt;
  PostgreSQL database (check the Trac documentation for the exact &lt;br /&gt;
  connection string syntax).&lt;br /&gt;
 &lt;br /&gt;
 Database connection string [sqlite:db/trac.db]&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Wenn MySQL verwendet werden soll, sehen die Verbindungsinformationen ähnlich aus wie diese:&lt;br /&gt;
&lt;br /&gt;
 mysql://&amp;lt;user&amp;gt;:&amp;lt;password&amp;gt;@localhost/&amp;lt;datenbank name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Felder in spitzen Klammern sind natürlich durch die entsprechenden Werte zu ersetzen.&lt;br /&gt;
&lt;br /&gt;
Wenn Trac die Datenbank-Verbindung akzeptiert und sich verbinden kann, wird das Trac-Schema angelegt.&lt;br /&gt;
&lt;br /&gt;
=====  VCS-Integration =====&lt;br /&gt;
 Please specify the type of version control system,&lt;br /&gt;
  By default, it will be svn.&lt;br /&gt;
 &lt;br /&gt;
  If you don&#039;t want to use Trac with version control integration, &lt;br /&gt;
  choose the default here and don&#039;t specify a repository directory. &lt;br /&gt;
  in the next question.&lt;br /&gt;
 &lt;br /&gt;
 Repository type [svn]&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Wenn Sie Subversion verwenden wollen, bestätigen sie diese Voreinstellung einfach mit der Eingabetaste. Die VCS-Integration kann später auch noch angepasst werden.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
  Please specify the absolute path to the version control &lt;br /&gt;
  repository, or leave it blank to use Trac without a repository.&lt;br /&gt;
  You can also set the repository location later.&lt;br /&gt;
 &lt;br /&gt;
 Path to repository [/path/to/repos]&amp;gt; /home/&amp;lt;user&amp;gt;/subversion/svn.host.com/repositories/&amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das war&#039;s auch schon, nach der Bestätigung des Repository-Pfades sollten Sie eine Meldung ähnlich zu dieser erhalten:&lt;br /&gt;
&lt;br /&gt;
 Project environment for &#039;My Project&#039; created.&lt;br /&gt;
 &lt;br /&gt;
 You may now configure the environment by editing the file:&lt;br /&gt;
 &lt;br /&gt;
   /home/lars/websites/projects.usrportage.de/trac/portage-mod-jabber/conf/trac.ini&lt;br /&gt;
 &lt;br /&gt;
 If you&#039;d like to take this new project environment for a test drive,&lt;br /&gt;
 try running the Trac standalone web server `tracd`:&lt;br /&gt;
 &lt;br /&gt;
   tracd --port 8000 /home/lars/websites/projects.usrportage.de/trac/portage-mod-jabber&lt;br /&gt;
 &lt;br /&gt;
 Then point your browser to http://localhost:8000/portage-mod-jabber.&lt;br /&gt;
 There you can also browse the documentation for your installed&lt;br /&gt;
 version of Trac, including information on further setup (such as&lt;br /&gt;
 deploying Trac to a real web server).&lt;br /&gt;
 &lt;br /&gt;
 The latest documentation can also always be found on the project&lt;br /&gt;
 website:&lt;br /&gt;
 &lt;br /&gt;
   http://trac.edgewall.org/&lt;br /&gt;
 &lt;br /&gt;
 Congratulations!&lt;br /&gt;
&lt;br /&gt;
==== Trac im Web verfügbar machen ====&lt;br /&gt;
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 &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs&#039;&#039; verfügbar. Wir kopieren dazu &#039;&#039;/usr/share/webapps/trac/0.11/hostroot/cgi-bin/trac.fcgi&#039;&#039; nach &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs/index.fcgi&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 cp /usr/share/webapps/trac/0.11/hostroot/cgi-bin/trac.fcgi /home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs/index.fcgi&lt;br /&gt;
&lt;br /&gt;
===== TRAC_ENV path =====&lt;br /&gt;
Nun muss dem FastCGI-Endpoint noch bekannt gegeben werden, welche Trac-Umgebung der ausliefern soll. Dazu müssen wir die Datei &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/htdocs/index.fcgi&#039;&#039; editieren. &lt;br /&gt;
&lt;br /&gt;
 $ nano /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/htdocs/index.fcgi&lt;br /&gt;
&lt;br /&gt;
Diese sieht so aus:&lt;br /&gt;
&lt;br /&gt;
 try:&lt;br /&gt;
     from trac.web import fcgi_frontend&lt;br /&gt;
     fcgi_frontend.run()&lt;br /&gt;
 except SystemExit:&lt;br /&gt;
     raise&lt;br /&gt;
 except Exception, e:&lt;br /&gt;
     print &#039;Content-Type: text/plain\r\n\r\n&#039;,&lt;br /&gt;
     print &#039;Oops...&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print &#039;Trac detected an internal error:&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print e&lt;br /&gt;
     print&lt;br /&gt;
     import traceback&lt;br /&gt;
     import StringIO&lt;br /&gt;
     tb = StringIO.StringIO()&lt;br /&gt;
     traceback.print_exc(file=tb)&lt;br /&gt;
     print tb.getvalue()&lt;br /&gt;
&lt;br /&gt;
Wir interessieren uns für den oberen Teil, vor dem import-Statement. Wir importieren das Python-Modul &#039;&#039;os&#039;&#039;, um die Environment-Variable &#039;&#039;TRAC_ENV&#039;&#039; setzen zu können. Der obere Teil muss also so aussehen:&lt;br /&gt;
&lt;br /&gt;
 try:&lt;br /&gt;
     import os&lt;br /&gt;
     os.environ[&#039;TRAC_ENV&#039;] = &#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac/&#039;&lt;br /&gt;
     from trac.web import fcgi_frontend&lt;br /&gt;
     fcgi_frontend.run()&lt;br /&gt;
 except SystemExit:&lt;br /&gt;
     raise&lt;br /&gt;
 except Exception, e:&lt;br /&gt;
     print &#039;Content-Type: text/plain\r\n\r\n&#039;,&lt;br /&gt;
     print &#039;Oops...&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print &#039;Trac detected an internal error:&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print e&lt;br /&gt;
     print&lt;br /&gt;
     import traceback&lt;br /&gt;
     import StringIO&lt;br /&gt;
     tb = StringIO.StringIO()&lt;br /&gt;
     traceback.print_exc(file=tb)&lt;br /&gt;
     print tb.getvalue()&lt;br /&gt;
&lt;br /&gt;
===== .htaccess =====&lt;br /&gt;
Neben der Anpassung der &#039;&#039;index.fcgi&#039;&#039; benötigen wir noch eine &#039;&#039;.htaccess&#039;&#039;-Datei um das Verhalten des Webservers zu beeinflussen. &lt;br /&gt;
&lt;br /&gt;
 $ nano /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
Erstmal müssen wir dafür sorgen, dass CGIs ausgeführt werden. Außerdem sorgt dafür, dass alle Anfragen auf das Script &#039;&#039;index.fcgi&#039;&#039; laufen:&lt;br /&gt;
&lt;br /&gt;
 Options +ExecCGI&lt;br /&gt;
 &amp;lt;br /&amp;gt;&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule ^$ %{REQUEST_URI}index.fcgi [R=301]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} !\.(png|css|fcgi|txt|jpe?g|gif|pdf|svg)$&lt;br /&gt;
 RewriteRule ^(.*)$ index.fcgi/$1 [L,QSA]&lt;br /&gt;
&lt;br /&gt;
Nach diesen letzten Anpassungung können Sie erstmals Trac unter http://trac.host.com/ aufrufen. Als nächster Schritt folgt nun die [[Trac#Trac_konfigurieren|Anpassung]] der frisch installierten Trac-Instanz, speziell die Einrichtung des Logins.&lt;br /&gt;
&lt;br /&gt;
== Trac konfigurieren ==&lt;br /&gt;
=== Login einrichten ===&lt;br /&gt;
&lt;br /&gt;
Der letzte fehlende Punkt um Trac nutzen zu können, ist der fehlende Login. Trac authentifiziert normalerweise über HTTP Authentication. Allerdings wäre dafür eine spezielle Apache-Konfiguration notwendig, was wir aber vermeiden möchten. Deshalb verwenden wir das [http://trac-hacks.org/wiki/AccountManagerPlugin AccountManager-plugin].&lt;br /&gt;
&lt;br /&gt;
==== Exkurs: Eigene Plugins installieren und verwenden ====&lt;br /&gt;
Um eigene Plugins installieren zu können, müssen wir die Direktive &#039;&#039;plugins_dir&#039;&#039; in der Sektion &#039;&#039;inherit&#039;&#039; in der &#039;&#039;&#039;conf/trac.ini&#039;&#039;&#039; anpassen:&lt;br /&gt;
&lt;br /&gt;
 $ nano /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/conf/trac.ini&lt;br /&gt;
&lt;br /&gt;
Nehmen wir an, dass wir Plugins nach &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugins&#039;&#039; installieren wollen.&lt;br /&gt;
&lt;br /&gt;
 [inherit]&lt;br /&gt;
 plugins_dir = /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugins&lt;br /&gt;
&lt;br /&gt;
Trac-Plugins werden mithilfe der Python [http://peak.telecommunity.com/DevCenter/setuptools Setuptools] installiert. Damit das funktioniert, muss noch die Umgebungsvariable PYTHONPATH angepasst werden. &lt;br /&gt;
&lt;br /&gt;
 nano /home/&amp;lt;user&amp;gt;/.bashrc&lt;br /&gt;
&lt;br /&gt;
Hier muss am Ende folgendes eingefügt werden:&lt;br /&gt;
&lt;br /&gt;
 PYTHONPATH=${PYTHONPATH}:/home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugins&lt;br /&gt;
&lt;br /&gt;
Danach muss man sich aus und neu einloggen!&lt;br /&gt;
&lt;br /&gt;
Danach können Plugins mit dem folgendem Kommando installiert werden:&lt;br /&gt;
&lt;br /&gt;
 easy_install --install-dir /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugins &amp;lt;plugin&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wobei &amp;lt;plugin&amp;gt; die URL des Plugins sein muss.&lt;br /&gt;
&lt;br /&gt;
==== AccountManager-Plugin installieren ====&lt;br /&gt;
Mit folgendem Kommando wird das AccountManager-Plugin installiert.&lt;br /&gt;
&lt;br /&gt;
 easy_install --install-dir /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugins/ http://trac-hacks.org/svn/accountmanagerplugin/trunk&lt;br /&gt;
&lt;br /&gt;
==== AccountManager-Plugin konfigurieren ====&lt;br /&gt;
Um dass AccountManager-Plugin zu verwenden, muss es noch konfiguriert werden. &lt;br /&gt;
&lt;br /&gt;
Als erstens müssen wir dem benutzer ein Passwort zuweisen. das machen wir damit indem wir eine Passwd-Date anlegen:&lt;br /&gt;
&lt;br /&gt;
  /usr/sbin/htpasswd2 -c /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/users &amp;lt;user&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jetzt öffnen wir die Trac-Konfigurationsdatei:&lt;br /&gt;
&lt;br /&gt;
  nano /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/conf/trac.ini&lt;br /&gt;
&lt;br /&gt;
Danach muss folgendes muss daher an die Trac-Konfigurationsdatei angefügt werden:&lt;br /&gt;
&lt;br /&gt;
 [components]&lt;br /&gt;
&lt;br /&gt;
Default-Login-Komponente deaktivieren&lt;br /&gt;
&lt;br /&gt;
 trac.web.auth.loginmodule = disabled&lt;br /&gt;
&lt;br /&gt;
AccountManager Login-Komponente aktivieren&lt;br /&gt;
&lt;br /&gt;
 acct_mgr.web_ui.loginmodule = enabled&lt;br /&gt;
&lt;br /&gt;
Passwörter werden im htpasswd-Format abgelegt&lt;br /&gt;
&lt;br /&gt;
 acct_mgr.htfile.htpasswdstore = enabled&lt;br /&gt;
&lt;br /&gt;
Administrations-Seite aktivieren&lt;br /&gt;
&lt;br /&gt;
 acct_mgr.admin.accountmanageradminpage = enabled&lt;br /&gt;
&lt;br /&gt;
 [account-manager]&lt;br /&gt;
&lt;br /&gt;
Passwörter liegen im htpasswd-Format vor&lt;br /&gt;
&lt;br /&gt;
 password_store = HtPasswdStore&lt;br /&gt;
&lt;br /&gt;
Pfad zur htpasswd-Datei&lt;br /&gt;
&lt;br /&gt;
 password_file = /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/users&lt;br /&gt;
&lt;br /&gt;
Danach sieht die Konfiguration folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
 [components]&lt;br /&gt;
 trac.web.auth.loginmodule = disabled&lt;br /&gt;
 acct_mgr.web_ui.loginmodule = enabled&lt;br /&gt;
 acct_mgr.htfile.htpasswdstore = enabled&lt;br /&gt;
 acct_mgr.admin.accountmanageradminpage = enabled&lt;br /&gt;
 &lt;br /&gt;
 [account-manager]&lt;br /&gt;
 password_store = HtPasswdStore&lt;br /&gt;
 password_file = /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/users&lt;br /&gt;
&lt;br /&gt;
Nun kann man sich mit einem Benutzer anmelden, der in &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/users&#039;&#039; definiert ist, anmelden.&lt;br /&gt;
&lt;br /&gt;
Um einen neuen benutzer anzulagen verwendet man:&lt;br /&gt;
&lt;br /&gt;
 /usr/sbin/htpasswd2 /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/users &amp;lt;new user&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Benutzer zum Administrator machen ====&lt;br /&gt;
Damit ein Benutzer zum Administrator wird, müssen er die Rolle &#039;&#039;TRAC_ADMIN&#039;&#039; haben. Dazu verwenden wir wieder das &#039;&#039;trac-admin&#039;&#039; Kommandozeilen-Werkzeug:&lt;br /&gt;
&lt;br /&gt;
 trac-admin /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac permission add &amp;lt;username&amp;gt; TRAC_ADMIN&lt;br /&gt;
&lt;br /&gt;
=== Mail-Konfiguration ===&lt;br /&gt;
&lt;br /&gt;
Trac versendet Emails über neue und geänderte Tickets. Damit das funktioniert, müssen in der &#039;&#039;notification&#039;&#039;-Sektion einige Einstellungen gemacht werden:&lt;br /&gt;
&lt;br /&gt;
 [notification]&lt;br /&gt;
 smtp_port = 25&lt;br /&gt;
 smtp_server = localhost&lt;br /&gt;
 smtp_from = no-reply@trac.host.com&lt;br /&gt;
 smtp_always_bcc = owner@project.com&lt;br /&gt;
 smtp_enabled = true&lt;br /&gt;
 smtp_replyto = email@trac.host.com&lt;br /&gt;
&lt;br /&gt;
Die meisten der Optionen sind selbsterklärend, &#039;&#039;smtp_always_bcc&#039;&#039; sendet standardmäßig eine Benachrichtigung über jede Ticket-Änderung an eine Standard-Adresse. Dies ist z.B. hilfreich, wenn der Projektbesitzer alles mitbekommen möchte und sich der Ticket-Traffic in Grenzen hält.&lt;br /&gt;
&lt;br /&gt;
=== Ticket Workflow ===&lt;br /&gt;
=== Visuelle Anpassungen ===&lt;br /&gt;
=== VCS Integration ===&lt;br /&gt;
==== Subversion ====&lt;br /&gt;
siehe [[Subversion]]&lt;/div&gt;</summary>
		<author><name>DelphiN</name></author>
	</entry>
	<entry>
		<id>https://wiki.schokokeks.org/wiki/index.php?title=Trac&amp;diff=8876</id>
		<title>Trac</title>
		<link rel="alternate" type="text/html" href="https://wiki.schokokeks.org/wiki/index.php?title=Trac&amp;diff=8876"/>
		<updated>2009-11-06T15:24:51Z</updated>

		<summary type="html">&lt;p&gt;DelphiN: /* AccountManager-Plugin installieren */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung ==&lt;br /&gt;
[http://trac.edgewall.org/ 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.&lt;br /&gt;
&lt;br /&gt;
Die Installation von Trac unterscheidet sich prinzipiell von der Installation üblicher PHP/MySQL Applikationen, weshalb sie hier genauer ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
=== Technische Vorraussetzungen ===&lt;br /&gt;
Wir gehen im Folgenden davon aus, dass &#039;&#039;trac.host.com&#039;&#039; über das [https://config.schokokeks.org/ Konfigurations-Interface] konfiguriert ist und Das &#039;&#039;htdocs&#039;&#039;-Verzeichnis in /home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs liegt.&lt;br /&gt;
&lt;br /&gt;
Trac selbst ist bereits auf dem Server installiert. Derzeitig liegt es in der Version 0.11 vor.&lt;br /&gt;
&lt;br /&gt;
Wenn MySQL als RDBMS verwendet werden soll, muss eine MySQL-Datenbank verfügbar sein. Diese lässt sich ebenso über die Konfigurations-Maske anlegen.&lt;br /&gt;
&lt;br /&gt;
== Trac installieren ==&lt;br /&gt;
=== Trac-Umgebung aufsetzen ===&lt;br /&gt;
Trac wird mit einem Kommandozeilen-Werkzeug &#039;&#039;trac-admin&#039;&#039; ausgeliefert. Mit &#039;&#039;trac-admin&#039;&#039; lassen sich alle administrativen Aufgaben auch von der Kommandozeile erledigen.&lt;br /&gt;
&lt;br /&gt;
==== Verzeichnis auswählen ====&lt;br /&gt;
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 &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== RDBMS auswählen ====&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==== Trac-Umgebung initialisieren ====&lt;br /&gt;
Um Trac zu initialisieren, verwenden wir das Kommandozeilen-Werkzeug und führen &#039;&#039;trac-admin /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac initenv&#039;&#039; aus. &#039;&#039;initenv&#039;&#039; führt uns interaktiv durch die Installation.&lt;br /&gt;
&lt;br /&gt;
===== Projektname festlegen =====&lt;br /&gt;
&lt;br /&gt;
 $ trac-admin /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac initenv&lt;br /&gt;
 Creating a new Trac environment at /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac&lt;br /&gt;
 &lt;br /&gt;
 Trac will first ask a few questions about your environment &lt;br /&gt;
 in order to initalize and prepare the project database.&lt;br /&gt;
 &lt;br /&gt;
  Please enter the name of your project.&lt;br /&gt;
  This name will be used in page titles and descriptions.&lt;br /&gt;
 &lt;br /&gt;
 Project Name [My Project]&amp;gt; Mein Projektname&lt;br /&gt;
&lt;br /&gt;
Der Projektname kann beliebig vergeben werden und kann später editiert werden. Geben Sie einen Projektname an und bestätigen diesen mit der Eingabetaste.&lt;br /&gt;
&lt;br /&gt;
===== Datenbankverbindung angeben =====&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
  Please specify the connection string for the database to use.&lt;br /&gt;
  By default, a local SQLite database is created in the environment &lt;br /&gt;
  directory. It is also possible to use an already existing &lt;br /&gt;
  PostgreSQL database (check the Trac documentation for the exact &lt;br /&gt;
  connection string syntax).&lt;br /&gt;
 &lt;br /&gt;
 Database connection string [sqlite:db/trac.db]&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Wenn MySQL verwendet werden soll, sehen die Verbindungsinformationen ähnlich aus wie diese:&lt;br /&gt;
&lt;br /&gt;
 mysql://&amp;lt;user&amp;gt;:&amp;lt;password&amp;gt;@localhost/&amp;lt;datenbank name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Felder in spitzen Klammern sind natürlich durch die entsprechenden Werte zu ersetzen.&lt;br /&gt;
&lt;br /&gt;
Wenn Trac die Datenbank-Verbindung akzeptiert und sich verbinden kann, wird das Trac-Schema angelegt.&lt;br /&gt;
&lt;br /&gt;
=====  VCS-Integration =====&lt;br /&gt;
 Please specify the type of version control system,&lt;br /&gt;
  By default, it will be svn.&lt;br /&gt;
 &lt;br /&gt;
  If you don&#039;t want to use Trac with version control integration, &lt;br /&gt;
  choose the default here and don&#039;t specify a repository directory. &lt;br /&gt;
  in the next question.&lt;br /&gt;
 &lt;br /&gt;
 Repository type [svn]&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Wenn Sie Subversion verwenden wollen, bestätigen sie diese Voreinstellung einfach mit der Eingabetaste. Die VCS-Integration kann später auch noch angepasst werden.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
  Please specify the absolute path to the version control &lt;br /&gt;
  repository, or leave it blank to use Trac without a repository.&lt;br /&gt;
  You can also set the repository location later.&lt;br /&gt;
 &lt;br /&gt;
 Path to repository [/path/to/repos]&amp;gt; /home/&amp;lt;user&amp;gt;/subversion/svn.host.com/repositories/&amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das war&#039;s auch schon, nach der Bestätigung des Repository-Pfades sollten Sie eine Meldung ähnlich zu dieser erhalten:&lt;br /&gt;
&lt;br /&gt;
 Project environment for &#039;My Project&#039; created.&lt;br /&gt;
 &lt;br /&gt;
 You may now configure the environment by editing the file:&lt;br /&gt;
 &lt;br /&gt;
   /home/lars/websites/projects.usrportage.de/trac/portage-mod-jabber/conf/trac.ini&lt;br /&gt;
 &lt;br /&gt;
 If you&#039;d like to take this new project environment for a test drive,&lt;br /&gt;
 try running the Trac standalone web server `tracd`:&lt;br /&gt;
 &lt;br /&gt;
   tracd --port 8000 /home/lars/websites/projects.usrportage.de/trac/portage-mod-jabber&lt;br /&gt;
 &lt;br /&gt;
 Then point your browser to http://localhost:8000/portage-mod-jabber.&lt;br /&gt;
 There you can also browse the documentation for your installed&lt;br /&gt;
 version of Trac, including information on further setup (such as&lt;br /&gt;
 deploying Trac to a real web server).&lt;br /&gt;
 &lt;br /&gt;
 The latest documentation can also always be found on the project&lt;br /&gt;
 website:&lt;br /&gt;
 &lt;br /&gt;
   http://trac.edgewall.org/&lt;br /&gt;
 &lt;br /&gt;
 Congratulations!&lt;br /&gt;
&lt;br /&gt;
==== Trac im Web verfügbar machen ====&lt;br /&gt;
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 &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs&#039;&#039; verfügbar. Wir kopieren dazu &#039;&#039;/usr/share/webapps/trac/0.11/hostroot/cgi-bin/trac.fcgi&#039;&#039; nach &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs/index.fcgi&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 cp /usr/share/webapps/trac/0.11/hostroot/cgi-bin/trac.fcgi /home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs/index.fcgi&lt;br /&gt;
&lt;br /&gt;
===== TRAC_ENV path =====&lt;br /&gt;
Nun muss dem FastCGI-Endpoint noch bekannt gegeben werden, welche Trac-Umgebung der ausliefern soll. Dazu müssen wir die Datei &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/htdocs/index.fcgi&#039;&#039; editieren. &lt;br /&gt;
&lt;br /&gt;
 $ nano /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/htdocs/index.fcgi&lt;br /&gt;
&lt;br /&gt;
Diese sieht so aus:&lt;br /&gt;
&lt;br /&gt;
 try:&lt;br /&gt;
     from trac.web import fcgi_frontend&lt;br /&gt;
     fcgi_frontend.run()&lt;br /&gt;
 except SystemExit:&lt;br /&gt;
     raise&lt;br /&gt;
 except Exception, e:&lt;br /&gt;
     print &#039;Content-Type: text/plain\r\n\r\n&#039;,&lt;br /&gt;
     print &#039;Oops...&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print &#039;Trac detected an internal error:&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print e&lt;br /&gt;
     print&lt;br /&gt;
     import traceback&lt;br /&gt;
     import StringIO&lt;br /&gt;
     tb = StringIO.StringIO()&lt;br /&gt;
     traceback.print_exc(file=tb)&lt;br /&gt;
     print tb.getvalue()&lt;br /&gt;
&lt;br /&gt;
Wir interessieren uns für den oberen Teil, vor dem import-Statement. Wir importieren das Python-Modul &#039;&#039;os&#039;&#039;, um die Environment-Variable &#039;&#039;TRAC_ENV&#039;&#039; setzen zu können. Der obere Teil muss also so aussehen:&lt;br /&gt;
&lt;br /&gt;
 try:&lt;br /&gt;
     import os&lt;br /&gt;
     os.environ[&#039;TRAC_ENV&#039;] = &#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac/&#039;&lt;br /&gt;
     from trac.web import fcgi_frontend&lt;br /&gt;
     fcgi_frontend.run()&lt;br /&gt;
 except SystemExit:&lt;br /&gt;
     raise&lt;br /&gt;
 except Exception, e:&lt;br /&gt;
     print &#039;Content-Type: text/plain\r\n\r\n&#039;,&lt;br /&gt;
     print &#039;Oops...&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print &#039;Trac detected an internal error:&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print e&lt;br /&gt;
     print&lt;br /&gt;
     import traceback&lt;br /&gt;
     import StringIO&lt;br /&gt;
     tb = StringIO.StringIO()&lt;br /&gt;
     traceback.print_exc(file=tb)&lt;br /&gt;
     print tb.getvalue()&lt;br /&gt;
&lt;br /&gt;
===== .htaccess =====&lt;br /&gt;
Neben der Anpassung der &#039;&#039;index.fcgi&#039;&#039; benötigen wir noch eine &#039;&#039;.htaccess&#039;&#039;-Datei um das Verhalten des Webservers zu beeinflussen. &lt;br /&gt;
&lt;br /&gt;
 $ nano /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
Erstmal müssen wir dafür sorgen, dass CGIs ausgeführt werden. Außerdem sorgt dafür, dass alle Anfragen auf das Script &#039;&#039;index.fcgi&#039;&#039; laufen:&lt;br /&gt;
&lt;br /&gt;
 Options +ExecCGI&lt;br /&gt;
 &amp;lt;br /&amp;gt;&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule ^$ %{REQUEST_URI}index.fcgi [R=301]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} !\.(png|css|fcgi|txt|jpe?g|gif|pdf|svg)$&lt;br /&gt;
 RewriteRule ^(.*)$ index.fcgi/$1 [L,QSA]&lt;br /&gt;
&lt;br /&gt;
Nach diesen letzten Anpassungung können Sie erstmals Trac unter http://trac.host.com/ aufrufen. Als nächster Schritt folgt nun die [[Trac#Trac_konfigurieren|Anpassung]] der frisch installierten Trac-Instanz, speziell die Einrichtung des Logins.&lt;br /&gt;
&lt;br /&gt;
== Trac konfigurieren ==&lt;br /&gt;
=== Login einrichten ===&lt;br /&gt;
&lt;br /&gt;
Der letzte fehlende Punkt um Trac nutzen zu können, ist der fehlende Login. Trac authentifiziert normalerweise über HTTP Authentication. Allerdings wäre dafür eine spezielle Apache-Konfiguration notwendig, was wir aber vermeiden möchten. Deshalb verwenden wir das [http://trac-hacks.org/wiki/AccountManagerPlugin AccountManager-plugin].&lt;br /&gt;
&lt;br /&gt;
==== Exkurs: Eigene Plugins installieren und verwenden ====&lt;br /&gt;
Um eigene Plugins installieren zu können, müssen wir die Direktive &#039;&#039;plugins_dir&#039;&#039; in der Sektion &#039;&#039;inherit&#039;&#039; in der &#039;&#039;&#039;conf/trac.ini&#039;&#039;&#039; anpassen:&lt;br /&gt;
&lt;br /&gt;
 $ nano /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/conf/trac.ini&lt;br /&gt;
&lt;br /&gt;
Nehmen wir an, dass wir Plugins nach &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugins&#039;&#039; installieren wollen.&lt;br /&gt;
&lt;br /&gt;
 [inherit]&lt;br /&gt;
 plugins_dir = /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugins&lt;br /&gt;
&lt;br /&gt;
Trac-Plugins werden mithilfe der Python [http://peak.telecommunity.com/DevCenter/setuptools Setuptools] installiert. Damit das funktioniert, muss noch die Umgebungsvariable PYTHONPATH angepasst werden. &lt;br /&gt;
&lt;br /&gt;
 nano /home/&amp;lt;user&amp;gt;/.bashrc&lt;br /&gt;
&lt;br /&gt;
Hier muss am Ende folgendes eingefügt werden:&lt;br /&gt;
&lt;br /&gt;
 PYTHONPATH=${PYTHONPATH}:/home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugins&lt;br /&gt;
&lt;br /&gt;
Danach muss man sich aus und neu einloggen!&lt;br /&gt;
&lt;br /&gt;
Danach können Plugins mit dem folgendem Kommando installiert werden:&lt;br /&gt;
&lt;br /&gt;
 easy_install --install-dir /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugins &amp;lt;plugin&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wobei &amp;lt;plugin&amp;gt; die URL des Plugins sein muss.&lt;br /&gt;
&lt;br /&gt;
==== AccountManager-Plugin installieren ====&lt;br /&gt;
Mit folgendem Kommando wird das AccountManager-Plugin installiert.&lt;br /&gt;
&lt;br /&gt;
 easy_install --install-dir /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugins/ /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugins/accountmanagerplugin&lt;br /&gt;
&lt;br /&gt;
==== AccountManager-Plugin konfigurieren ====&lt;br /&gt;
Um dass AccountManager-Plugin zu verwenden, muss es noch konfiguriert werden. &lt;br /&gt;
&lt;br /&gt;
Als erstens müssen wir dem benutzer ein Passwort zuweisen. das machen wir damit indem wir eine Passwd-Date anlegen:&lt;br /&gt;
&lt;br /&gt;
  /usr/sbin/htpasswd2 -c /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/users &amp;lt;user&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jetzt öffnen wir die Trac-Konfigurationsdatei:&lt;br /&gt;
&lt;br /&gt;
  nano /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/conf/trac.ini&lt;br /&gt;
&lt;br /&gt;
Danach muss folgendes muss daher an die Trac-Konfigurationsdatei angefügt werden:&lt;br /&gt;
&lt;br /&gt;
 [components]&lt;br /&gt;
&lt;br /&gt;
Default-Login-Komponente deaktivieren&lt;br /&gt;
&lt;br /&gt;
 trac.web.auth.loginmodule = disabled&lt;br /&gt;
&lt;br /&gt;
AccountManager Login-Komponente aktivieren&lt;br /&gt;
&lt;br /&gt;
 acct_mgr.web_ui.loginmodule = enabled&lt;br /&gt;
&lt;br /&gt;
Passwörter werden im htpasswd-Format abgelegt&lt;br /&gt;
&lt;br /&gt;
 acct_mgr.htfile.htpasswdstore = enabled&lt;br /&gt;
&lt;br /&gt;
Administrations-Seite aktivieren&lt;br /&gt;
&lt;br /&gt;
 acct_mgr.admin.accountmanageradminpage = enabled&lt;br /&gt;
&lt;br /&gt;
 [account-manager]&lt;br /&gt;
&lt;br /&gt;
Passwörter liegen im htpasswd-Format vor&lt;br /&gt;
&lt;br /&gt;
 password_store = HtPasswdStore&lt;br /&gt;
&lt;br /&gt;
Pfad zur htpasswd-Datei&lt;br /&gt;
&lt;br /&gt;
 password_file = /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/users&lt;br /&gt;
&lt;br /&gt;
Danach sieht die Konfiguration folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
 [components]&lt;br /&gt;
 trac.web.auth.loginmodule = disabled&lt;br /&gt;
 acct_mgr.web_ui.loginmodule = enabled&lt;br /&gt;
 acct_mgr.htfile.htpasswdstore = enabled&lt;br /&gt;
 acct_mgr.admin.accountmanageradminpage = enabled&lt;br /&gt;
 &lt;br /&gt;
 [account-manager]&lt;br /&gt;
 password_store = HtPasswdStore&lt;br /&gt;
 password_file = /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/users&lt;br /&gt;
&lt;br /&gt;
Nun kann man sich mit einem Benutzer anmelden, der in &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/users&#039;&#039; definiert ist, anmelden.&lt;br /&gt;
&lt;br /&gt;
Um einen neuen benutzer anzulagen verwendet man:&lt;br /&gt;
&lt;br /&gt;
 /usr/sbin/htpasswd2 /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/users &amp;lt;new user&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Benutzer zum Administrator machen ====&lt;br /&gt;
Damit ein Benutzer zum Administrator wird, müssen er die Rolle &#039;&#039;TRAC_ADMIN&#039;&#039; haben. Dazu verwenden wir wieder das &#039;&#039;trac-admin&#039;&#039; Kommandozeilen-Werkzeug:&lt;br /&gt;
&lt;br /&gt;
 trac-admin /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac permission add &amp;lt;username&amp;gt; TRAC_ADMIN&lt;br /&gt;
&lt;br /&gt;
=== Mail-Konfiguration ===&lt;br /&gt;
&lt;br /&gt;
Trac versendet Emails über neue und geänderte Tickets. Damit das funktioniert, müssen in der &#039;&#039;notification&#039;&#039;-Sektion einige Einstellungen gemacht werden:&lt;br /&gt;
&lt;br /&gt;
 [notification]&lt;br /&gt;
 smtp_port = 25&lt;br /&gt;
 smtp_server = localhost&lt;br /&gt;
 smtp_from = no-reply@trac.host.com&lt;br /&gt;
 smtp_always_bcc = owner@project.com&lt;br /&gt;
 smtp_enabled = true&lt;br /&gt;
 smtp_replyto = email@trac.host.com&lt;br /&gt;
&lt;br /&gt;
Die meisten der Optionen sind selbsterklärend, &#039;&#039;smtp_always_bcc&#039;&#039; sendet standardmäßig eine Benachrichtigung über jede Ticket-Änderung an eine Standard-Adresse. Dies ist z.B. hilfreich, wenn der Projektbesitzer alles mitbekommen möchte und sich der Ticket-Traffic in Grenzen hält.&lt;br /&gt;
&lt;br /&gt;
=== Ticket Workflow ===&lt;br /&gt;
=== Visuelle Anpassungen ===&lt;br /&gt;
=== VCS Integration ===&lt;br /&gt;
==== Subversion ====&lt;br /&gt;
siehe [[Subversion]]&lt;/div&gt;</summary>
		<author><name>DelphiN</name></author>
	</entry>
	<entry>
		<id>https://wiki.schokokeks.org/wiki/index.php?title=Trac&amp;diff=8875</id>
		<title>Trac</title>
		<link rel="alternate" type="text/html" href="https://wiki.schokokeks.org/wiki/index.php?title=Trac&amp;diff=8875"/>
		<updated>2009-11-06T15:24:29Z</updated>

		<summary type="html">&lt;p&gt;DelphiN: /* Exkurs: Eigene Plugins installieren und verwenden */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung ==&lt;br /&gt;
[http://trac.edgewall.org/ 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.&lt;br /&gt;
&lt;br /&gt;
Die Installation von Trac unterscheidet sich prinzipiell von der Installation üblicher PHP/MySQL Applikationen, weshalb sie hier genauer ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
=== Technische Vorraussetzungen ===&lt;br /&gt;
Wir gehen im Folgenden davon aus, dass &#039;&#039;trac.host.com&#039;&#039; über das [https://config.schokokeks.org/ Konfigurations-Interface] konfiguriert ist und Das &#039;&#039;htdocs&#039;&#039;-Verzeichnis in /home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs liegt.&lt;br /&gt;
&lt;br /&gt;
Trac selbst ist bereits auf dem Server installiert. Derzeitig liegt es in der Version 0.11 vor.&lt;br /&gt;
&lt;br /&gt;
Wenn MySQL als RDBMS verwendet werden soll, muss eine MySQL-Datenbank verfügbar sein. Diese lässt sich ebenso über die Konfigurations-Maske anlegen.&lt;br /&gt;
&lt;br /&gt;
== Trac installieren ==&lt;br /&gt;
=== Trac-Umgebung aufsetzen ===&lt;br /&gt;
Trac wird mit einem Kommandozeilen-Werkzeug &#039;&#039;trac-admin&#039;&#039; ausgeliefert. Mit &#039;&#039;trac-admin&#039;&#039; lassen sich alle administrativen Aufgaben auch von der Kommandozeile erledigen.&lt;br /&gt;
&lt;br /&gt;
==== Verzeichnis auswählen ====&lt;br /&gt;
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 &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== RDBMS auswählen ====&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==== Trac-Umgebung initialisieren ====&lt;br /&gt;
Um Trac zu initialisieren, verwenden wir das Kommandozeilen-Werkzeug und führen &#039;&#039;trac-admin /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac initenv&#039;&#039; aus. &#039;&#039;initenv&#039;&#039; führt uns interaktiv durch die Installation.&lt;br /&gt;
&lt;br /&gt;
===== Projektname festlegen =====&lt;br /&gt;
&lt;br /&gt;
 $ trac-admin /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac initenv&lt;br /&gt;
 Creating a new Trac environment at /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac&lt;br /&gt;
 &lt;br /&gt;
 Trac will first ask a few questions about your environment &lt;br /&gt;
 in order to initalize and prepare the project database.&lt;br /&gt;
 &lt;br /&gt;
  Please enter the name of your project.&lt;br /&gt;
  This name will be used in page titles and descriptions.&lt;br /&gt;
 &lt;br /&gt;
 Project Name [My Project]&amp;gt; Mein Projektname&lt;br /&gt;
&lt;br /&gt;
Der Projektname kann beliebig vergeben werden und kann später editiert werden. Geben Sie einen Projektname an und bestätigen diesen mit der Eingabetaste.&lt;br /&gt;
&lt;br /&gt;
===== Datenbankverbindung angeben =====&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
  Please specify the connection string for the database to use.&lt;br /&gt;
  By default, a local SQLite database is created in the environment &lt;br /&gt;
  directory. It is also possible to use an already existing &lt;br /&gt;
  PostgreSQL database (check the Trac documentation for the exact &lt;br /&gt;
  connection string syntax).&lt;br /&gt;
 &lt;br /&gt;
 Database connection string [sqlite:db/trac.db]&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Wenn MySQL verwendet werden soll, sehen die Verbindungsinformationen ähnlich aus wie diese:&lt;br /&gt;
&lt;br /&gt;
 mysql://&amp;lt;user&amp;gt;:&amp;lt;password&amp;gt;@localhost/&amp;lt;datenbank name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Felder in spitzen Klammern sind natürlich durch die entsprechenden Werte zu ersetzen.&lt;br /&gt;
&lt;br /&gt;
Wenn Trac die Datenbank-Verbindung akzeptiert und sich verbinden kann, wird das Trac-Schema angelegt.&lt;br /&gt;
&lt;br /&gt;
=====  VCS-Integration =====&lt;br /&gt;
 Please specify the type of version control system,&lt;br /&gt;
  By default, it will be svn.&lt;br /&gt;
 &lt;br /&gt;
  If you don&#039;t want to use Trac with version control integration, &lt;br /&gt;
  choose the default here and don&#039;t specify a repository directory. &lt;br /&gt;
  in the next question.&lt;br /&gt;
 &lt;br /&gt;
 Repository type [svn]&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Wenn Sie Subversion verwenden wollen, bestätigen sie diese Voreinstellung einfach mit der Eingabetaste. Die VCS-Integration kann später auch noch angepasst werden.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
  Please specify the absolute path to the version control &lt;br /&gt;
  repository, or leave it blank to use Trac without a repository.&lt;br /&gt;
  You can also set the repository location later.&lt;br /&gt;
 &lt;br /&gt;
 Path to repository [/path/to/repos]&amp;gt; /home/&amp;lt;user&amp;gt;/subversion/svn.host.com/repositories/&amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das war&#039;s auch schon, nach der Bestätigung des Repository-Pfades sollten Sie eine Meldung ähnlich zu dieser erhalten:&lt;br /&gt;
&lt;br /&gt;
 Project environment for &#039;My Project&#039; created.&lt;br /&gt;
 &lt;br /&gt;
 You may now configure the environment by editing the file:&lt;br /&gt;
 &lt;br /&gt;
   /home/lars/websites/projects.usrportage.de/trac/portage-mod-jabber/conf/trac.ini&lt;br /&gt;
 &lt;br /&gt;
 If you&#039;d like to take this new project environment for a test drive,&lt;br /&gt;
 try running the Trac standalone web server `tracd`:&lt;br /&gt;
 &lt;br /&gt;
   tracd --port 8000 /home/lars/websites/projects.usrportage.de/trac/portage-mod-jabber&lt;br /&gt;
 &lt;br /&gt;
 Then point your browser to http://localhost:8000/portage-mod-jabber.&lt;br /&gt;
 There you can also browse the documentation for your installed&lt;br /&gt;
 version of Trac, including information on further setup (such as&lt;br /&gt;
 deploying Trac to a real web server).&lt;br /&gt;
 &lt;br /&gt;
 The latest documentation can also always be found on the project&lt;br /&gt;
 website:&lt;br /&gt;
 &lt;br /&gt;
   http://trac.edgewall.org/&lt;br /&gt;
 &lt;br /&gt;
 Congratulations!&lt;br /&gt;
&lt;br /&gt;
==== Trac im Web verfügbar machen ====&lt;br /&gt;
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 &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs&#039;&#039; verfügbar. Wir kopieren dazu &#039;&#039;/usr/share/webapps/trac/0.11/hostroot/cgi-bin/trac.fcgi&#039;&#039; nach &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs/index.fcgi&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 cp /usr/share/webapps/trac/0.11/hostroot/cgi-bin/trac.fcgi /home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs/index.fcgi&lt;br /&gt;
&lt;br /&gt;
===== TRAC_ENV path =====&lt;br /&gt;
Nun muss dem FastCGI-Endpoint noch bekannt gegeben werden, welche Trac-Umgebung der ausliefern soll. Dazu müssen wir die Datei &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/htdocs/index.fcgi&#039;&#039; editieren. &lt;br /&gt;
&lt;br /&gt;
 $ nano /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/htdocs/index.fcgi&lt;br /&gt;
&lt;br /&gt;
Diese sieht so aus:&lt;br /&gt;
&lt;br /&gt;
 try:&lt;br /&gt;
     from trac.web import fcgi_frontend&lt;br /&gt;
     fcgi_frontend.run()&lt;br /&gt;
 except SystemExit:&lt;br /&gt;
     raise&lt;br /&gt;
 except Exception, e:&lt;br /&gt;
     print &#039;Content-Type: text/plain\r\n\r\n&#039;,&lt;br /&gt;
     print &#039;Oops...&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print &#039;Trac detected an internal error:&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print e&lt;br /&gt;
     print&lt;br /&gt;
     import traceback&lt;br /&gt;
     import StringIO&lt;br /&gt;
     tb = StringIO.StringIO()&lt;br /&gt;
     traceback.print_exc(file=tb)&lt;br /&gt;
     print tb.getvalue()&lt;br /&gt;
&lt;br /&gt;
Wir interessieren uns für den oberen Teil, vor dem import-Statement. Wir importieren das Python-Modul &#039;&#039;os&#039;&#039;, um die Environment-Variable &#039;&#039;TRAC_ENV&#039;&#039; setzen zu können. Der obere Teil muss also so aussehen:&lt;br /&gt;
&lt;br /&gt;
 try:&lt;br /&gt;
     import os&lt;br /&gt;
     os.environ[&#039;TRAC_ENV&#039;] = &#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac/&#039;&lt;br /&gt;
     from trac.web import fcgi_frontend&lt;br /&gt;
     fcgi_frontend.run()&lt;br /&gt;
 except SystemExit:&lt;br /&gt;
     raise&lt;br /&gt;
 except Exception, e:&lt;br /&gt;
     print &#039;Content-Type: text/plain\r\n\r\n&#039;,&lt;br /&gt;
     print &#039;Oops...&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print &#039;Trac detected an internal error:&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print e&lt;br /&gt;
     print&lt;br /&gt;
     import traceback&lt;br /&gt;
     import StringIO&lt;br /&gt;
     tb = StringIO.StringIO()&lt;br /&gt;
     traceback.print_exc(file=tb)&lt;br /&gt;
     print tb.getvalue()&lt;br /&gt;
&lt;br /&gt;
===== .htaccess =====&lt;br /&gt;
Neben der Anpassung der &#039;&#039;index.fcgi&#039;&#039; benötigen wir noch eine &#039;&#039;.htaccess&#039;&#039;-Datei um das Verhalten des Webservers zu beeinflussen. &lt;br /&gt;
&lt;br /&gt;
 $ nano /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
Erstmal müssen wir dafür sorgen, dass CGIs ausgeführt werden. Außerdem sorgt dafür, dass alle Anfragen auf das Script &#039;&#039;index.fcgi&#039;&#039; laufen:&lt;br /&gt;
&lt;br /&gt;
 Options +ExecCGI&lt;br /&gt;
 &amp;lt;br /&amp;gt;&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule ^$ %{REQUEST_URI}index.fcgi [R=301]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} !\.(png|css|fcgi|txt|jpe?g|gif|pdf|svg)$&lt;br /&gt;
 RewriteRule ^(.*)$ index.fcgi/$1 [L,QSA]&lt;br /&gt;
&lt;br /&gt;
Nach diesen letzten Anpassungung können Sie erstmals Trac unter http://trac.host.com/ aufrufen. Als nächster Schritt folgt nun die [[Trac#Trac_konfigurieren|Anpassung]] der frisch installierten Trac-Instanz, speziell die Einrichtung des Logins.&lt;br /&gt;
&lt;br /&gt;
== Trac konfigurieren ==&lt;br /&gt;
=== Login einrichten ===&lt;br /&gt;
&lt;br /&gt;
Der letzte fehlende Punkt um Trac nutzen zu können, ist der fehlende Login. Trac authentifiziert normalerweise über HTTP Authentication. Allerdings wäre dafür eine spezielle Apache-Konfiguration notwendig, was wir aber vermeiden möchten. Deshalb verwenden wir das [http://trac-hacks.org/wiki/AccountManagerPlugin AccountManager-plugin].&lt;br /&gt;
&lt;br /&gt;
==== Exkurs: Eigene Plugins installieren und verwenden ====&lt;br /&gt;
Um eigene Plugins installieren zu können, müssen wir die Direktive &#039;&#039;plugins_dir&#039;&#039; in der Sektion &#039;&#039;inherit&#039;&#039; in der &#039;&#039;&#039;conf/trac.ini&#039;&#039;&#039; anpassen:&lt;br /&gt;
&lt;br /&gt;
 $ nano /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/conf/trac.ini&lt;br /&gt;
&lt;br /&gt;
Nehmen wir an, dass wir Plugins nach &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugins&#039;&#039; installieren wollen.&lt;br /&gt;
&lt;br /&gt;
 [inherit]&lt;br /&gt;
 plugins_dir = /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugins&lt;br /&gt;
&lt;br /&gt;
Trac-Plugins werden mithilfe der Python [http://peak.telecommunity.com/DevCenter/setuptools Setuptools] installiert. Damit das funktioniert, muss noch die Umgebungsvariable PYTHONPATH angepasst werden. &lt;br /&gt;
&lt;br /&gt;
 nano /home/&amp;lt;user&amp;gt;/.bashrc&lt;br /&gt;
&lt;br /&gt;
Hier muss am Ende folgendes eingefügt werden:&lt;br /&gt;
&lt;br /&gt;
 PYTHONPATH=${PYTHONPATH}:/home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugins&lt;br /&gt;
&lt;br /&gt;
Danach muss man sich aus und neu einloggen!&lt;br /&gt;
&lt;br /&gt;
Danach können Plugins mit dem folgendem Kommando installiert werden:&lt;br /&gt;
&lt;br /&gt;
 easy_install --install-dir /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugins &amp;lt;plugin&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wobei &amp;lt;plugin&amp;gt; die URL des Plugins sein muss.&lt;br /&gt;
&lt;br /&gt;
==== AccountManager-Plugin installieren ====&lt;br /&gt;
Mit folgendem Kommando wird das AccountManager-Plugin installiert.&lt;br /&gt;
&lt;br /&gt;
 easy_install --install-dir /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugins/ http://trac-hacks.org/svn/accountmanagerplugin/trunk&lt;br /&gt;
&lt;br /&gt;
==== AccountManager-Plugin konfigurieren ====&lt;br /&gt;
Um dass AccountManager-Plugin zu verwenden, muss es noch konfiguriert werden. &lt;br /&gt;
&lt;br /&gt;
Als erstens müssen wir dem benutzer ein Passwort zuweisen. das machen wir damit indem wir eine Passwd-Date anlegen:&lt;br /&gt;
&lt;br /&gt;
  /usr/sbin/htpasswd2 -c /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/users &amp;lt;user&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jetzt öffnen wir die Trac-Konfigurationsdatei:&lt;br /&gt;
&lt;br /&gt;
  nano /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/conf/trac.ini&lt;br /&gt;
&lt;br /&gt;
Danach muss folgendes muss daher an die Trac-Konfigurationsdatei angefügt werden:&lt;br /&gt;
&lt;br /&gt;
 [components]&lt;br /&gt;
&lt;br /&gt;
Default-Login-Komponente deaktivieren&lt;br /&gt;
&lt;br /&gt;
 trac.web.auth.loginmodule = disabled&lt;br /&gt;
&lt;br /&gt;
AccountManager Login-Komponente aktivieren&lt;br /&gt;
&lt;br /&gt;
 acct_mgr.web_ui.loginmodule = enabled&lt;br /&gt;
&lt;br /&gt;
Passwörter werden im htpasswd-Format abgelegt&lt;br /&gt;
&lt;br /&gt;
 acct_mgr.htfile.htpasswdstore = enabled&lt;br /&gt;
&lt;br /&gt;
Administrations-Seite aktivieren&lt;br /&gt;
&lt;br /&gt;
 acct_mgr.admin.accountmanageradminpage = enabled&lt;br /&gt;
&lt;br /&gt;
 [account-manager]&lt;br /&gt;
&lt;br /&gt;
Passwörter liegen im htpasswd-Format vor&lt;br /&gt;
&lt;br /&gt;
 password_store = HtPasswdStore&lt;br /&gt;
&lt;br /&gt;
Pfad zur htpasswd-Datei&lt;br /&gt;
&lt;br /&gt;
 password_file = /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/users&lt;br /&gt;
&lt;br /&gt;
Danach sieht die Konfiguration folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
 [components]&lt;br /&gt;
 trac.web.auth.loginmodule = disabled&lt;br /&gt;
 acct_mgr.web_ui.loginmodule = enabled&lt;br /&gt;
 acct_mgr.htfile.htpasswdstore = enabled&lt;br /&gt;
 acct_mgr.admin.accountmanageradminpage = enabled&lt;br /&gt;
 &lt;br /&gt;
 [account-manager]&lt;br /&gt;
 password_store = HtPasswdStore&lt;br /&gt;
 password_file = /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/users&lt;br /&gt;
&lt;br /&gt;
Nun kann man sich mit einem Benutzer anmelden, der in &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/users&#039;&#039; definiert ist, anmelden.&lt;br /&gt;
&lt;br /&gt;
Um einen neuen benutzer anzulagen verwendet man:&lt;br /&gt;
&lt;br /&gt;
 /usr/sbin/htpasswd2 /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/users &amp;lt;new user&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Benutzer zum Administrator machen ====&lt;br /&gt;
Damit ein Benutzer zum Administrator wird, müssen er die Rolle &#039;&#039;TRAC_ADMIN&#039;&#039; haben. Dazu verwenden wir wieder das &#039;&#039;trac-admin&#039;&#039; Kommandozeilen-Werkzeug:&lt;br /&gt;
&lt;br /&gt;
 trac-admin /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac permission add &amp;lt;username&amp;gt; TRAC_ADMIN&lt;br /&gt;
&lt;br /&gt;
=== Mail-Konfiguration ===&lt;br /&gt;
&lt;br /&gt;
Trac versendet Emails über neue und geänderte Tickets. Damit das funktioniert, müssen in der &#039;&#039;notification&#039;&#039;-Sektion einige Einstellungen gemacht werden:&lt;br /&gt;
&lt;br /&gt;
 [notification]&lt;br /&gt;
 smtp_port = 25&lt;br /&gt;
 smtp_server = localhost&lt;br /&gt;
 smtp_from = no-reply@trac.host.com&lt;br /&gt;
 smtp_always_bcc = owner@project.com&lt;br /&gt;
 smtp_enabled = true&lt;br /&gt;
 smtp_replyto = email@trac.host.com&lt;br /&gt;
&lt;br /&gt;
Die meisten der Optionen sind selbsterklärend, &#039;&#039;smtp_always_bcc&#039;&#039; sendet standardmäßig eine Benachrichtigung über jede Ticket-Änderung an eine Standard-Adresse. Dies ist z.B. hilfreich, wenn der Projektbesitzer alles mitbekommen möchte und sich der Ticket-Traffic in Grenzen hält.&lt;br /&gt;
&lt;br /&gt;
=== Ticket Workflow ===&lt;br /&gt;
=== Visuelle Anpassungen ===&lt;br /&gt;
=== VCS Integration ===&lt;br /&gt;
==== Subversion ====&lt;br /&gt;
siehe [[Subversion]]&lt;/div&gt;</summary>
		<author><name>DelphiN</name></author>
	</entry>
	<entry>
		<id>https://wiki.schokokeks.org/wiki/index.php?title=Trac&amp;diff=8864</id>
		<title>Trac</title>
		<link rel="alternate" type="text/html" href="https://wiki.schokokeks.org/wiki/index.php?title=Trac&amp;diff=8864"/>
		<updated>2009-10-24T20:52:53Z</updated>

		<summary type="html">&lt;p&gt;DelphiN: /* AccountManager-Plugin konfigurieren */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung ==&lt;br /&gt;
[http://trac.edgewall.org/ 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.&lt;br /&gt;
&lt;br /&gt;
Die Installation von Trac unterscheidet sich prinzipiell von der Installation üblicher PHP/MySQL Applikationen, weshalb sie hier genauer ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
=== Technische Vorraussetzungen ===&lt;br /&gt;
Wir gehen im Folgenden davon aus, dass &#039;&#039;trac.host.com&#039;&#039; über das [https://config.schokokeks.org/ Konfigurations-Interface] konfiguriert ist und Das &#039;&#039;htdocs&#039;&#039;-Verzeichnis in /home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs liegt.&lt;br /&gt;
&lt;br /&gt;
Trac selbst ist bereits auf dem Server installiert. Derzeitig liegt es in der Version 0.11 vor.&lt;br /&gt;
&lt;br /&gt;
Wenn MySQL als RDBMS verwendet werden soll, muss eine MySQL-Datenbank verfügbar sein. Diese lässt sich ebenso über die Konfigurations-Maske anlegen.&lt;br /&gt;
&lt;br /&gt;
== Trac installieren ==&lt;br /&gt;
=== Trac-Umgebung aufsetzen ===&lt;br /&gt;
Trac wird mit einem Kommandozeilen-Werkzeug &#039;&#039;trac-admin&#039;&#039; ausgeliefert. Mit &#039;&#039;trac-admin&#039;&#039; lassen sich alle administrativen Aufgaben auch von der Kommandozeile erledigen.&lt;br /&gt;
&lt;br /&gt;
==== Verzeichnis auswählen ====&lt;br /&gt;
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 &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== RDBMS auswählen ====&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==== Trac-Umgebung initialisieren ====&lt;br /&gt;
Um Trac zu initialisieren, verwenden wir das Kommandozeilen-Werkzeug und führen &#039;&#039;trac-admin /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac initenv&#039;&#039; aus. &#039;&#039;initenv&#039;&#039; führt uns interaktiv durch die Installation.&lt;br /&gt;
&lt;br /&gt;
===== Projektname festlegen =====&lt;br /&gt;
&lt;br /&gt;
 $ trac-admin /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac initenv&lt;br /&gt;
 Creating a new Trac environment at /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac&lt;br /&gt;
 &lt;br /&gt;
 Trac will first ask a few questions about your environment &lt;br /&gt;
 in order to initalize and prepare the project database.&lt;br /&gt;
 &lt;br /&gt;
  Please enter the name of your project.&lt;br /&gt;
  This name will be used in page titles and descriptions.&lt;br /&gt;
 &lt;br /&gt;
 Project Name [My Project]&amp;gt; Mein Projektname&lt;br /&gt;
&lt;br /&gt;
Der Projektname kann beliebig vergeben werden und kann später editiert werden. Geben Sie einen Projektname an und bestätigen diesen mit der Eingabetaste.&lt;br /&gt;
&lt;br /&gt;
===== Datenbankverbindung angeben =====&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
  Please specify the connection string for the database to use.&lt;br /&gt;
  By default, a local SQLite database is created in the environment &lt;br /&gt;
  directory. It is also possible to use an already existing &lt;br /&gt;
  PostgreSQL database (check the Trac documentation for the exact &lt;br /&gt;
  connection string syntax).&lt;br /&gt;
 &lt;br /&gt;
 Database connection string [sqlite:db/trac.db]&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Wenn MySQL verwendet werden soll, sehen die Verbindungsinformationen ähnlich aus wie diese:&lt;br /&gt;
&lt;br /&gt;
 mysql://&amp;lt;user&amp;gt;:&amp;lt;password&amp;gt;@localhost/&amp;lt;datenbank name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Felder in spitzen Klammern sind natürlich durch die entsprechenden Werte zu ersetzen.&lt;br /&gt;
&lt;br /&gt;
Wenn Trac die Datenbank-Verbindung akzeptiert und sich verbinden kann, wird das Trac-Schema angelegt.&lt;br /&gt;
&lt;br /&gt;
=====  VCS-Integration =====&lt;br /&gt;
 Please specify the type of version control system,&lt;br /&gt;
  By default, it will be svn.&lt;br /&gt;
 &lt;br /&gt;
  If you don&#039;t want to use Trac with version control integration, &lt;br /&gt;
  choose the default here and don&#039;t specify a repository directory. &lt;br /&gt;
  in the next question.&lt;br /&gt;
 &lt;br /&gt;
 Repository type [svn]&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Wenn Sie Subversion verwenden wollen, bestätigen sie diese Voreinstellung einfach mit der Eingabetaste. Die VCS-Integration kann später auch noch angepasst werden.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
  Please specify the absolute path to the version control &lt;br /&gt;
  repository, or leave it blank to use Trac without a repository.&lt;br /&gt;
  You can also set the repository location later.&lt;br /&gt;
 &lt;br /&gt;
 Path to repository [/path/to/repos]&amp;gt; /home/&amp;lt;user&amp;gt;/subversion/svn.host.com/repositories/&amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das war&#039;s auch schon, nach der Bestätigung des Repository-Pfades sollten Sie eine Meldung ähnlich zu dieser erhalten:&lt;br /&gt;
&lt;br /&gt;
 Project environment for &#039;My Project&#039; created.&lt;br /&gt;
 &lt;br /&gt;
 You may now configure the environment by editing the file:&lt;br /&gt;
 &lt;br /&gt;
   /home/lars/websites/projects.usrportage.de/trac/portage-mod-jabber/conf/trac.ini&lt;br /&gt;
 &lt;br /&gt;
 If you&#039;d like to take this new project environment for a test drive,&lt;br /&gt;
 try running the Trac standalone web server `tracd`:&lt;br /&gt;
 &lt;br /&gt;
   tracd --port 8000 /home/lars/websites/projects.usrportage.de/trac/portage-mod-jabber&lt;br /&gt;
 &lt;br /&gt;
 Then point your browser to http://localhost:8000/portage-mod-jabber.&lt;br /&gt;
 There you can also browse the documentation for your installed&lt;br /&gt;
 version of Trac, including information on further setup (such as&lt;br /&gt;
 deploying Trac to a real web server).&lt;br /&gt;
 &lt;br /&gt;
 The latest documentation can also always be found on the project&lt;br /&gt;
 website:&lt;br /&gt;
 &lt;br /&gt;
   http://trac.edgewall.org/&lt;br /&gt;
 &lt;br /&gt;
 Congratulations!&lt;br /&gt;
&lt;br /&gt;
==== Trac im Web verfügbar machen ====&lt;br /&gt;
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 &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs&#039;&#039; verfügbar. Wir kopieren dazu &#039;&#039;/usr/share/webapps/trac/0.11/hostroot/cgi-bin/trac.fcgi&#039;&#039; nach &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs/index.fcgi&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 cp /usr/share/webapps/trac/0.11/hostroot/cgi-bin/trac.fcgi /home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs/index.fcgi&lt;br /&gt;
&lt;br /&gt;
===== TRAC_ENV path =====&lt;br /&gt;
Nun muss dem FastCGI-Endpoint noch bekannt gegeben werden, welche Trac-Umgebung der ausliefern soll. Dazu müssen wir die Datei &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/htdocs/index.fcgi&#039;&#039; editieren. &lt;br /&gt;
&lt;br /&gt;
 $ nano /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/htdocs/index.fcgi&lt;br /&gt;
&lt;br /&gt;
Diese sieht so aus:&lt;br /&gt;
&lt;br /&gt;
 try:&lt;br /&gt;
     from trac.web import fcgi_frontend&lt;br /&gt;
     fcgi_frontend.run()&lt;br /&gt;
 except SystemExit:&lt;br /&gt;
     raise&lt;br /&gt;
 except Exception, e:&lt;br /&gt;
     print &#039;Content-Type: text/plain\r\n\r\n&#039;,&lt;br /&gt;
     print &#039;Oops...&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print &#039;Trac detected an internal error:&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print e&lt;br /&gt;
     print&lt;br /&gt;
     import traceback&lt;br /&gt;
     import StringIO&lt;br /&gt;
     tb = StringIO.StringIO()&lt;br /&gt;
     traceback.print_exc(file=tb)&lt;br /&gt;
     print tb.getvalue()&lt;br /&gt;
&lt;br /&gt;
Wir interessieren uns für den oberen Teil, vor dem import-Statement. Wir importieren das Python-Modul &#039;&#039;os&#039;&#039;, um die Environment-Variable &#039;&#039;TRAC_ENV&#039;&#039; setzen zu können. Der obere Teil muss also so aussehen:&lt;br /&gt;
&lt;br /&gt;
 try:&lt;br /&gt;
     import os&lt;br /&gt;
     os.environ[&#039;TRAC_ENV&#039;] = &#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac/&#039;&lt;br /&gt;
     from trac.web import fcgi_frontend&lt;br /&gt;
     fcgi_frontend.run()&lt;br /&gt;
 except SystemExit:&lt;br /&gt;
     raise&lt;br /&gt;
 except Exception, e:&lt;br /&gt;
     print &#039;Content-Type: text/plain\r\n\r\n&#039;,&lt;br /&gt;
     print &#039;Oops...&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print &#039;Trac detected an internal error:&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print e&lt;br /&gt;
     print&lt;br /&gt;
     import traceback&lt;br /&gt;
     import StringIO&lt;br /&gt;
     tb = StringIO.StringIO()&lt;br /&gt;
     traceback.print_exc(file=tb)&lt;br /&gt;
     print tb.getvalue()&lt;br /&gt;
&lt;br /&gt;
===== .htaccess =====&lt;br /&gt;
Neben der Anpassung der &#039;&#039;index.fcgi&#039;&#039; benötigen wir noch eine &#039;&#039;.htaccess&#039;&#039;-Datei um das Verhalten des Webservers zu beeinflussen. &lt;br /&gt;
&lt;br /&gt;
 $ nano /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
Erstmal müssen wir dafür sorgen, dass CGIs ausgeführt werden. Außerdem sorgt dafür, dass alle Anfragen auf das Script &#039;&#039;index.fcgi&#039;&#039; laufen:&lt;br /&gt;
&lt;br /&gt;
 Options +ExecCGI&lt;br /&gt;
 &amp;lt;br /&amp;gt;&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule ^$ %{REQUEST_URI}index.fcgi [R=301]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} !\.(png|css|fcgi|txt|jpe?g|gif|pdf|svg)$&lt;br /&gt;
 RewriteRule ^(.*)$ index.fcgi/$1 [L,QSA]&lt;br /&gt;
&lt;br /&gt;
Nach diesen letzten Anpassungung können Sie erstmals Trac unter http://trac.host.com/ aufrufen. Als nächster Schritt folgt nun die [[Trac#Trac_konfigurieren|Anpassung]] der frisch installierten Trac-Instanz, speziell die Einrichtung des Logins.&lt;br /&gt;
&lt;br /&gt;
== Trac konfigurieren ==&lt;br /&gt;
=== Login einrichten ===&lt;br /&gt;
&lt;br /&gt;
Der letzte fehlende Punkt um Trac nutzen zu können, ist der fehlende Login. Trac authentifiziert normalerweise über HTTP Authentication. Allerdings wäre dafür eine spezielle Apache-Konfiguration notwendig, was wir aber vermeiden möchten. Deshalb verwenden wir das [http://trac-hacks.org/wiki/AccountManagerPlugin AccountManager-plugin].&lt;br /&gt;
&lt;br /&gt;
==== Exkurs: Eigene Plugins installieren und verwenden ====&lt;br /&gt;
Um eigene Plugins installieren zu können, müssen wir die Direktive &#039;&#039;plugins_dir&#039;&#039; in der Sektion &#039;&#039;inherit&#039;&#039; in der &#039;&#039;&#039;conf/trac.ini&#039;&#039;&#039; anpassen:&lt;br /&gt;
&lt;br /&gt;
 $ nano /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/conf/trac.ini&lt;br /&gt;
&lt;br /&gt;
Nehmen wir an, dass wir Plugins nach &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugins&#039;&#039; installieren wollen.&lt;br /&gt;
&lt;br /&gt;
 [inherit]&lt;br /&gt;
 plugins_dir = /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugins&lt;br /&gt;
&lt;br /&gt;
Trac-Plugins werden mithilfe der Python [http://peak.telecommunity.com/DevCenter/setuptools Setuptools] installiert. Damit das funktioniert, muss noch die Umgebungsvariable PYTHONPATH angepasst werden. &lt;br /&gt;
&lt;br /&gt;
 nano /home/&amp;lt;user&amp;gt;/.bashrc&lt;br /&gt;
&lt;br /&gt;
Hier muss am Ende folgendes eingefügt werden:&lt;br /&gt;
&lt;br /&gt;
 PYTHONPATH=${PYTHONPATH}://home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugins&lt;br /&gt;
&lt;br /&gt;
Danach muss man sich aus und neu einloggen!&lt;br /&gt;
&lt;br /&gt;
Danach können Plugins mit dem folgendem Kommando installiert werden:&lt;br /&gt;
&lt;br /&gt;
 easy_install --install-dir /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugins &amp;lt;plugin&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wobei &amp;lt;plugin&amp;gt; die URL des Plugins sein muss.&lt;br /&gt;
&lt;br /&gt;
==== AccountManager-Plugin installieren ====&lt;br /&gt;
Mit folgendem Kommando wird das AccountManager-Plugin installiert.&lt;br /&gt;
&lt;br /&gt;
 easy_install --install-dir /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugins/ http://trac-hacks.org/svn/accountmanagerplugin/trunk&lt;br /&gt;
&lt;br /&gt;
==== AccountManager-Plugin konfigurieren ====&lt;br /&gt;
Um dass AccountManager-Plugin zu verwenden, muss es noch konfiguriert werden. &lt;br /&gt;
&lt;br /&gt;
Als erstens müssen wir dem benutzer ein Passwort zuweisen. das machen wir damit indem wir eine Passwd-Date anlegen:&lt;br /&gt;
&lt;br /&gt;
  /usr/sbin/htpasswd2 -c /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/users &amp;lt;user&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jetzt öffnen wir die Trac-Konfigurationsdatei:&lt;br /&gt;
&lt;br /&gt;
  nano /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/conf/trac.ini&lt;br /&gt;
&lt;br /&gt;
Danach muss folgendes muss daher an die Trac-Konfigurationsdatei angefügt werden:&lt;br /&gt;
&lt;br /&gt;
 [components]&lt;br /&gt;
&lt;br /&gt;
Default-Login-Komponente deaktivieren&lt;br /&gt;
&lt;br /&gt;
 trac.web.auth.loginmodule = disabled&lt;br /&gt;
&lt;br /&gt;
AccountManager Login-Komponente aktivieren&lt;br /&gt;
&lt;br /&gt;
 acct_mgr.web_ui.loginmodule = enabled&lt;br /&gt;
&lt;br /&gt;
Passwörter werden im htpasswd-Format abgelegt&lt;br /&gt;
&lt;br /&gt;
 acct_mgr.htfile.htpasswdstore = enabled&lt;br /&gt;
&lt;br /&gt;
Administrations-Seite aktivieren&lt;br /&gt;
&lt;br /&gt;
 acct_mgr.admin.accountmanageradminpage = enabled&lt;br /&gt;
&lt;br /&gt;
 [account-manager]&lt;br /&gt;
&lt;br /&gt;
Passwörter liegen im htpasswd-Format vor&lt;br /&gt;
&lt;br /&gt;
 password_store = HtPasswdStore&lt;br /&gt;
&lt;br /&gt;
Pfad zur htpasswd-Datei&lt;br /&gt;
&lt;br /&gt;
 password_file = /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/users&lt;br /&gt;
&lt;br /&gt;
Danach sieht die Konfiguration folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
 [components]&lt;br /&gt;
 trac.web.auth.loginmodule = disabled&lt;br /&gt;
 acct_mgr.web_ui.loginmodule = enabled&lt;br /&gt;
 acct_mgr.htfile.htpasswdstore = enabled&lt;br /&gt;
 acct_mgr.admin.accountmanageradminpage = enabled&lt;br /&gt;
 &lt;br /&gt;
 [account-manager]&lt;br /&gt;
 password_store = HtPasswdStore&lt;br /&gt;
 password_file = /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/users&lt;br /&gt;
&lt;br /&gt;
Nun kann man sich mit einem Benutzer anmelden, der in &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/users&#039;&#039; definiert ist, anmelden.&lt;br /&gt;
&lt;br /&gt;
Um einen neuen benutzer anzulagen verwendet man:&lt;br /&gt;
&lt;br /&gt;
 /usr/sbin/htpasswd2 /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/users &amp;lt;new user&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Benutzer zum Administrator machen ====&lt;br /&gt;
Damit ein Benutzer zum Administrator wird, müssen er die Rolle &#039;&#039;TRAC_ADMIN&#039;&#039; haben. Dazu verwenden wir wieder das &#039;&#039;trac-admin&#039;&#039; Kommandozeilen-Werkzeug:&lt;br /&gt;
&lt;br /&gt;
 trac-admin /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac permission add &amp;lt;username&amp;gt; TRAC_ADMIN&lt;br /&gt;
&lt;br /&gt;
=== Mail-Konfiguration ===&lt;br /&gt;
&lt;br /&gt;
Trac versendet Emails über neue und geänderte Tickets. Damit das funktioniert, müssen in der &#039;&#039;notification&#039;&#039;-Sektion einige Einstellungen gemacht werden:&lt;br /&gt;
&lt;br /&gt;
 [notification]&lt;br /&gt;
 smtp_port = 25&lt;br /&gt;
 smtp_server = localhost&lt;br /&gt;
 smtp_from = no-reply@trac.host.com&lt;br /&gt;
 smtp_always_bcc = owner@project.com&lt;br /&gt;
 smtp_enabled = true&lt;br /&gt;
 smtp_replyto = email@trac.host.com&lt;br /&gt;
&lt;br /&gt;
Die meisten der Optionen sind selbsterklärend, &#039;&#039;smtp_always_bcc&#039;&#039; sendet standardmäßig eine Benachrichtigung über jede Ticket-Änderung an eine Standard-Adresse. Dies ist z.B. hilfreich, wenn der Projektbesitzer alles mitbekommen möchte und sich der Ticket-Traffic in Grenzen hält.&lt;br /&gt;
&lt;br /&gt;
=== Ticket Workflow ===&lt;br /&gt;
=== Visuelle Anpassungen ===&lt;br /&gt;
=== VCS Integration ===&lt;br /&gt;
==== Subversion ====&lt;br /&gt;
siehe [[Subversion]]&lt;/div&gt;</summary>
		<author><name>DelphiN</name></author>
	</entry>
	<entry>
		<id>https://wiki.schokokeks.org/wiki/index.php?title=Trac&amp;diff=8863</id>
		<title>Trac</title>
		<link rel="alternate" type="text/html" href="https://wiki.schokokeks.org/wiki/index.php?title=Trac&amp;diff=8863"/>
		<updated>2009-10-24T20:23:12Z</updated>

		<summary type="html">&lt;p&gt;DelphiN: /* Benutzer zum Administrator machen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung ==&lt;br /&gt;
[http://trac.edgewall.org/ 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.&lt;br /&gt;
&lt;br /&gt;
Die Installation von Trac unterscheidet sich prinzipiell von der Installation üblicher PHP/MySQL Applikationen, weshalb sie hier genauer ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
=== Technische Vorraussetzungen ===&lt;br /&gt;
Wir gehen im Folgenden davon aus, dass &#039;&#039;trac.host.com&#039;&#039; über das [https://config.schokokeks.org/ Konfigurations-Interface] konfiguriert ist und Das &#039;&#039;htdocs&#039;&#039;-Verzeichnis in /home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs liegt.&lt;br /&gt;
&lt;br /&gt;
Trac selbst ist bereits auf dem Server installiert. Derzeitig liegt es in der Version 0.11 vor.&lt;br /&gt;
&lt;br /&gt;
Wenn MySQL als RDBMS verwendet werden soll, muss eine MySQL-Datenbank verfügbar sein. Diese lässt sich ebenso über die Konfigurations-Maske anlegen.&lt;br /&gt;
&lt;br /&gt;
== Trac installieren ==&lt;br /&gt;
=== Trac-Umgebung aufsetzen ===&lt;br /&gt;
Trac wird mit einem Kommandozeilen-Werkzeug &#039;&#039;trac-admin&#039;&#039; ausgeliefert. Mit &#039;&#039;trac-admin&#039;&#039; lassen sich alle administrativen Aufgaben auch von der Kommandozeile erledigen.&lt;br /&gt;
&lt;br /&gt;
==== Verzeichnis auswählen ====&lt;br /&gt;
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 &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== RDBMS auswählen ====&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==== Trac-Umgebung initialisieren ====&lt;br /&gt;
Um Trac zu initialisieren, verwenden wir das Kommandozeilen-Werkzeug und führen &#039;&#039;trac-admin /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac initenv&#039;&#039; aus. &#039;&#039;initenv&#039;&#039; führt uns interaktiv durch die Installation.&lt;br /&gt;
&lt;br /&gt;
===== Projektname festlegen =====&lt;br /&gt;
&lt;br /&gt;
 $ trac-admin /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac initenv&lt;br /&gt;
 Creating a new Trac environment at /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac&lt;br /&gt;
 &lt;br /&gt;
 Trac will first ask a few questions about your environment &lt;br /&gt;
 in order to initalize and prepare the project database.&lt;br /&gt;
 &lt;br /&gt;
  Please enter the name of your project.&lt;br /&gt;
  This name will be used in page titles and descriptions.&lt;br /&gt;
 &lt;br /&gt;
 Project Name [My Project]&amp;gt; Mein Projektname&lt;br /&gt;
&lt;br /&gt;
Der Projektname kann beliebig vergeben werden und kann später editiert werden. Geben Sie einen Projektname an und bestätigen diesen mit der Eingabetaste.&lt;br /&gt;
&lt;br /&gt;
===== Datenbankverbindung angeben =====&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
  Please specify the connection string for the database to use.&lt;br /&gt;
  By default, a local SQLite database is created in the environment &lt;br /&gt;
  directory. It is also possible to use an already existing &lt;br /&gt;
  PostgreSQL database (check the Trac documentation for the exact &lt;br /&gt;
  connection string syntax).&lt;br /&gt;
 &lt;br /&gt;
 Database connection string [sqlite:db/trac.db]&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Wenn MySQL verwendet werden soll, sehen die Verbindungsinformationen ähnlich aus wie diese:&lt;br /&gt;
&lt;br /&gt;
 mysql://&amp;lt;user&amp;gt;:&amp;lt;password&amp;gt;@localhost/&amp;lt;datenbank name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Felder in spitzen Klammern sind natürlich durch die entsprechenden Werte zu ersetzen.&lt;br /&gt;
&lt;br /&gt;
Wenn Trac die Datenbank-Verbindung akzeptiert und sich verbinden kann, wird das Trac-Schema angelegt.&lt;br /&gt;
&lt;br /&gt;
=====  VCS-Integration =====&lt;br /&gt;
 Please specify the type of version control system,&lt;br /&gt;
  By default, it will be svn.&lt;br /&gt;
 &lt;br /&gt;
  If you don&#039;t want to use Trac with version control integration, &lt;br /&gt;
  choose the default here and don&#039;t specify a repository directory. &lt;br /&gt;
  in the next question.&lt;br /&gt;
 &lt;br /&gt;
 Repository type [svn]&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Wenn Sie Subversion verwenden wollen, bestätigen sie diese Voreinstellung einfach mit der Eingabetaste. Die VCS-Integration kann später auch noch angepasst werden.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
  Please specify the absolute path to the version control &lt;br /&gt;
  repository, or leave it blank to use Trac without a repository.&lt;br /&gt;
  You can also set the repository location later.&lt;br /&gt;
 &lt;br /&gt;
 Path to repository [/path/to/repos]&amp;gt; /home/&amp;lt;user&amp;gt;/subversion/svn.host.com/repositories/&amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das war&#039;s auch schon, nach der Bestätigung des Repository-Pfades sollten Sie eine Meldung ähnlich zu dieser erhalten:&lt;br /&gt;
&lt;br /&gt;
 Project environment for &#039;My Project&#039; created.&lt;br /&gt;
 &lt;br /&gt;
 You may now configure the environment by editing the file:&lt;br /&gt;
 &lt;br /&gt;
   /home/lars/websites/projects.usrportage.de/trac/portage-mod-jabber/conf/trac.ini&lt;br /&gt;
 &lt;br /&gt;
 If you&#039;d like to take this new project environment for a test drive,&lt;br /&gt;
 try running the Trac standalone web server `tracd`:&lt;br /&gt;
 &lt;br /&gt;
   tracd --port 8000 /home/lars/websites/projects.usrportage.de/trac/portage-mod-jabber&lt;br /&gt;
 &lt;br /&gt;
 Then point your browser to http://localhost:8000/portage-mod-jabber.&lt;br /&gt;
 There you can also browse the documentation for your installed&lt;br /&gt;
 version of Trac, including information on further setup (such as&lt;br /&gt;
 deploying Trac to a real web server).&lt;br /&gt;
 &lt;br /&gt;
 The latest documentation can also always be found on the project&lt;br /&gt;
 website:&lt;br /&gt;
 &lt;br /&gt;
   http://trac.edgewall.org/&lt;br /&gt;
 &lt;br /&gt;
 Congratulations!&lt;br /&gt;
&lt;br /&gt;
==== Trac im Web verfügbar machen ====&lt;br /&gt;
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 &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs&#039;&#039; verfügbar. Wir kopieren dazu &#039;&#039;/usr/share/webapps/trac/0.11/hostroot/cgi-bin/trac.fcgi&#039;&#039; nach &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs/index.fcgi&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 cp /usr/share/webapps/trac/0.11/hostroot/cgi-bin/trac.fcgi /home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs/index.fcgi&lt;br /&gt;
&lt;br /&gt;
===== TRAC_ENV path =====&lt;br /&gt;
Nun muss dem FastCGI-Endpoint noch bekannt gegeben werden, welche Trac-Umgebung der ausliefern soll. Dazu müssen wir die Datei &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/htdocs/index.fcgi&#039;&#039; editieren. &lt;br /&gt;
&lt;br /&gt;
 $ nano /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/htdocs/index.fcgi&lt;br /&gt;
&lt;br /&gt;
Diese sieht so aus:&lt;br /&gt;
&lt;br /&gt;
 try:&lt;br /&gt;
     from trac.web import fcgi_frontend&lt;br /&gt;
     fcgi_frontend.run()&lt;br /&gt;
 except SystemExit:&lt;br /&gt;
     raise&lt;br /&gt;
 except Exception, e:&lt;br /&gt;
     print &#039;Content-Type: text/plain\r\n\r\n&#039;,&lt;br /&gt;
     print &#039;Oops...&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print &#039;Trac detected an internal error:&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print e&lt;br /&gt;
     print&lt;br /&gt;
     import traceback&lt;br /&gt;
     import StringIO&lt;br /&gt;
     tb = StringIO.StringIO()&lt;br /&gt;
     traceback.print_exc(file=tb)&lt;br /&gt;
     print tb.getvalue()&lt;br /&gt;
&lt;br /&gt;
Wir interessieren uns für den oberen Teil, vor dem import-Statement. Wir importieren das Python-Modul &#039;&#039;os&#039;&#039;, um die Environment-Variable &#039;&#039;TRAC_ENV&#039;&#039; setzen zu können. Der obere Teil muss also so aussehen:&lt;br /&gt;
&lt;br /&gt;
 try:&lt;br /&gt;
     import os&lt;br /&gt;
     os.environ[&#039;TRAC_ENV&#039;] = &#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac/&#039;&lt;br /&gt;
     from trac.web import fcgi_frontend&lt;br /&gt;
     fcgi_frontend.run()&lt;br /&gt;
 except SystemExit:&lt;br /&gt;
     raise&lt;br /&gt;
 except Exception, e:&lt;br /&gt;
     print &#039;Content-Type: text/plain\r\n\r\n&#039;,&lt;br /&gt;
     print &#039;Oops...&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print &#039;Trac detected an internal error:&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print e&lt;br /&gt;
     print&lt;br /&gt;
     import traceback&lt;br /&gt;
     import StringIO&lt;br /&gt;
     tb = StringIO.StringIO()&lt;br /&gt;
     traceback.print_exc(file=tb)&lt;br /&gt;
     print tb.getvalue()&lt;br /&gt;
&lt;br /&gt;
===== .htaccess =====&lt;br /&gt;
Neben der Anpassung der &#039;&#039;index.fcgi&#039;&#039; benötigen wir noch eine &#039;&#039;.htaccess&#039;&#039;-Datei um das Verhalten des Webservers zu beeinflussen. &lt;br /&gt;
&lt;br /&gt;
 $ nano /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
Erstmal müssen wir dafür sorgen, dass CGIs ausgeführt werden. Außerdem sorgt dafür, dass alle Anfragen auf das Script &#039;&#039;index.fcgi&#039;&#039; laufen:&lt;br /&gt;
&lt;br /&gt;
 Options +ExecCGI&lt;br /&gt;
 &amp;lt;br /&amp;gt;&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule ^$ %{REQUEST_URI}index.fcgi [R=301]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} !\.(png|css|fcgi|txt|jpe?g|gif|pdf|svg)$&lt;br /&gt;
 RewriteRule ^(.*)$ index.fcgi/$1 [L,QSA]&lt;br /&gt;
&lt;br /&gt;
Nach diesen letzten Anpassungung können Sie erstmals Trac unter http://trac.host.com/ aufrufen. Als nächster Schritt folgt nun die [[Trac#Trac_konfigurieren|Anpassung]] der frisch installierten Trac-Instanz, speziell die Einrichtung des Logins.&lt;br /&gt;
&lt;br /&gt;
== Trac konfigurieren ==&lt;br /&gt;
=== Login einrichten ===&lt;br /&gt;
&lt;br /&gt;
Der letzte fehlende Punkt um Trac nutzen zu können, ist der fehlende Login. Trac authentifiziert normalerweise über HTTP Authentication. Allerdings wäre dafür eine spezielle Apache-Konfiguration notwendig, was wir aber vermeiden möchten. Deshalb verwenden wir das [http://trac-hacks.org/wiki/AccountManagerPlugin AccountManager-plugin].&lt;br /&gt;
&lt;br /&gt;
==== Exkurs: Eigene Plugins installieren und verwenden ====&lt;br /&gt;
Um eigene Plugins installieren zu können, müssen wir die Direktive &#039;&#039;plugins_dir&#039;&#039; in der Sektion &#039;&#039;inherit&#039;&#039; in der &#039;&#039;&#039;conf/trac.ini&#039;&#039;&#039; anpassen:&lt;br /&gt;
&lt;br /&gt;
 $ nano /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/conf/trac.ini&lt;br /&gt;
&lt;br /&gt;
Nehmen wir an, dass wir Plugins nach &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugins&#039;&#039; installieren wollen.&lt;br /&gt;
&lt;br /&gt;
 [inherit]&lt;br /&gt;
 plugins_dir = /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugins&lt;br /&gt;
&lt;br /&gt;
Trac-Plugins werden mithilfe der Python [http://peak.telecommunity.com/DevCenter/setuptools Setuptools] installiert. Damit das funktioniert, muss noch die Umgebungsvariable PYTHONPATH angepasst werden. &lt;br /&gt;
&lt;br /&gt;
 nano /home/&amp;lt;user&amp;gt;/.bashrc&lt;br /&gt;
&lt;br /&gt;
Hier muss am Ende folgendes eingefügt werden:&lt;br /&gt;
&lt;br /&gt;
 PYTHONPATH=${PYTHONPATH}://home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugins&lt;br /&gt;
&lt;br /&gt;
Danach muss man sich aus und neu einloggen!&lt;br /&gt;
&lt;br /&gt;
Danach können Plugins mit dem folgendem Kommando installiert werden:&lt;br /&gt;
&lt;br /&gt;
 easy_install --install-dir /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugins &amp;lt;plugin&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wobei &amp;lt;plugin&amp;gt; die URL des Plugins sein muss.&lt;br /&gt;
&lt;br /&gt;
==== AccountManager-Plugin installieren ====&lt;br /&gt;
Mit folgendem Kommando wird das AccountManager-Plugin installiert.&lt;br /&gt;
&lt;br /&gt;
 easy_install --install-dir /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugins/ http://trac-hacks.org/svn/accountmanagerplugin/trunk&lt;br /&gt;
&lt;br /&gt;
==== AccountManager-Plugin konfigurieren ====&lt;br /&gt;
Um dass AccountManager-Plugin zu verwenden, muss es noch konfiguriert werden. &lt;br /&gt;
&lt;br /&gt;
 nano /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/conf/trac.ini&lt;br /&gt;
&lt;br /&gt;
Folgendes muss daher an die Trac-Konfigurationsdatei angefügt werden:&lt;br /&gt;
&lt;br /&gt;
 [components]&lt;br /&gt;
&lt;br /&gt;
Default-Login-Komponente deaktivieren&lt;br /&gt;
&lt;br /&gt;
 trac.web.auth.loginmodule = disabled&lt;br /&gt;
&lt;br /&gt;
AccountManager Login-Komponente aktivieren&lt;br /&gt;
&lt;br /&gt;
 acct_mgr.web_ui.loginmodule = enabled&lt;br /&gt;
&lt;br /&gt;
Passwörter werden im htpasswd-Format abgelegt&lt;br /&gt;
&lt;br /&gt;
 acct_mgr.htfile.htpasswdstore = enabled&lt;br /&gt;
&lt;br /&gt;
Administrations-Seite aktivieren&lt;br /&gt;
&lt;br /&gt;
 acct_mgr.admin.accountmanageradminpage = enabled&lt;br /&gt;
&lt;br /&gt;
 [account-manager]&lt;br /&gt;
&lt;br /&gt;
Passwörter liegen im htpasswd-Format vor&lt;br /&gt;
&lt;br /&gt;
 password_store = HtPasswdStore&lt;br /&gt;
&lt;br /&gt;
Pfad zur htpasswd-Datei&lt;br /&gt;
&lt;br /&gt;
 password_file = /home/&amp;lt;user&amp;gt;/path/to/passwd&lt;br /&gt;
&lt;br /&gt;
Danach sieht die Konfiguration folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
 [components]&lt;br /&gt;
 trac.web.auth.loginmodule = disabled&lt;br /&gt;
 acct_mgr.web_ui.loginmodule = enabled&lt;br /&gt;
 acct_mgr.htfile.htpasswdstore = enabled&lt;br /&gt;
 acct_mgr.admin.accountmanageradminpage = enabled&lt;br /&gt;
 &lt;br /&gt;
 [account-manager]&lt;br /&gt;
 password_store = HtPasswdStore&lt;br /&gt;
 password_file = /home/&amp;lt;user&amp;gt;/path/to/passwd&lt;br /&gt;
&lt;br /&gt;
Nun kann man sich mit einem Benutzer anmelden, der in &#039;&#039;/home/&amp;lt;user&amp;gt;/path/to/passwd&#039;&#039; definiert ist, anmelden.&lt;br /&gt;
&lt;br /&gt;
==== Benutzer zum Administrator machen ====&lt;br /&gt;
Damit ein Benutzer zum Administrator wird, müssen er die Rolle &#039;&#039;TRAC_ADMIN&#039;&#039; haben. Dazu verwenden wir wieder das &#039;&#039;trac-admin&#039;&#039; Kommandozeilen-Werkzeug:&lt;br /&gt;
&lt;br /&gt;
 trac-admin /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac permission add &amp;lt;username&amp;gt; TRAC_ADMIN&lt;br /&gt;
&lt;br /&gt;
=== Mail-Konfiguration ===&lt;br /&gt;
&lt;br /&gt;
Trac versendet Emails über neue und geänderte Tickets. Damit das funktioniert, müssen in der &#039;&#039;notification&#039;&#039;-Sektion einige Einstellungen gemacht werden:&lt;br /&gt;
&lt;br /&gt;
 [notification]&lt;br /&gt;
 smtp_port = 25&lt;br /&gt;
 smtp_server = localhost&lt;br /&gt;
 smtp_from = no-reply@trac.host.com&lt;br /&gt;
 smtp_always_bcc = owner@project.com&lt;br /&gt;
 smtp_enabled = true&lt;br /&gt;
 smtp_replyto = email@trac.host.com&lt;br /&gt;
&lt;br /&gt;
Die meisten der Optionen sind selbsterklärend, &#039;&#039;smtp_always_bcc&#039;&#039; sendet standardmäßig eine Benachrichtigung über jede Ticket-Änderung an eine Standard-Adresse. Dies ist z.B. hilfreich, wenn der Projektbesitzer alles mitbekommen möchte und sich der Ticket-Traffic in Grenzen hält.&lt;br /&gt;
&lt;br /&gt;
=== Ticket Workflow ===&lt;br /&gt;
=== Visuelle Anpassungen ===&lt;br /&gt;
=== VCS Integration ===&lt;br /&gt;
==== Subversion ====&lt;br /&gt;
siehe [[Subversion]]&lt;/div&gt;</summary>
		<author><name>DelphiN</name></author>
	</entry>
	<entry>
		<id>https://wiki.schokokeks.org/wiki/index.php?title=Trac&amp;diff=8862</id>
		<title>Trac</title>
		<link rel="alternate" type="text/html" href="https://wiki.schokokeks.org/wiki/index.php?title=Trac&amp;diff=8862"/>
		<updated>2009-10-24T20:20:23Z</updated>

		<summary type="html">&lt;p&gt;DelphiN: /* AccountManager-Plugin konfigurieren */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung ==&lt;br /&gt;
[http://trac.edgewall.org/ 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.&lt;br /&gt;
&lt;br /&gt;
Die Installation von Trac unterscheidet sich prinzipiell von der Installation üblicher PHP/MySQL Applikationen, weshalb sie hier genauer ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
=== Technische Vorraussetzungen ===&lt;br /&gt;
Wir gehen im Folgenden davon aus, dass &#039;&#039;trac.host.com&#039;&#039; über das [https://config.schokokeks.org/ Konfigurations-Interface] konfiguriert ist und Das &#039;&#039;htdocs&#039;&#039;-Verzeichnis in /home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs liegt.&lt;br /&gt;
&lt;br /&gt;
Trac selbst ist bereits auf dem Server installiert. Derzeitig liegt es in der Version 0.11 vor.&lt;br /&gt;
&lt;br /&gt;
Wenn MySQL als RDBMS verwendet werden soll, muss eine MySQL-Datenbank verfügbar sein. Diese lässt sich ebenso über die Konfigurations-Maske anlegen.&lt;br /&gt;
&lt;br /&gt;
== Trac installieren ==&lt;br /&gt;
=== Trac-Umgebung aufsetzen ===&lt;br /&gt;
Trac wird mit einem Kommandozeilen-Werkzeug &#039;&#039;trac-admin&#039;&#039; ausgeliefert. Mit &#039;&#039;trac-admin&#039;&#039; lassen sich alle administrativen Aufgaben auch von der Kommandozeile erledigen.&lt;br /&gt;
&lt;br /&gt;
==== Verzeichnis auswählen ====&lt;br /&gt;
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 &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== RDBMS auswählen ====&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==== Trac-Umgebung initialisieren ====&lt;br /&gt;
Um Trac zu initialisieren, verwenden wir das Kommandozeilen-Werkzeug und führen &#039;&#039;trac-admin /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac initenv&#039;&#039; aus. &#039;&#039;initenv&#039;&#039; führt uns interaktiv durch die Installation.&lt;br /&gt;
&lt;br /&gt;
===== Projektname festlegen =====&lt;br /&gt;
&lt;br /&gt;
 $ trac-admin /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac initenv&lt;br /&gt;
 Creating a new Trac environment at /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac&lt;br /&gt;
 &lt;br /&gt;
 Trac will first ask a few questions about your environment &lt;br /&gt;
 in order to initalize and prepare the project database.&lt;br /&gt;
 &lt;br /&gt;
  Please enter the name of your project.&lt;br /&gt;
  This name will be used in page titles and descriptions.&lt;br /&gt;
 &lt;br /&gt;
 Project Name [My Project]&amp;gt; Mein Projektname&lt;br /&gt;
&lt;br /&gt;
Der Projektname kann beliebig vergeben werden und kann später editiert werden. Geben Sie einen Projektname an und bestätigen diesen mit der Eingabetaste.&lt;br /&gt;
&lt;br /&gt;
===== Datenbankverbindung angeben =====&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
  Please specify the connection string for the database to use.&lt;br /&gt;
  By default, a local SQLite database is created in the environment &lt;br /&gt;
  directory. It is also possible to use an already existing &lt;br /&gt;
  PostgreSQL database (check the Trac documentation for the exact &lt;br /&gt;
  connection string syntax).&lt;br /&gt;
 &lt;br /&gt;
 Database connection string [sqlite:db/trac.db]&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Wenn MySQL verwendet werden soll, sehen die Verbindungsinformationen ähnlich aus wie diese:&lt;br /&gt;
&lt;br /&gt;
 mysql://&amp;lt;user&amp;gt;:&amp;lt;password&amp;gt;@localhost/&amp;lt;datenbank name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Felder in spitzen Klammern sind natürlich durch die entsprechenden Werte zu ersetzen.&lt;br /&gt;
&lt;br /&gt;
Wenn Trac die Datenbank-Verbindung akzeptiert und sich verbinden kann, wird das Trac-Schema angelegt.&lt;br /&gt;
&lt;br /&gt;
=====  VCS-Integration =====&lt;br /&gt;
 Please specify the type of version control system,&lt;br /&gt;
  By default, it will be svn.&lt;br /&gt;
 &lt;br /&gt;
  If you don&#039;t want to use Trac with version control integration, &lt;br /&gt;
  choose the default here and don&#039;t specify a repository directory. &lt;br /&gt;
  in the next question.&lt;br /&gt;
 &lt;br /&gt;
 Repository type [svn]&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Wenn Sie Subversion verwenden wollen, bestätigen sie diese Voreinstellung einfach mit der Eingabetaste. Die VCS-Integration kann später auch noch angepasst werden.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
  Please specify the absolute path to the version control &lt;br /&gt;
  repository, or leave it blank to use Trac without a repository.&lt;br /&gt;
  You can also set the repository location later.&lt;br /&gt;
 &lt;br /&gt;
 Path to repository [/path/to/repos]&amp;gt; /home/&amp;lt;user&amp;gt;/subversion/svn.host.com/repositories/&amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das war&#039;s auch schon, nach der Bestätigung des Repository-Pfades sollten Sie eine Meldung ähnlich zu dieser erhalten:&lt;br /&gt;
&lt;br /&gt;
 Project environment for &#039;My Project&#039; created.&lt;br /&gt;
 &lt;br /&gt;
 You may now configure the environment by editing the file:&lt;br /&gt;
 &lt;br /&gt;
   /home/lars/websites/projects.usrportage.de/trac/portage-mod-jabber/conf/trac.ini&lt;br /&gt;
 &lt;br /&gt;
 If you&#039;d like to take this new project environment for a test drive,&lt;br /&gt;
 try running the Trac standalone web server `tracd`:&lt;br /&gt;
 &lt;br /&gt;
   tracd --port 8000 /home/lars/websites/projects.usrportage.de/trac/portage-mod-jabber&lt;br /&gt;
 &lt;br /&gt;
 Then point your browser to http://localhost:8000/portage-mod-jabber.&lt;br /&gt;
 There you can also browse the documentation for your installed&lt;br /&gt;
 version of Trac, including information on further setup (such as&lt;br /&gt;
 deploying Trac to a real web server).&lt;br /&gt;
 &lt;br /&gt;
 The latest documentation can also always be found on the project&lt;br /&gt;
 website:&lt;br /&gt;
 &lt;br /&gt;
   http://trac.edgewall.org/&lt;br /&gt;
 &lt;br /&gt;
 Congratulations!&lt;br /&gt;
&lt;br /&gt;
==== Trac im Web verfügbar machen ====&lt;br /&gt;
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 &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs&#039;&#039; verfügbar. Wir kopieren dazu &#039;&#039;/usr/share/webapps/trac/0.11/hostroot/cgi-bin/trac.fcgi&#039;&#039; nach &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs/index.fcgi&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 cp /usr/share/webapps/trac/0.11/hostroot/cgi-bin/trac.fcgi /home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs/index.fcgi&lt;br /&gt;
&lt;br /&gt;
===== TRAC_ENV path =====&lt;br /&gt;
Nun muss dem FastCGI-Endpoint noch bekannt gegeben werden, welche Trac-Umgebung der ausliefern soll. Dazu müssen wir die Datei &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/htdocs/index.fcgi&#039;&#039; editieren. &lt;br /&gt;
&lt;br /&gt;
 $ nano /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/htdocs/index.fcgi&lt;br /&gt;
&lt;br /&gt;
Diese sieht so aus:&lt;br /&gt;
&lt;br /&gt;
 try:&lt;br /&gt;
     from trac.web import fcgi_frontend&lt;br /&gt;
     fcgi_frontend.run()&lt;br /&gt;
 except SystemExit:&lt;br /&gt;
     raise&lt;br /&gt;
 except Exception, e:&lt;br /&gt;
     print &#039;Content-Type: text/plain\r\n\r\n&#039;,&lt;br /&gt;
     print &#039;Oops...&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print &#039;Trac detected an internal error:&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print e&lt;br /&gt;
     print&lt;br /&gt;
     import traceback&lt;br /&gt;
     import StringIO&lt;br /&gt;
     tb = StringIO.StringIO()&lt;br /&gt;
     traceback.print_exc(file=tb)&lt;br /&gt;
     print tb.getvalue()&lt;br /&gt;
&lt;br /&gt;
Wir interessieren uns für den oberen Teil, vor dem import-Statement. Wir importieren das Python-Modul &#039;&#039;os&#039;&#039;, um die Environment-Variable &#039;&#039;TRAC_ENV&#039;&#039; setzen zu können. Der obere Teil muss also so aussehen:&lt;br /&gt;
&lt;br /&gt;
 try:&lt;br /&gt;
     import os&lt;br /&gt;
     os.environ[&#039;TRAC_ENV&#039;] = &#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac/&#039;&lt;br /&gt;
     from trac.web import fcgi_frontend&lt;br /&gt;
     fcgi_frontend.run()&lt;br /&gt;
 except SystemExit:&lt;br /&gt;
     raise&lt;br /&gt;
 except Exception, e:&lt;br /&gt;
     print &#039;Content-Type: text/plain\r\n\r\n&#039;,&lt;br /&gt;
     print &#039;Oops...&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print &#039;Trac detected an internal error:&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print e&lt;br /&gt;
     print&lt;br /&gt;
     import traceback&lt;br /&gt;
     import StringIO&lt;br /&gt;
     tb = StringIO.StringIO()&lt;br /&gt;
     traceback.print_exc(file=tb)&lt;br /&gt;
     print tb.getvalue()&lt;br /&gt;
&lt;br /&gt;
===== .htaccess =====&lt;br /&gt;
Neben der Anpassung der &#039;&#039;index.fcgi&#039;&#039; benötigen wir noch eine &#039;&#039;.htaccess&#039;&#039;-Datei um das Verhalten des Webservers zu beeinflussen. &lt;br /&gt;
&lt;br /&gt;
 $ nano /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
Erstmal müssen wir dafür sorgen, dass CGIs ausgeführt werden. Außerdem sorgt dafür, dass alle Anfragen auf das Script &#039;&#039;index.fcgi&#039;&#039; laufen:&lt;br /&gt;
&lt;br /&gt;
 Options +ExecCGI&lt;br /&gt;
 &amp;lt;br /&amp;gt;&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule ^$ %{REQUEST_URI}index.fcgi [R=301]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} !\.(png|css|fcgi|txt|jpe?g|gif|pdf|svg)$&lt;br /&gt;
 RewriteRule ^(.*)$ index.fcgi/$1 [L,QSA]&lt;br /&gt;
&lt;br /&gt;
Nach diesen letzten Anpassungung können Sie erstmals Trac unter http://trac.host.com/ aufrufen. Als nächster Schritt folgt nun die [[Trac#Trac_konfigurieren|Anpassung]] der frisch installierten Trac-Instanz, speziell die Einrichtung des Logins.&lt;br /&gt;
&lt;br /&gt;
== Trac konfigurieren ==&lt;br /&gt;
=== Login einrichten ===&lt;br /&gt;
&lt;br /&gt;
Der letzte fehlende Punkt um Trac nutzen zu können, ist der fehlende Login. Trac authentifiziert normalerweise über HTTP Authentication. Allerdings wäre dafür eine spezielle Apache-Konfiguration notwendig, was wir aber vermeiden möchten. Deshalb verwenden wir das [http://trac-hacks.org/wiki/AccountManagerPlugin AccountManager-plugin].&lt;br /&gt;
&lt;br /&gt;
==== Exkurs: Eigene Plugins installieren und verwenden ====&lt;br /&gt;
Um eigene Plugins installieren zu können, müssen wir die Direktive &#039;&#039;plugins_dir&#039;&#039; in der Sektion &#039;&#039;inherit&#039;&#039; in der &#039;&#039;&#039;conf/trac.ini&#039;&#039;&#039; anpassen:&lt;br /&gt;
&lt;br /&gt;
 $ nano /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/conf/trac.ini&lt;br /&gt;
&lt;br /&gt;
Nehmen wir an, dass wir Plugins nach &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugins&#039;&#039; installieren wollen.&lt;br /&gt;
&lt;br /&gt;
 [inherit]&lt;br /&gt;
 plugins_dir = /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugins&lt;br /&gt;
&lt;br /&gt;
Trac-Plugins werden mithilfe der Python [http://peak.telecommunity.com/DevCenter/setuptools Setuptools] installiert. Damit das funktioniert, muss noch die Umgebungsvariable PYTHONPATH angepasst werden. &lt;br /&gt;
&lt;br /&gt;
 nano /home/&amp;lt;user&amp;gt;/.bashrc&lt;br /&gt;
&lt;br /&gt;
Hier muss am Ende folgendes eingefügt werden:&lt;br /&gt;
&lt;br /&gt;
 PYTHONPATH=${PYTHONPATH}://home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugins&lt;br /&gt;
&lt;br /&gt;
Danach muss man sich aus und neu einloggen!&lt;br /&gt;
&lt;br /&gt;
Danach können Plugins mit dem folgendem Kommando installiert werden:&lt;br /&gt;
&lt;br /&gt;
 easy_install --install-dir /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugins &amp;lt;plugin&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wobei &amp;lt;plugin&amp;gt; die URL des Plugins sein muss.&lt;br /&gt;
&lt;br /&gt;
==== AccountManager-Plugin installieren ====&lt;br /&gt;
Mit folgendem Kommando wird das AccountManager-Plugin installiert.&lt;br /&gt;
&lt;br /&gt;
 easy_install --install-dir /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugins/ http://trac-hacks.org/svn/accountmanagerplugin/trunk&lt;br /&gt;
&lt;br /&gt;
==== AccountManager-Plugin konfigurieren ====&lt;br /&gt;
Um dass AccountManager-Plugin zu verwenden, muss es noch konfiguriert werden. &lt;br /&gt;
&lt;br /&gt;
 nano /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/conf/trac.ini&lt;br /&gt;
&lt;br /&gt;
Folgendes muss daher an die Trac-Konfigurationsdatei angefügt werden:&lt;br /&gt;
&lt;br /&gt;
 [components]&lt;br /&gt;
&lt;br /&gt;
Default-Login-Komponente deaktivieren&lt;br /&gt;
&lt;br /&gt;
 trac.web.auth.loginmodule = disabled&lt;br /&gt;
&lt;br /&gt;
AccountManager Login-Komponente aktivieren&lt;br /&gt;
&lt;br /&gt;
 acct_mgr.web_ui.loginmodule = enabled&lt;br /&gt;
&lt;br /&gt;
Passwörter werden im htpasswd-Format abgelegt&lt;br /&gt;
&lt;br /&gt;
 acct_mgr.htfile.htpasswdstore = enabled&lt;br /&gt;
&lt;br /&gt;
Administrations-Seite aktivieren&lt;br /&gt;
&lt;br /&gt;
 acct_mgr.admin.accountmanageradminpage = enabled&lt;br /&gt;
&lt;br /&gt;
 [account-manager]&lt;br /&gt;
&lt;br /&gt;
Passwörter liegen im htpasswd-Format vor&lt;br /&gt;
&lt;br /&gt;
 password_store = HtPasswdStore&lt;br /&gt;
&lt;br /&gt;
Pfad zur htpasswd-Datei&lt;br /&gt;
&lt;br /&gt;
 password_file = /home/&amp;lt;user&amp;gt;/path/to/passwd&lt;br /&gt;
&lt;br /&gt;
Danach sieht die Konfiguration folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
 [components]&lt;br /&gt;
 trac.web.auth.loginmodule = disabled&lt;br /&gt;
 acct_mgr.web_ui.loginmodule = enabled&lt;br /&gt;
 acct_mgr.htfile.htpasswdstore = enabled&lt;br /&gt;
 acct_mgr.admin.accountmanageradminpage = enabled&lt;br /&gt;
 &lt;br /&gt;
 [account-manager]&lt;br /&gt;
 password_store = HtPasswdStore&lt;br /&gt;
 password_file = /home/&amp;lt;user&amp;gt;/path/to/passwd&lt;br /&gt;
&lt;br /&gt;
Nun kann man sich mit einem Benutzer anmelden, der in &#039;&#039;/home/&amp;lt;user&amp;gt;/path/to/passwd&#039;&#039; definiert ist, anmelden.&lt;br /&gt;
&lt;br /&gt;
==== Benutzer zum Administrator machen ====&lt;br /&gt;
Damit ein Benutzer zum Administrator wird, müssen er die Rolle &#039;&#039;TRAC_ADMIN&#039;&#039; haben. Dazu verwenden wir wieder das &#039;&#039;trac-admin&#039;&#039; Kommandozeilen-Werkzeug:&lt;br /&gt;
&lt;br /&gt;
 trac-admin /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac permission add &amp;lt;username&amp;gt; TRAC_ADMIN&lt;br /&gt;
&lt;br /&gt;
=== Mail-Konfiguration ===&lt;br /&gt;
&lt;br /&gt;
Trac versendet Emails über neue und geänderte Tickets. Damit das funktioniert, müssen in der &#039;&#039;notification&#039;&#039;-Sektion einige Einstellungen gemacht werden:&lt;br /&gt;
&lt;br /&gt;
 [notification]&lt;br /&gt;
 smtp_port = 25&lt;br /&gt;
 smtp_server = localhost&lt;br /&gt;
 smtp_from = no-reply@trac.host.com&lt;br /&gt;
 smtp_always_bcc = owner@project.com&lt;br /&gt;
 smtp_enabled = true&lt;br /&gt;
 smtp_replyto = email@trac.host.com&lt;br /&gt;
&lt;br /&gt;
Die meisten der Optionen sind selbsterklärend, &#039;&#039;smtp_always_bcc&#039;&#039; sendet standardmäßig eine Benachrichtigung über jede Ticket-Änderung an eine Standard-Adresse. Dies ist z.B. hilfreich, wenn der Projektbesitzer alles mitbekommen möchte und sich der Ticket-Traffic in Grenzen hält.&lt;br /&gt;
&lt;br /&gt;
=== Ticket Workflow ===&lt;br /&gt;
=== Visuelle Anpassungen ===&lt;br /&gt;
=== VCS Integration ===&lt;br /&gt;
==== Subversion ====&lt;br /&gt;
siehe [[Subversion]]&lt;/div&gt;</summary>
		<author><name>DelphiN</name></author>
	</entry>
	<entry>
		<id>https://wiki.schokokeks.org/wiki/index.php?title=Trac&amp;diff=8861</id>
		<title>Trac</title>
		<link rel="alternate" type="text/html" href="https://wiki.schokokeks.org/wiki/index.php?title=Trac&amp;diff=8861"/>
		<updated>2009-10-24T20:17:51Z</updated>

		<summary type="html">&lt;p&gt;DelphiN: /* Exkurs: Eigene Plugins installieren und verwenden */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung ==&lt;br /&gt;
[http://trac.edgewall.org/ 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.&lt;br /&gt;
&lt;br /&gt;
Die Installation von Trac unterscheidet sich prinzipiell von der Installation üblicher PHP/MySQL Applikationen, weshalb sie hier genauer ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
=== Technische Vorraussetzungen ===&lt;br /&gt;
Wir gehen im Folgenden davon aus, dass &#039;&#039;trac.host.com&#039;&#039; über das [https://config.schokokeks.org/ Konfigurations-Interface] konfiguriert ist und Das &#039;&#039;htdocs&#039;&#039;-Verzeichnis in /home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs liegt.&lt;br /&gt;
&lt;br /&gt;
Trac selbst ist bereits auf dem Server installiert. Derzeitig liegt es in der Version 0.11 vor.&lt;br /&gt;
&lt;br /&gt;
Wenn MySQL als RDBMS verwendet werden soll, muss eine MySQL-Datenbank verfügbar sein. Diese lässt sich ebenso über die Konfigurations-Maske anlegen.&lt;br /&gt;
&lt;br /&gt;
== Trac installieren ==&lt;br /&gt;
=== Trac-Umgebung aufsetzen ===&lt;br /&gt;
Trac wird mit einem Kommandozeilen-Werkzeug &#039;&#039;trac-admin&#039;&#039; ausgeliefert. Mit &#039;&#039;trac-admin&#039;&#039; lassen sich alle administrativen Aufgaben auch von der Kommandozeile erledigen.&lt;br /&gt;
&lt;br /&gt;
==== Verzeichnis auswählen ====&lt;br /&gt;
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 &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== RDBMS auswählen ====&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==== Trac-Umgebung initialisieren ====&lt;br /&gt;
Um Trac zu initialisieren, verwenden wir das Kommandozeilen-Werkzeug und führen &#039;&#039;trac-admin /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac initenv&#039;&#039; aus. &#039;&#039;initenv&#039;&#039; führt uns interaktiv durch die Installation.&lt;br /&gt;
&lt;br /&gt;
===== Projektname festlegen =====&lt;br /&gt;
&lt;br /&gt;
 $ trac-admin /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac initenv&lt;br /&gt;
 Creating a new Trac environment at /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac&lt;br /&gt;
 &lt;br /&gt;
 Trac will first ask a few questions about your environment &lt;br /&gt;
 in order to initalize and prepare the project database.&lt;br /&gt;
 &lt;br /&gt;
  Please enter the name of your project.&lt;br /&gt;
  This name will be used in page titles and descriptions.&lt;br /&gt;
 &lt;br /&gt;
 Project Name [My Project]&amp;gt; Mein Projektname&lt;br /&gt;
&lt;br /&gt;
Der Projektname kann beliebig vergeben werden und kann später editiert werden. Geben Sie einen Projektname an und bestätigen diesen mit der Eingabetaste.&lt;br /&gt;
&lt;br /&gt;
===== Datenbankverbindung angeben =====&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
  Please specify the connection string for the database to use.&lt;br /&gt;
  By default, a local SQLite database is created in the environment &lt;br /&gt;
  directory. It is also possible to use an already existing &lt;br /&gt;
  PostgreSQL database (check the Trac documentation for the exact &lt;br /&gt;
  connection string syntax).&lt;br /&gt;
 &lt;br /&gt;
 Database connection string [sqlite:db/trac.db]&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Wenn MySQL verwendet werden soll, sehen die Verbindungsinformationen ähnlich aus wie diese:&lt;br /&gt;
&lt;br /&gt;
 mysql://&amp;lt;user&amp;gt;:&amp;lt;password&amp;gt;@localhost/&amp;lt;datenbank name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Felder in spitzen Klammern sind natürlich durch die entsprechenden Werte zu ersetzen.&lt;br /&gt;
&lt;br /&gt;
Wenn Trac die Datenbank-Verbindung akzeptiert und sich verbinden kann, wird das Trac-Schema angelegt.&lt;br /&gt;
&lt;br /&gt;
=====  VCS-Integration =====&lt;br /&gt;
 Please specify the type of version control system,&lt;br /&gt;
  By default, it will be svn.&lt;br /&gt;
 &lt;br /&gt;
  If you don&#039;t want to use Trac with version control integration, &lt;br /&gt;
  choose the default here and don&#039;t specify a repository directory. &lt;br /&gt;
  in the next question.&lt;br /&gt;
 &lt;br /&gt;
 Repository type [svn]&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Wenn Sie Subversion verwenden wollen, bestätigen sie diese Voreinstellung einfach mit der Eingabetaste. Die VCS-Integration kann später auch noch angepasst werden.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
  Please specify the absolute path to the version control &lt;br /&gt;
  repository, or leave it blank to use Trac without a repository.&lt;br /&gt;
  You can also set the repository location later.&lt;br /&gt;
 &lt;br /&gt;
 Path to repository [/path/to/repos]&amp;gt; /home/&amp;lt;user&amp;gt;/subversion/svn.host.com/repositories/&amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das war&#039;s auch schon, nach der Bestätigung des Repository-Pfades sollten Sie eine Meldung ähnlich zu dieser erhalten:&lt;br /&gt;
&lt;br /&gt;
 Project environment for &#039;My Project&#039; created.&lt;br /&gt;
 &lt;br /&gt;
 You may now configure the environment by editing the file:&lt;br /&gt;
 &lt;br /&gt;
   /home/lars/websites/projects.usrportage.de/trac/portage-mod-jabber/conf/trac.ini&lt;br /&gt;
 &lt;br /&gt;
 If you&#039;d like to take this new project environment for a test drive,&lt;br /&gt;
 try running the Trac standalone web server `tracd`:&lt;br /&gt;
 &lt;br /&gt;
   tracd --port 8000 /home/lars/websites/projects.usrportage.de/trac/portage-mod-jabber&lt;br /&gt;
 &lt;br /&gt;
 Then point your browser to http://localhost:8000/portage-mod-jabber.&lt;br /&gt;
 There you can also browse the documentation for your installed&lt;br /&gt;
 version of Trac, including information on further setup (such as&lt;br /&gt;
 deploying Trac to a real web server).&lt;br /&gt;
 &lt;br /&gt;
 The latest documentation can also always be found on the project&lt;br /&gt;
 website:&lt;br /&gt;
 &lt;br /&gt;
   http://trac.edgewall.org/&lt;br /&gt;
 &lt;br /&gt;
 Congratulations!&lt;br /&gt;
&lt;br /&gt;
==== Trac im Web verfügbar machen ====&lt;br /&gt;
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 &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs&#039;&#039; verfügbar. Wir kopieren dazu &#039;&#039;/usr/share/webapps/trac/0.11/hostroot/cgi-bin/trac.fcgi&#039;&#039; nach &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs/index.fcgi&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 cp /usr/share/webapps/trac/0.11/hostroot/cgi-bin/trac.fcgi /home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs/index.fcgi&lt;br /&gt;
&lt;br /&gt;
===== TRAC_ENV path =====&lt;br /&gt;
Nun muss dem FastCGI-Endpoint noch bekannt gegeben werden, welche Trac-Umgebung der ausliefern soll. Dazu müssen wir die Datei &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/htdocs/index.fcgi&#039;&#039; editieren. &lt;br /&gt;
&lt;br /&gt;
 $ nano /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/htdocs/index.fcgi&lt;br /&gt;
&lt;br /&gt;
Diese sieht so aus:&lt;br /&gt;
&lt;br /&gt;
 try:&lt;br /&gt;
     from trac.web import fcgi_frontend&lt;br /&gt;
     fcgi_frontend.run()&lt;br /&gt;
 except SystemExit:&lt;br /&gt;
     raise&lt;br /&gt;
 except Exception, e:&lt;br /&gt;
     print &#039;Content-Type: text/plain\r\n\r\n&#039;,&lt;br /&gt;
     print &#039;Oops...&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print &#039;Trac detected an internal error:&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print e&lt;br /&gt;
     print&lt;br /&gt;
     import traceback&lt;br /&gt;
     import StringIO&lt;br /&gt;
     tb = StringIO.StringIO()&lt;br /&gt;
     traceback.print_exc(file=tb)&lt;br /&gt;
     print tb.getvalue()&lt;br /&gt;
&lt;br /&gt;
Wir interessieren uns für den oberen Teil, vor dem import-Statement. Wir importieren das Python-Modul &#039;&#039;os&#039;&#039;, um die Environment-Variable &#039;&#039;TRAC_ENV&#039;&#039; setzen zu können. Der obere Teil muss also so aussehen:&lt;br /&gt;
&lt;br /&gt;
 try:&lt;br /&gt;
     import os&lt;br /&gt;
     os.environ[&#039;TRAC_ENV&#039;] = &#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac/&#039;&lt;br /&gt;
     from trac.web import fcgi_frontend&lt;br /&gt;
     fcgi_frontend.run()&lt;br /&gt;
 except SystemExit:&lt;br /&gt;
     raise&lt;br /&gt;
 except Exception, e:&lt;br /&gt;
     print &#039;Content-Type: text/plain\r\n\r\n&#039;,&lt;br /&gt;
     print &#039;Oops...&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print &#039;Trac detected an internal error:&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print e&lt;br /&gt;
     print&lt;br /&gt;
     import traceback&lt;br /&gt;
     import StringIO&lt;br /&gt;
     tb = StringIO.StringIO()&lt;br /&gt;
     traceback.print_exc(file=tb)&lt;br /&gt;
     print tb.getvalue()&lt;br /&gt;
&lt;br /&gt;
===== .htaccess =====&lt;br /&gt;
Neben der Anpassung der &#039;&#039;index.fcgi&#039;&#039; benötigen wir noch eine &#039;&#039;.htaccess&#039;&#039;-Datei um das Verhalten des Webservers zu beeinflussen. &lt;br /&gt;
&lt;br /&gt;
 $ nano /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
Erstmal müssen wir dafür sorgen, dass CGIs ausgeführt werden. Außerdem sorgt dafür, dass alle Anfragen auf das Script &#039;&#039;index.fcgi&#039;&#039; laufen:&lt;br /&gt;
&lt;br /&gt;
 Options +ExecCGI&lt;br /&gt;
 &amp;lt;br /&amp;gt;&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule ^$ %{REQUEST_URI}index.fcgi [R=301]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} !\.(png|css|fcgi|txt|jpe?g|gif|pdf|svg)$&lt;br /&gt;
 RewriteRule ^(.*)$ index.fcgi/$1 [L,QSA]&lt;br /&gt;
&lt;br /&gt;
Nach diesen letzten Anpassungung können Sie erstmals Trac unter http://trac.host.com/ aufrufen. Als nächster Schritt folgt nun die [[Trac#Trac_konfigurieren|Anpassung]] der frisch installierten Trac-Instanz, speziell die Einrichtung des Logins.&lt;br /&gt;
&lt;br /&gt;
== Trac konfigurieren ==&lt;br /&gt;
=== Login einrichten ===&lt;br /&gt;
&lt;br /&gt;
Der letzte fehlende Punkt um Trac nutzen zu können, ist der fehlende Login. Trac authentifiziert normalerweise über HTTP Authentication. Allerdings wäre dafür eine spezielle Apache-Konfiguration notwendig, was wir aber vermeiden möchten. Deshalb verwenden wir das [http://trac-hacks.org/wiki/AccountManagerPlugin AccountManager-plugin].&lt;br /&gt;
&lt;br /&gt;
==== Exkurs: Eigene Plugins installieren und verwenden ====&lt;br /&gt;
Um eigene Plugins installieren zu können, müssen wir die Direktive &#039;&#039;plugins_dir&#039;&#039; in der Sektion &#039;&#039;inherit&#039;&#039; in der &#039;&#039;&#039;conf/trac.ini&#039;&#039;&#039; anpassen:&lt;br /&gt;
&lt;br /&gt;
 $ nano /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/conf/trac.ini&lt;br /&gt;
&lt;br /&gt;
Nehmen wir an, dass wir Plugins nach &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugins&#039;&#039; installieren wollen.&lt;br /&gt;
&lt;br /&gt;
 [inherit]&lt;br /&gt;
 plugins_dir = /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugins&lt;br /&gt;
&lt;br /&gt;
Trac-Plugins werden mithilfe der Python [http://peak.telecommunity.com/DevCenter/setuptools Setuptools] installiert. Damit das funktioniert, muss noch die Umgebungsvariable PYTHONPATH angepasst werden. &lt;br /&gt;
&lt;br /&gt;
 nano /home/&amp;lt;user&amp;gt;/.bashrc&lt;br /&gt;
&lt;br /&gt;
Hier muss am Ende folgendes eingefügt werden:&lt;br /&gt;
&lt;br /&gt;
 PYTHONPATH=${PYTHONPATH}://home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugins&lt;br /&gt;
&lt;br /&gt;
Danach muss man sich aus und neu einloggen!&lt;br /&gt;
&lt;br /&gt;
Danach können Plugins mit dem folgendem Kommando installiert werden:&lt;br /&gt;
&lt;br /&gt;
 easy_install --install-dir /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugins &amp;lt;plugin&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wobei &amp;lt;plugin&amp;gt; die URL des Plugins sein muss.&lt;br /&gt;
&lt;br /&gt;
==== AccountManager-Plugin installieren ====&lt;br /&gt;
Mit folgendem Kommando wird das AccountManager-Plugin installiert.&lt;br /&gt;
&lt;br /&gt;
 easy_install --install-dir /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugins/ http://trac-hacks.org/svn/accountmanagerplugin/trunk&lt;br /&gt;
&lt;br /&gt;
==== AccountManager-Plugin konfigurieren ====&lt;br /&gt;
Um dass AccountManager-Plugin zu verwenden, muss es noch konfiguriert werden. Folgendes muss daher an die Trac-Konfigurationsdatei angefügt werden:&lt;br /&gt;
&lt;br /&gt;
 [components]&lt;br /&gt;
&lt;br /&gt;
Default-Login-Komponente deaktivieren&lt;br /&gt;
&lt;br /&gt;
 trac.web.auth.loginmodule = disabled&lt;br /&gt;
&lt;br /&gt;
AccountManager Login-Komponente aktivieren&lt;br /&gt;
&lt;br /&gt;
 acct_mgr.web_ui.loginmodule = enabled&lt;br /&gt;
&lt;br /&gt;
Passwörter werden im htpasswd-Format abgelegt&lt;br /&gt;
&lt;br /&gt;
 acct_mgr.htfile.htpasswdstore = enabled&lt;br /&gt;
&lt;br /&gt;
Administrations-Seite aktivieren&lt;br /&gt;
&lt;br /&gt;
 acct_mgr.admin.accountmanageradminpage = enabled&lt;br /&gt;
&lt;br /&gt;
 [account-manager]&lt;br /&gt;
&lt;br /&gt;
Passwörter liegen im htpasswd-Format vor&lt;br /&gt;
&lt;br /&gt;
 password_store = HtPasswdStore&lt;br /&gt;
&lt;br /&gt;
Pfad zur htpasswd-Datei&lt;br /&gt;
&lt;br /&gt;
 password_file = /home/&amp;lt;user&amp;gt;/path/to/passwd&lt;br /&gt;
&lt;br /&gt;
Danach sieht die Konfiguration folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
 [components]&lt;br /&gt;
 trac.web.auth.loginmodule = disabled&lt;br /&gt;
 acct_mgr.web_ui.loginmodule = enabled&lt;br /&gt;
 acct_mgr.htfile.htpasswdstore = enabled&lt;br /&gt;
 acct_mgr.admin.accountmanageradminpage = enabled&lt;br /&gt;
 &lt;br /&gt;
 [account-manager]&lt;br /&gt;
 password_store = HtPasswdStore&lt;br /&gt;
 password_file = /home/&amp;lt;user&amp;gt;/path/to/passwd&lt;br /&gt;
&lt;br /&gt;
Nun kann man sich mit einem Benutzer anmelden, der in &#039;&#039;/home/&amp;lt;user&amp;gt;/path/to/passwd&#039;&#039; definiert ist, anmelden.&lt;br /&gt;
&lt;br /&gt;
==== Benutzer zum Administrator machen ====&lt;br /&gt;
Damit ein Benutzer zum Administrator wird, müssen er die Rolle &#039;&#039;TRAC_ADMIN&#039;&#039; haben. Dazu verwenden wir wieder das &#039;&#039;trac-admin&#039;&#039; Kommandozeilen-Werkzeug:&lt;br /&gt;
&lt;br /&gt;
 trac-admin /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac permission add &amp;lt;username&amp;gt; TRAC_ADMIN&lt;br /&gt;
&lt;br /&gt;
=== Mail-Konfiguration ===&lt;br /&gt;
&lt;br /&gt;
Trac versendet Emails über neue und geänderte Tickets. Damit das funktioniert, müssen in der &#039;&#039;notification&#039;&#039;-Sektion einige Einstellungen gemacht werden:&lt;br /&gt;
&lt;br /&gt;
 [notification]&lt;br /&gt;
 smtp_port = 25&lt;br /&gt;
 smtp_server = localhost&lt;br /&gt;
 smtp_from = no-reply@trac.host.com&lt;br /&gt;
 smtp_always_bcc = owner@project.com&lt;br /&gt;
 smtp_enabled = true&lt;br /&gt;
 smtp_replyto = email@trac.host.com&lt;br /&gt;
&lt;br /&gt;
Die meisten der Optionen sind selbsterklärend, &#039;&#039;smtp_always_bcc&#039;&#039; sendet standardmäßig eine Benachrichtigung über jede Ticket-Änderung an eine Standard-Adresse. Dies ist z.B. hilfreich, wenn der Projektbesitzer alles mitbekommen möchte und sich der Ticket-Traffic in Grenzen hält.&lt;br /&gt;
&lt;br /&gt;
=== Ticket Workflow ===&lt;br /&gt;
=== Visuelle Anpassungen ===&lt;br /&gt;
=== VCS Integration ===&lt;br /&gt;
==== Subversion ====&lt;br /&gt;
siehe [[Subversion]]&lt;/div&gt;</summary>
		<author><name>DelphiN</name></author>
	</entry>
	<entry>
		<id>https://wiki.schokokeks.org/wiki/index.php?title=Trac&amp;diff=8860</id>
		<title>Trac</title>
		<link rel="alternate" type="text/html" href="https://wiki.schokokeks.org/wiki/index.php?title=Trac&amp;diff=8860"/>
		<updated>2009-10-24T20:16:37Z</updated>

		<summary type="html">&lt;p&gt;DelphiN: /* Exkurs: Eigene Plugins installieren und verwenden */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung ==&lt;br /&gt;
[http://trac.edgewall.org/ 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.&lt;br /&gt;
&lt;br /&gt;
Die Installation von Trac unterscheidet sich prinzipiell von der Installation üblicher PHP/MySQL Applikationen, weshalb sie hier genauer ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
=== Technische Vorraussetzungen ===&lt;br /&gt;
Wir gehen im Folgenden davon aus, dass &#039;&#039;trac.host.com&#039;&#039; über das [https://config.schokokeks.org/ Konfigurations-Interface] konfiguriert ist und Das &#039;&#039;htdocs&#039;&#039;-Verzeichnis in /home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs liegt.&lt;br /&gt;
&lt;br /&gt;
Trac selbst ist bereits auf dem Server installiert. Derzeitig liegt es in der Version 0.11 vor.&lt;br /&gt;
&lt;br /&gt;
Wenn MySQL als RDBMS verwendet werden soll, muss eine MySQL-Datenbank verfügbar sein. Diese lässt sich ebenso über die Konfigurations-Maske anlegen.&lt;br /&gt;
&lt;br /&gt;
== Trac installieren ==&lt;br /&gt;
=== Trac-Umgebung aufsetzen ===&lt;br /&gt;
Trac wird mit einem Kommandozeilen-Werkzeug &#039;&#039;trac-admin&#039;&#039; ausgeliefert. Mit &#039;&#039;trac-admin&#039;&#039; lassen sich alle administrativen Aufgaben auch von der Kommandozeile erledigen.&lt;br /&gt;
&lt;br /&gt;
==== Verzeichnis auswählen ====&lt;br /&gt;
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 &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== RDBMS auswählen ====&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==== Trac-Umgebung initialisieren ====&lt;br /&gt;
Um Trac zu initialisieren, verwenden wir das Kommandozeilen-Werkzeug und führen &#039;&#039;trac-admin /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac initenv&#039;&#039; aus. &#039;&#039;initenv&#039;&#039; führt uns interaktiv durch die Installation.&lt;br /&gt;
&lt;br /&gt;
===== Projektname festlegen =====&lt;br /&gt;
&lt;br /&gt;
 $ trac-admin /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac initenv&lt;br /&gt;
 Creating a new Trac environment at /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac&lt;br /&gt;
 &lt;br /&gt;
 Trac will first ask a few questions about your environment &lt;br /&gt;
 in order to initalize and prepare the project database.&lt;br /&gt;
 &lt;br /&gt;
  Please enter the name of your project.&lt;br /&gt;
  This name will be used in page titles and descriptions.&lt;br /&gt;
 &lt;br /&gt;
 Project Name [My Project]&amp;gt; Mein Projektname&lt;br /&gt;
&lt;br /&gt;
Der Projektname kann beliebig vergeben werden und kann später editiert werden. Geben Sie einen Projektname an und bestätigen diesen mit der Eingabetaste.&lt;br /&gt;
&lt;br /&gt;
===== Datenbankverbindung angeben =====&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
  Please specify the connection string for the database to use.&lt;br /&gt;
  By default, a local SQLite database is created in the environment &lt;br /&gt;
  directory. It is also possible to use an already existing &lt;br /&gt;
  PostgreSQL database (check the Trac documentation for the exact &lt;br /&gt;
  connection string syntax).&lt;br /&gt;
 &lt;br /&gt;
 Database connection string [sqlite:db/trac.db]&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Wenn MySQL verwendet werden soll, sehen die Verbindungsinformationen ähnlich aus wie diese:&lt;br /&gt;
&lt;br /&gt;
 mysql://&amp;lt;user&amp;gt;:&amp;lt;password&amp;gt;@localhost/&amp;lt;datenbank name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Felder in spitzen Klammern sind natürlich durch die entsprechenden Werte zu ersetzen.&lt;br /&gt;
&lt;br /&gt;
Wenn Trac die Datenbank-Verbindung akzeptiert und sich verbinden kann, wird das Trac-Schema angelegt.&lt;br /&gt;
&lt;br /&gt;
=====  VCS-Integration =====&lt;br /&gt;
 Please specify the type of version control system,&lt;br /&gt;
  By default, it will be svn.&lt;br /&gt;
 &lt;br /&gt;
  If you don&#039;t want to use Trac with version control integration, &lt;br /&gt;
  choose the default here and don&#039;t specify a repository directory. &lt;br /&gt;
  in the next question.&lt;br /&gt;
 &lt;br /&gt;
 Repository type [svn]&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Wenn Sie Subversion verwenden wollen, bestätigen sie diese Voreinstellung einfach mit der Eingabetaste. Die VCS-Integration kann später auch noch angepasst werden.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
  Please specify the absolute path to the version control &lt;br /&gt;
  repository, or leave it blank to use Trac without a repository.&lt;br /&gt;
  You can also set the repository location later.&lt;br /&gt;
 &lt;br /&gt;
 Path to repository [/path/to/repos]&amp;gt; /home/&amp;lt;user&amp;gt;/subversion/svn.host.com/repositories/&amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das war&#039;s auch schon, nach der Bestätigung des Repository-Pfades sollten Sie eine Meldung ähnlich zu dieser erhalten:&lt;br /&gt;
&lt;br /&gt;
 Project environment for &#039;My Project&#039; created.&lt;br /&gt;
 &lt;br /&gt;
 You may now configure the environment by editing the file:&lt;br /&gt;
 &lt;br /&gt;
   /home/lars/websites/projects.usrportage.de/trac/portage-mod-jabber/conf/trac.ini&lt;br /&gt;
 &lt;br /&gt;
 If you&#039;d like to take this new project environment for a test drive,&lt;br /&gt;
 try running the Trac standalone web server `tracd`:&lt;br /&gt;
 &lt;br /&gt;
   tracd --port 8000 /home/lars/websites/projects.usrportage.de/trac/portage-mod-jabber&lt;br /&gt;
 &lt;br /&gt;
 Then point your browser to http://localhost:8000/portage-mod-jabber.&lt;br /&gt;
 There you can also browse the documentation for your installed&lt;br /&gt;
 version of Trac, including information on further setup (such as&lt;br /&gt;
 deploying Trac to a real web server).&lt;br /&gt;
 &lt;br /&gt;
 The latest documentation can also always be found on the project&lt;br /&gt;
 website:&lt;br /&gt;
 &lt;br /&gt;
   http://trac.edgewall.org/&lt;br /&gt;
 &lt;br /&gt;
 Congratulations!&lt;br /&gt;
&lt;br /&gt;
==== Trac im Web verfügbar machen ====&lt;br /&gt;
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 &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs&#039;&#039; verfügbar. Wir kopieren dazu &#039;&#039;/usr/share/webapps/trac/0.11/hostroot/cgi-bin/trac.fcgi&#039;&#039; nach &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs/index.fcgi&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 cp /usr/share/webapps/trac/0.11/hostroot/cgi-bin/trac.fcgi /home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs/index.fcgi&lt;br /&gt;
&lt;br /&gt;
===== TRAC_ENV path =====&lt;br /&gt;
Nun muss dem FastCGI-Endpoint noch bekannt gegeben werden, welche Trac-Umgebung der ausliefern soll. Dazu müssen wir die Datei &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/htdocs/index.fcgi&#039;&#039; editieren. &lt;br /&gt;
&lt;br /&gt;
 $ nano /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/htdocs/index.fcgi&lt;br /&gt;
&lt;br /&gt;
Diese sieht so aus:&lt;br /&gt;
&lt;br /&gt;
 try:&lt;br /&gt;
     from trac.web import fcgi_frontend&lt;br /&gt;
     fcgi_frontend.run()&lt;br /&gt;
 except SystemExit:&lt;br /&gt;
     raise&lt;br /&gt;
 except Exception, e:&lt;br /&gt;
     print &#039;Content-Type: text/plain\r\n\r\n&#039;,&lt;br /&gt;
     print &#039;Oops...&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print &#039;Trac detected an internal error:&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print e&lt;br /&gt;
     print&lt;br /&gt;
     import traceback&lt;br /&gt;
     import StringIO&lt;br /&gt;
     tb = StringIO.StringIO()&lt;br /&gt;
     traceback.print_exc(file=tb)&lt;br /&gt;
     print tb.getvalue()&lt;br /&gt;
&lt;br /&gt;
Wir interessieren uns für den oberen Teil, vor dem import-Statement. Wir importieren das Python-Modul &#039;&#039;os&#039;&#039;, um die Environment-Variable &#039;&#039;TRAC_ENV&#039;&#039; setzen zu können. Der obere Teil muss also so aussehen:&lt;br /&gt;
&lt;br /&gt;
 try:&lt;br /&gt;
     import os&lt;br /&gt;
     os.environ[&#039;TRAC_ENV&#039;] = &#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac/&#039;&lt;br /&gt;
     from trac.web import fcgi_frontend&lt;br /&gt;
     fcgi_frontend.run()&lt;br /&gt;
 except SystemExit:&lt;br /&gt;
     raise&lt;br /&gt;
 except Exception, e:&lt;br /&gt;
     print &#039;Content-Type: text/plain\r\n\r\n&#039;,&lt;br /&gt;
     print &#039;Oops...&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print &#039;Trac detected an internal error:&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print e&lt;br /&gt;
     print&lt;br /&gt;
     import traceback&lt;br /&gt;
     import StringIO&lt;br /&gt;
     tb = StringIO.StringIO()&lt;br /&gt;
     traceback.print_exc(file=tb)&lt;br /&gt;
     print tb.getvalue()&lt;br /&gt;
&lt;br /&gt;
===== .htaccess =====&lt;br /&gt;
Neben der Anpassung der &#039;&#039;index.fcgi&#039;&#039; benötigen wir noch eine &#039;&#039;.htaccess&#039;&#039;-Datei um das Verhalten des Webservers zu beeinflussen. &lt;br /&gt;
&lt;br /&gt;
 $ nano /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
Erstmal müssen wir dafür sorgen, dass CGIs ausgeführt werden. Außerdem sorgt dafür, dass alle Anfragen auf das Script &#039;&#039;index.fcgi&#039;&#039; laufen:&lt;br /&gt;
&lt;br /&gt;
 Options +ExecCGI&lt;br /&gt;
 &amp;lt;br /&amp;gt;&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule ^$ %{REQUEST_URI}index.fcgi [R=301]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} !\.(png|css|fcgi|txt|jpe?g|gif|pdf|svg)$&lt;br /&gt;
 RewriteRule ^(.*)$ index.fcgi/$1 [L,QSA]&lt;br /&gt;
&lt;br /&gt;
Nach diesen letzten Anpassungung können Sie erstmals Trac unter http://trac.host.com/ aufrufen. Als nächster Schritt folgt nun die [[Trac#Trac_konfigurieren|Anpassung]] der frisch installierten Trac-Instanz, speziell die Einrichtung des Logins.&lt;br /&gt;
&lt;br /&gt;
== Trac konfigurieren ==&lt;br /&gt;
=== Login einrichten ===&lt;br /&gt;
&lt;br /&gt;
Der letzte fehlende Punkt um Trac nutzen zu können, ist der fehlende Login. Trac authentifiziert normalerweise über HTTP Authentication. Allerdings wäre dafür eine spezielle Apache-Konfiguration notwendig, was wir aber vermeiden möchten. Deshalb verwenden wir das [http://trac-hacks.org/wiki/AccountManagerPlugin AccountManager-plugin].&lt;br /&gt;
&lt;br /&gt;
==== Exkurs: Eigene Plugins installieren und verwenden ====&lt;br /&gt;
Um eigene Plugins installieren zu können, müssen wir die Direktive &#039;&#039;plugins_dir&#039;&#039; in der Sektion &#039;&#039;inherit&#039;&#039; in der &#039;&#039;&#039;conf/trac.ini&#039;&#039;&#039; anpassen:&lt;br /&gt;
&lt;br /&gt;
 $ nano /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/conf/trac.ini&lt;br /&gt;
&lt;br /&gt;
Nehmen wir an, dass wir Plugins nach &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugins&#039;&#039; installieren wollen.&lt;br /&gt;
&lt;br /&gt;
 [inherit]&lt;br /&gt;
 plugins_dir = /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugins&lt;br /&gt;
&lt;br /&gt;
Trac-Plugins werden mithilfe der Python [http://peak.telecommunity.com/DevCenter/setuptools Setuptools] installiert. Damit das funktioniert, muss noch die Umgebungsvariable PYTHONPATH angepasst werden. &lt;br /&gt;
&lt;br /&gt;
 nano /home/&amp;lt;user&amp;gt;/.bashrc&lt;br /&gt;
&lt;br /&gt;
Hier muss am Ende folgendes eingefügt werden:&lt;br /&gt;
&lt;br /&gt;
 PYTHONPATH=${PYTHONPATH}://home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugins&lt;br /&gt;
&lt;br /&gt;
Danach können Plugins mit dem folgendem Kommando installiert werden:&lt;br /&gt;
&lt;br /&gt;
 easy_install --install-dir /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugins &amp;lt;plugin&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wobei &amp;lt;plugin&amp;gt; die URL des Plugins sein muss.&lt;br /&gt;
&lt;br /&gt;
==== AccountManager-Plugin installieren ====&lt;br /&gt;
Mit folgendem Kommando wird das AccountManager-Plugin installiert.&lt;br /&gt;
&lt;br /&gt;
 easy_install --install-dir /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugins/ http://trac-hacks.org/svn/accountmanagerplugin/trunk&lt;br /&gt;
&lt;br /&gt;
==== AccountManager-Plugin konfigurieren ====&lt;br /&gt;
Um dass AccountManager-Plugin zu verwenden, muss es noch konfiguriert werden. Folgendes muss daher an die Trac-Konfigurationsdatei angefügt werden:&lt;br /&gt;
&lt;br /&gt;
 [components]&lt;br /&gt;
&lt;br /&gt;
Default-Login-Komponente deaktivieren&lt;br /&gt;
&lt;br /&gt;
 trac.web.auth.loginmodule = disabled&lt;br /&gt;
&lt;br /&gt;
AccountManager Login-Komponente aktivieren&lt;br /&gt;
&lt;br /&gt;
 acct_mgr.web_ui.loginmodule = enabled&lt;br /&gt;
&lt;br /&gt;
Passwörter werden im htpasswd-Format abgelegt&lt;br /&gt;
&lt;br /&gt;
 acct_mgr.htfile.htpasswdstore = enabled&lt;br /&gt;
&lt;br /&gt;
Administrations-Seite aktivieren&lt;br /&gt;
&lt;br /&gt;
 acct_mgr.admin.accountmanageradminpage = enabled&lt;br /&gt;
&lt;br /&gt;
 [account-manager]&lt;br /&gt;
&lt;br /&gt;
Passwörter liegen im htpasswd-Format vor&lt;br /&gt;
&lt;br /&gt;
 password_store = HtPasswdStore&lt;br /&gt;
&lt;br /&gt;
Pfad zur htpasswd-Datei&lt;br /&gt;
&lt;br /&gt;
 password_file = /home/&amp;lt;user&amp;gt;/path/to/passwd&lt;br /&gt;
&lt;br /&gt;
Danach sieht die Konfiguration folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
 [components]&lt;br /&gt;
 trac.web.auth.loginmodule = disabled&lt;br /&gt;
 acct_mgr.web_ui.loginmodule = enabled&lt;br /&gt;
 acct_mgr.htfile.htpasswdstore = enabled&lt;br /&gt;
 acct_mgr.admin.accountmanageradminpage = enabled&lt;br /&gt;
 &lt;br /&gt;
 [account-manager]&lt;br /&gt;
 password_store = HtPasswdStore&lt;br /&gt;
 password_file = /home/&amp;lt;user&amp;gt;/path/to/passwd&lt;br /&gt;
&lt;br /&gt;
Nun kann man sich mit einem Benutzer anmelden, der in &#039;&#039;/home/&amp;lt;user&amp;gt;/path/to/passwd&#039;&#039; definiert ist, anmelden.&lt;br /&gt;
&lt;br /&gt;
==== Benutzer zum Administrator machen ====&lt;br /&gt;
Damit ein Benutzer zum Administrator wird, müssen er die Rolle &#039;&#039;TRAC_ADMIN&#039;&#039; haben. Dazu verwenden wir wieder das &#039;&#039;trac-admin&#039;&#039; Kommandozeilen-Werkzeug:&lt;br /&gt;
&lt;br /&gt;
 trac-admin /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac permission add &amp;lt;username&amp;gt; TRAC_ADMIN&lt;br /&gt;
&lt;br /&gt;
=== Mail-Konfiguration ===&lt;br /&gt;
&lt;br /&gt;
Trac versendet Emails über neue und geänderte Tickets. Damit das funktioniert, müssen in der &#039;&#039;notification&#039;&#039;-Sektion einige Einstellungen gemacht werden:&lt;br /&gt;
&lt;br /&gt;
 [notification]&lt;br /&gt;
 smtp_port = 25&lt;br /&gt;
 smtp_server = localhost&lt;br /&gt;
 smtp_from = no-reply@trac.host.com&lt;br /&gt;
 smtp_always_bcc = owner@project.com&lt;br /&gt;
 smtp_enabled = true&lt;br /&gt;
 smtp_replyto = email@trac.host.com&lt;br /&gt;
&lt;br /&gt;
Die meisten der Optionen sind selbsterklärend, &#039;&#039;smtp_always_bcc&#039;&#039; sendet standardmäßig eine Benachrichtigung über jede Ticket-Änderung an eine Standard-Adresse. Dies ist z.B. hilfreich, wenn der Projektbesitzer alles mitbekommen möchte und sich der Ticket-Traffic in Grenzen hält.&lt;br /&gt;
&lt;br /&gt;
=== Ticket Workflow ===&lt;br /&gt;
=== Visuelle Anpassungen ===&lt;br /&gt;
=== VCS Integration ===&lt;br /&gt;
==== Subversion ====&lt;br /&gt;
siehe [[Subversion]]&lt;/div&gt;</summary>
		<author><name>DelphiN</name></author>
	</entry>
	<entry>
		<id>https://wiki.schokokeks.org/wiki/index.php?title=Trac&amp;diff=8859</id>
		<title>Trac</title>
		<link rel="alternate" type="text/html" href="https://wiki.schokokeks.org/wiki/index.php?title=Trac&amp;diff=8859"/>
		<updated>2009-10-24T20:09:23Z</updated>

		<summary type="html">&lt;p&gt;DelphiN: /* AccountManager-Plugin installieren */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung ==&lt;br /&gt;
[http://trac.edgewall.org/ 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.&lt;br /&gt;
&lt;br /&gt;
Die Installation von Trac unterscheidet sich prinzipiell von der Installation üblicher PHP/MySQL Applikationen, weshalb sie hier genauer ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
=== Technische Vorraussetzungen ===&lt;br /&gt;
Wir gehen im Folgenden davon aus, dass &#039;&#039;trac.host.com&#039;&#039; über das [https://config.schokokeks.org/ Konfigurations-Interface] konfiguriert ist und Das &#039;&#039;htdocs&#039;&#039;-Verzeichnis in /home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs liegt.&lt;br /&gt;
&lt;br /&gt;
Trac selbst ist bereits auf dem Server installiert. Derzeitig liegt es in der Version 0.11 vor.&lt;br /&gt;
&lt;br /&gt;
Wenn MySQL als RDBMS verwendet werden soll, muss eine MySQL-Datenbank verfügbar sein. Diese lässt sich ebenso über die Konfigurations-Maske anlegen.&lt;br /&gt;
&lt;br /&gt;
== Trac installieren ==&lt;br /&gt;
=== Trac-Umgebung aufsetzen ===&lt;br /&gt;
Trac wird mit einem Kommandozeilen-Werkzeug &#039;&#039;trac-admin&#039;&#039; ausgeliefert. Mit &#039;&#039;trac-admin&#039;&#039; lassen sich alle administrativen Aufgaben auch von der Kommandozeile erledigen.&lt;br /&gt;
&lt;br /&gt;
==== Verzeichnis auswählen ====&lt;br /&gt;
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 &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== RDBMS auswählen ====&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==== Trac-Umgebung initialisieren ====&lt;br /&gt;
Um Trac zu initialisieren, verwenden wir das Kommandozeilen-Werkzeug und führen &#039;&#039;trac-admin /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac initenv&#039;&#039; aus. &#039;&#039;initenv&#039;&#039; führt uns interaktiv durch die Installation.&lt;br /&gt;
&lt;br /&gt;
===== Projektname festlegen =====&lt;br /&gt;
&lt;br /&gt;
 $ trac-admin /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac initenv&lt;br /&gt;
 Creating a new Trac environment at /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac&lt;br /&gt;
 &lt;br /&gt;
 Trac will first ask a few questions about your environment &lt;br /&gt;
 in order to initalize and prepare the project database.&lt;br /&gt;
 &lt;br /&gt;
  Please enter the name of your project.&lt;br /&gt;
  This name will be used in page titles and descriptions.&lt;br /&gt;
 &lt;br /&gt;
 Project Name [My Project]&amp;gt; Mein Projektname&lt;br /&gt;
&lt;br /&gt;
Der Projektname kann beliebig vergeben werden und kann später editiert werden. Geben Sie einen Projektname an und bestätigen diesen mit der Eingabetaste.&lt;br /&gt;
&lt;br /&gt;
===== Datenbankverbindung angeben =====&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
  Please specify the connection string for the database to use.&lt;br /&gt;
  By default, a local SQLite database is created in the environment &lt;br /&gt;
  directory. It is also possible to use an already existing &lt;br /&gt;
  PostgreSQL database (check the Trac documentation for the exact &lt;br /&gt;
  connection string syntax).&lt;br /&gt;
 &lt;br /&gt;
 Database connection string [sqlite:db/trac.db]&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Wenn MySQL verwendet werden soll, sehen die Verbindungsinformationen ähnlich aus wie diese:&lt;br /&gt;
&lt;br /&gt;
 mysql://&amp;lt;user&amp;gt;:&amp;lt;password&amp;gt;@localhost/&amp;lt;datenbank name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Felder in spitzen Klammern sind natürlich durch die entsprechenden Werte zu ersetzen.&lt;br /&gt;
&lt;br /&gt;
Wenn Trac die Datenbank-Verbindung akzeptiert und sich verbinden kann, wird das Trac-Schema angelegt.&lt;br /&gt;
&lt;br /&gt;
=====  VCS-Integration =====&lt;br /&gt;
 Please specify the type of version control system,&lt;br /&gt;
  By default, it will be svn.&lt;br /&gt;
 &lt;br /&gt;
  If you don&#039;t want to use Trac with version control integration, &lt;br /&gt;
  choose the default here and don&#039;t specify a repository directory. &lt;br /&gt;
  in the next question.&lt;br /&gt;
 &lt;br /&gt;
 Repository type [svn]&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Wenn Sie Subversion verwenden wollen, bestätigen sie diese Voreinstellung einfach mit der Eingabetaste. Die VCS-Integration kann später auch noch angepasst werden.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
  Please specify the absolute path to the version control &lt;br /&gt;
  repository, or leave it blank to use Trac without a repository.&lt;br /&gt;
  You can also set the repository location later.&lt;br /&gt;
 &lt;br /&gt;
 Path to repository [/path/to/repos]&amp;gt; /home/&amp;lt;user&amp;gt;/subversion/svn.host.com/repositories/&amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das war&#039;s auch schon, nach der Bestätigung des Repository-Pfades sollten Sie eine Meldung ähnlich zu dieser erhalten:&lt;br /&gt;
&lt;br /&gt;
 Project environment for &#039;My Project&#039; created.&lt;br /&gt;
 &lt;br /&gt;
 You may now configure the environment by editing the file:&lt;br /&gt;
 &lt;br /&gt;
   /home/lars/websites/projects.usrportage.de/trac/portage-mod-jabber/conf/trac.ini&lt;br /&gt;
 &lt;br /&gt;
 If you&#039;d like to take this new project environment for a test drive,&lt;br /&gt;
 try running the Trac standalone web server `tracd`:&lt;br /&gt;
 &lt;br /&gt;
   tracd --port 8000 /home/lars/websites/projects.usrportage.de/trac/portage-mod-jabber&lt;br /&gt;
 &lt;br /&gt;
 Then point your browser to http://localhost:8000/portage-mod-jabber.&lt;br /&gt;
 There you can also browse the documentation for your installed&lt;br /&gt;
 version of Trac, including information on further setup (such as&lt;br /&gt;
 deploying Trac to a real web server).&lt;br /&gt;
 &lt;br /&gt;
 The latest documentation can also always be found on the project&lt;br /&gt;
 website:&lt;br /&gt;
 &lt;br /&gt;
   http://trac.edgewall.org/&lt;br /&gt;
 &lt;br /&gt;
 Congratulations!&lt;br /&gt;
&lt;br /&gt;
==== Trac im Web verfügbar machen ====&lt;br /&gt;
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 &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs&#039;&#039; verfügbar. Wir kopieren dazu &#039;&#039;/usr/share/webapps/trac/0.11/hostroot/cgi-bin/trac.fcgi&#039;&#039; nach &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs/index.fcgi&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 cp /usr/share/webapps/trac/0.11/hostroot/cgi-bin/trac.fcgi /home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs/index.fcgi&lt;br /&gt;
&lt;br /&gt;
===== TRAC_ENV path =====&lt;br /&gt;
Nun muss dem FastCGI-Endpoint noch bekannt gegeben werden, welche Trac-Umgebung der ausliefern soll. Dazu müssen wir die Datei &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/htdocs/index.fcgi&#039;&#039; editieren. &lt;br /&gt;
&lt;br /&gt;
 $ nano /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/htdocs/index.fcgi&lt;br /&gt;
&lt;br /&gt;
Diese sieht so aus:&lt;br /&gt;
&lt;br /&gt;
 try:&lt;br /&gt;
     from trac.web import fcgi_frontend&lt;br /&gt;
     fcgi_frontend.run()&lt;br /&gt;
 except SystemExit:&lt;br /&gt;
     raise&lt;br /&gt;
 except Exception, e:&lt;br /&gt;
     print &#039;Content-Type: text/plain\r\n\r\n&#039;,&lt;br /&gt;
     print &#039;Oops...&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print &#039;Trac detected an internal error:&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print e&lt;br /&gt;
     print&lt;br /&gt;
     import traceback&lt;br /&gt;
     import StringIO&lt;br /&gt;
     tb = StringIO.StringIO()&lt;br /&gt;
     traceback.print_exc(file=tb)&lt;br /&gt;
     print tb.getvalue()&lt;br /&gt;
&lt;br /&gt;
Wir interessieren uns für den oberen Teil, vor dem import-Statement. Wir importieren das Python-Modul &#039;&#039;os&#039;&#039;, um die Environment-Variable &#039;&#039;TRAC_ENV&#039;&#039; setzen zu können. Der obere Teil muss also so aussehen:&lt;br /&gt;
&lt;br /&gt;
 try:&lt;br /&gt;
     import os&lt;br /&gt;
     os.environ[&#039;TRAC_ENV&#039;] = &#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac/&#039;&lt;br /&gt;
     from trac.web import fcgi_frontend&lt;br /&gt;
     fcgi_frontend.run()&lt;br /&gt;
 except SystemExit:&lt;br /&gt;
     raise&lt;br /&gt;
 except Exception, e:&lt;br /&gt;
     print &#039;Content-Type: text/plain\r\n\r\n&#039;,&lt;br /&gt;
     print &#039;Oops...&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print &#039;Trac detected an internal error:&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print e&lt;br /&gt;
     print&lt;br /&gt;
     import traceback&lt;br /&gt;
     import StringIO&lt;br /&gt;
     tb = StringIO.StringIO()&lt;br /&gt;
     traceback.print_exc(file=tb)&lt;br /&gt;
     print tb.getvalue()&lt;br /&gt;
&lt;br /&gt;
===== .htaccess =====&lt;br /&gt;
Neben der Anpassung der &#039;&#039;index.fcgi&#039;&#039; benötigen wir noch eine &#039;&#039;.htaccess&#039;&#039;-Datei um das Verhalten des Webservers zu beeinflussen. &lt;br /&gt;
&lt;br /&gt;
 $ nano /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
Erstmal müssen wir dafür sorgen, dass CGIs ausgeführt werden. Außerdem sorgt dafür, dass alle Anfragen auf das Script &#039;&#039;index.fcgi&#039;&#039; laufen:&lt;br /&gt;
&lt;br /&gt;
 Options +ExecCGI&lt;br /&gt;
 &amp;lt;br /&amp;gt;&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule ^$ %{REQUEST_URI}index.fcgi [R=301]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} !\.(png|css|fcgi|txt|jpe?g|gif|pdf|svg)$&lt;br /&gt;
 RewriteRule ^(.*)$ index.fcgi/$1 [L,QSA]&lt;br /&gt;
&lt;br /&gt;
Nach diesen letzten Anpassungung können Sie erstmals Trac unter http://trac.host.com/ aufrufen. Als nächster Schritt folgt nun die [[Trac#Trac_konfigurieren|Anpassung]] der frisch installierten Trac-Instanz, speziell die Einrichtung des Logins.&lt;br /&gt;
&lt;br /&gt;
== Trac konfigurieren ==&lt;br /&gt;
=== Login einrichten ===&lt;br /&gt;
&lt;br /&gt;
Der letzte fehlende Punkt um Trac nutzen zu können, ist der fehlende Login. Trac authentifiziert normalerweise über HTTP Authentication. Allerdings wäre dafür eine spezielle Apache-Konfiguration notwendig, was wir aber vermeiden möchten. Deshalb verwenden wir das [http://trac-hacks.org/wiki/AccountManagerPlugin AccountManager-plugin].&lt;br /&gt;
&lt;br /&gt;
==== Exkurs: Eigene Plugins installieren und verwenden ====&lt;br /&gt;
Um eigene Plugins installieren zu können, müssen wir die Direktive &#039;&#039;plugins_dir&#039;&#039; in der Sektion &#039;&#039;inherit&#039;&#039; in der &#039;&#039;&#039;conf/trac.ini&#039;&#039;&#039; anpassen:&lt;br /&gt;
&lt;br /&gt;
 $ nano /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/conf/trac.ini&lt;br /&gt;
&lt;br /&gt;
Nehmen wir an, dass wir Plugins nach &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugins&#039;&#039; installieren wollen.&lt;br /&gt;
&lt;br /&gt;
 [inherit]&lt;br /&gt;
 plugins_dir = /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugins&lt;br /&gt;
&lt;br /&gt;
Trac-Plugins werden mithilfe der Python [http://peak.telecommunity.com/DevCenter/setuptools Setuptools] installiert. Damit das funktioniert, muss noch die Umgebungsvariable PYTHONPATH angepasst werden. &lt;br /&gt;
&lt;br /&gt;
 nano /home/&amp;lt;user&amp;gt;/.bashrc&lt;br /&gt;
&lt;br /&gt;
Hier muss am Ende folgendes eingefügt werden:&lt;br /&gt;
&lt;br /&gt;
 PYTHONPATH=${PYTHONPATH}://home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugin&lt;br /&gt;
&lt;br /&gt;
Danach können Plugins mit dem folgendem Kommando installiert werden:&lt;br /&gt;
&lt;br /&gt;
 easy_install --install-dir /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugin &amp;lt;plugin&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wobei &amp;lt;plugin&amp;gt; die URL des Plugins sein muss.&lt;br /&gt;
&lt;br /&gt;
==== AccountManager-Plugin installieren ====&lt;br /&gt;
Mit folgendem Kommando wird das AccountManager-Plugin installiert.&lt;br /&gt;
&lt;br /&gt;
 easy_install --install-dir /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugins/ http://trac-hacks.org/svn/accountmanagerplugin/trunk&lt;br /&gt;
&lt;br /&gt;
==== AccountManager-Plugin konfigurieren ====&lt;br /&gt;
Um dass AccountManager-Plugin zu verwenden, muss es noch konfiguriert werden. Folgendes muss daher an die Trac-Konfigurationsdatei angefügt werden:&lt;br /&gt;
&lt;br /&gt;
 [components]&lt;br /&gt;
&lt;br /&gt;
Default-Login-Komponente deaktivieren&lt;br /&gt;
&lt;br /&gt;
 trac.web.auth.loginmodule = disabled&lt;br /&gt;
&lt;br /&gt;
AccountManager Login-Komponente aktivieren&lt;br /&gt;
&lt;br /&gt;
 acct_mgr.web_ui.loginmodule = enabled&lt;br /&gt;
&lt;br /&gt;
Passwörter werden im htpasswd-Format abgelegt&lt;br /&gt;
&lt;br /&gt;
 acct_mgr.htfile.htpasswdstore = enabled&lt;br /&gt;
&lt;br /&gt;
Administrations-Seite aktivieren&lt;br /&gt;
&lt;br /&gt;
 acct_mgr.admin.accountmanageradminpage = enabled&lt;br /&gt;
&lt;br /&gt;
 [account-manager]&lt;br /&gt;
&lt;br /&gt;
Passwörter liegen im htpasswd-Format vor&lt;br /&gt;
&lt;br /&gt;
 password_store = HtPasswdStore&lt;br /&gt;
&lt;br /&gt;
Pfad zur htpasswd-Datei&lt;br /&gt;
&lt;br /&gt;
 password_file = /home/&amp;lt;user&amp;gt;/path/to/passwd&lt;br /&gt;
&lt;br /&gt;
Danach sieht die Konfiguration folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
 [components]&lt;br /&gt;
 trac.web.auth.loginmodule = disabled&lt;br /&gt;
 acct_mgr.web_ui.loginmodule = enabled&lt;br /&gt;
 acct_mgr.htfile.htpasswdstore = enabled&lt;br /&gt;
 acct_mgr.admin.accountmanageradminpage = enabled&lt;br /&gt;
 &lt;br /&gt;
 [account-manager]&lt;br /&gt;
 password_store = HtPasswdStore&lt;br /&gt;
 password_file = /home/&amp;lt;user&amp;gt;/path/to/passwd&lt;br /&gt;
&lt;br /&gt;
Nun kann man sich mit einem Benutzer anmelden, der in &#039;&#039;/home/&amp;lt;user&amp;gt;/path/to/passwd&#039;&#039; definiert ist, anmelden.&lt;br /&gt;
&lt;br /&gt;
==== Benutzer zum Administrator machen ====&lt;br /&gt;
Damit ein Benutzer zum Administrator wird, müssen er die Rolle &#039;&#039;TRAC_ADMIN&#039;&#039; haben. Dazu verwenden wir wieder das &#039;&#039;trac-admin&#039;&#039; Kommandozeilen-Werkzeug:&lt;br /&gt;
&lt;br /&gt;
 trac-admin /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac permission add &amp;lt;username&amp;gt; TRAC_ADMIN&lt;br /&gt;
&lt;br /&gt;
=== Mail-Konfiguration ===&lt;br /&gt;
&lt;br /&gt;
Trac versendet Emails über neue und geänderte Tickets. Damit das funktioniert, müssen in der &#039;&#039;notification&#039;&#039;-Sektion einige Einstellungen gemacht werden:&lt;br /&gt;
&lt;br /&gt;
 [notification]&lt;br /&gt;
 smtp_port = 25&lt;br /&gt;
 smtp_server = localhost&lt;br /&gt;
 smtp_from = no-reply@trac.host.com&lt;br /&gt;
 smtp_always_bcc = owner@project.com&lt;br /&gt;
 smtp_enabled = true&lt;br /&gt;
 smtp_replyto = email@trac.host.com&lt;br /&gt;
&lt;br /&gt;
Die meisten der Optionen sind selbsterklärend, &#039;&#039;smtp_always_bcc&#039;&#039; sendet standardmäßig eine Benachrichtigung über jede Ticket-Änderung an eine Standard-Adresse. Dies ist z.B. hilfreich, wenn der Projektbesitzer alles mitbekommen möchte und sich der Ticket-Traffic in Grenzen hält.&lt;br /&gt;
&lt;br /&gt;
=== Ticket Workflow ===&lt;br /&gt;
=== Visuelle Anpassungen ===&lt;br /&gt;
=== VCS Integration ===&lt;br /&gt;
==== Subversion ====&lt;br /&gt;
siehe [[Subversion]]&lt;/div&gt;</summary>
		<author><name>DelphiN</name></author>
	</entry>
	<entry>
		<id>https://wiki.schokokeks.org/wiki/index.php?title=Trac&amp;diff=8858</id>
		<title>Trac</title>
		<link rel="alternate" type="text/html" href="https://wiki.schokokeks.org/wiki/index.php?title=Trac&amp;diff=8858"/>
		<updated>2009-10-24T20:05:48Z</updated>

		<summary type="html">&lt;p&gt;DelphiN: /* Exkurs: Eigene Plugins installieren und verwenden */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung ==&lt;br /&gt;
[http://trac.edgewall.org/ 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.&lt;br /&gt;
&lt;br /&gt;
Die Installation von Trac unterscheidet sich prinzipiell von der Installation üblicher PHP/MySQL Applikationen, weshalb sie hier genauer ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
=== Technische Vorraussetzungen ===&lt;br /&gt;
Wir gehen im Folgenden davon aus, dass &#039;&#039;trac.host.com&#039;&#039; über das [https://config.schokokeks.org/ Konfigurations-Interface] konfiguriert ist und Das &#039;&#039;htdocs&#039;&#039;-Verzeichnis in /home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs liegt.&lt;br /&gt;
&lt;br /&gt;
Trac selbst ist bereits auf dem Server installiert. Derzeitig liegt es in der Version 0.11 vor.&lt;br /&gt;
&lt;br /&gt;
Wenn MySQL als RDBMS verwendet werden soll, muss eine MySQL-Datenbank verfügbar sein. Diese lässt sich ebenso über die Konfigurations-Maske anlegen.&lt;br /&gt;
&lt;br /&gt;
== Trac installieren ==&lt;br /&gt;
=== Trac-Umgebung aufsetzen ===&lt;br /&gt;
Trac wird mit einem Kommandozeilen-Werkzeug &#039;&#039;trac-admin&#039;&#039; ausgeliefert. Mit &#039;&#039;trac-admin&#039;&#039; lassen sich alle administrativen Aufgaben auch von der Kommandozeile erledigen.&lt;br /&gt;
&lt;br /&gt;
==== Verzeichnis auswählen ====&lt;br /&gt;
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 &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== RDBMS auswählen ====&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==== Trac-Umgebung initialisieren ====&lt;br /&gt;
Um Trac zu initialisieren, verwenden wir das Kommandozeilen-Werkzeug und führen &#039;&#039;trac-admin /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac initenv&#039;&#039; aus. &#039;&#039;initenv&#039;&#039; führt uns interaktiv durch die Installation.&lt;br /&gt;
&lt;br /&gt;
===== Projektname festlegen =====&lt;br /&gt;
&lt;br /&gt;
 $ trac-admin /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac initenv&lt;br /&gt;
 Creating a new Trac environment at /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac&lt;br /&gt;
 &lt;br /&gt;
 Trac will first ask a few questions about your environment &lt;br /&gt;
 in order to initalize and prepare the project database.&lt;br /&gt;
 &lt;br /&gt;
  Please enter the name of your project.&lt;br /&gt;
  This name will be used in page titles and descriptions.&lt;br /&gt;
 &lt;br /&gt;
 Project Name [My Project]&amp;gt; Mein Projektname&lt;br /&gt;
&lt;br /&gt;
Der Projektname kann beliebig vergeben werden und kann später editiert werden. Geben Sie einen Projektname an und bestätigen diesen mit der Eingabetaste.&lt;br /&gt;
&lt;br /&gt;
===== Datenbankverbindung angeben =====&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
  Please specify the connection string for the database to use.&lt;br /&gt;
  By default, a local SQLite database is created in the environment &lt;br /&gt;
  directory. It is also possible to use an already existing &lt;br /&gt;
  PostgreSQL database (check the Trac documentation for the exact &lt;br /&gt;
  connection string syntax).&lt;br /&gt;
 &lt;br /&gt;
 Database connection string [sqlite:db/trac.db]&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Wenn MySQL verwendet werden soll, sehen die Verbindungsinformationen ähnlich aus wie diese:&lt;br /&gt;
&lt;br /&gt;
 mysql://&amp;lt;user&amp;gt;:&amp;lt;password&amp;gt;@localhost/&amp;lt;datenbank name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Felder in spitzen Klammern sind natürlich durch die entsprechenden Werte zu ersetzen.&lt;br /&gt;
&lt;br /&gt;
Wenn Trac die Datenbank-Verbindung akzeptiert und sich verbinden kann, wird das Trac-Schema angelegt.&lt;br /&gt;
&lt;br /&gt;
=====  VCS-Integration =====&lt;br /&gt;
 Please specify the type of version control system,&lt;br /&gt;
  By default, it will be svn.&lt;br /&gt;
 &lt;br /&gt;
  If you don&#039;t want to use Trac with version control integration, &lt;br /&gt;
  choose the default here and don&#039;t specify a repository directory. &lt;br /&gt;
  in the next question.&lt;br /&gt;
 &lt;br /&gt;
 Repository type [svn]&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Wenn Sie Subversion verwenden wollen, bestätigen sie diese Voreinstellung einfach mit der Eingabetaste. Die VCS-Integration kann später auch noch angepasst werden.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
  Please specify the absolute path to the version control &lt;br /&gt;
  repository, or leave it blank to use Trac without a repository.&lt;br /&gt;
  You can also set the repository location later.&lt;br /&gt;
 &lt;br /&gt;
 Path to repository [/path/to/repos]&amp;gt; /home/&amp;lt;user&amp;gt;/subversion/svn.host.com/repositories/&amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das war&#039;s auch schon, nach der Bestätigung des Repository-Pfades sollten Sie eine Meldung ähnlich zu dieser erhalten:&lt;br /&gt;
&lt;br /&gt;
 Project environment for &#039;My Project&#039; created.&lt;br /&gt;
 &lt;br /&gt;
 You may now configure the environment by editing the file:&lt;br /&gt;
 &lt;br /&gt;
   /home/lars/websites/projects.usrportage.de/trac/portage-mod-jabber/conf/trac.ini&lt;br /&gt;
 &lt;br /&gt;
 If you&#039;d like to take this new project environment for a test drive,&lt;br /&gt;
 try running the Trac standalone web server `tracd`:&lt;br /&gt;
 &lt;br /&gt;
   tracd --port 8000 /home/lars/websites/projects.usrportage.de/trac/portage-mod-jabber&lt;br /&gt;
 &lt;br /&gt;
 Then point your browser to http://localhost:8000/portage-mod-jabber.&lt;br /&gt;
 There you can also browse the documentation for your installed&lt;br /&gt;
 version of Trac, including information on further setup (such as&lt;br /&gt;
 deploying Trac to a real web server).&lt;br /&gt;
 &lt;br /&gt;
 The latest documentation can also always be found on the project&lt;br /&gt;
 website:&lt;br /&gt;
 &lt;br /&gt;
   http://trac.edgewall.org/&lt;br /&gt;
 &lt;br /&gt;
 Congratulations!&lt;br /&gt;
&lt;br /&gt;
==== Trac im Web verfügbar machen ====&lt;br /&gt;
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 &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs&#039;&#039; verfügbar. Wir kopieren dazu &#039;&#039;/usr/share/webapps/trac/0.11/hostroot/cgi-bin/trac.fcgi&#039;&#039; nach &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs/index.fcgi&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 cp /usr/share/webapps/trac/0.11/hostroot/cgi-bin/trac.fcgi /home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs/index.fcgi&lt;br /&gt;
&lt;br /&gt;
===== TRAC_ENV path =====&lt;br /&gt;
Nun muss dem FastCGI-Endpoint noch bekannt gegeben werden, welche Trac-Umgebung der ausliefern soll. Dazu müssen wir die Datei &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/htdocs/index.fcgi&#039;&#039; editieren. &lt;br /&gt;
&lt;br /&gt;
 $ nano /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/htdocs/index.fcgi&lt;br /&gt;
&lt;br /&gt;
Diese sieht so aus:&lt;br /&gt;
&lt;br /&gt;
 try:&lt;br /&gt;
     from trac.web import fcgi_frontend&lt;br /&gt;
     fcgi_frontend.run()&lt;br /&gt;
 except SystemExit:&lt;br /&gt;
     raise&lt;br /&gt;
 except Exception, e:&lt;br /&gt;
     print &#039;Content-Type: text/plain\r\n\r\n&#039;,&lt;br /&gt;
     print &#039;Oops...&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print &#039;Trac detected an internal error:&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print e&lt;br /&gt;
     print&lt;br /&gt;
     import traceback&lt;br /&gt;
     import StringIO&lt;br /&gt;
     tb = StringIO.StringIO()&lt;br /&gt;
     traceback.print_exc(file=tb)&lt;br /&gt;
     print tb.getvalue()&lt;br /&gt;
&lt;br /&gt;
Wir interessieren uns für den oberen Teil, vor dem import-Statement. Wir importieren das Python-Modul &#039;&#039;os&#039;&#039;, um die Environment-Variable &#039;&#039;TRAC_ENV&#039;&#039; setzen zu können. Der obere Teil muss also so aussehen:&lt;br /&gt;
&lt;br /&gt;
 try:&lt;br /&gt;
     import os&lt;br /&gt;
     os.environ[&#039;TRAC_ENV&#039;] = &#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac/&#039;&lt;br /&gt;
     from trac.web import fcgi_frontend&lt;br /&gt;
     fcgi_frontend.run()&lt;br /&gt;
 except SystemExit:&lt;br /&gt;
     raise&lt;br /&gt;
 except Exception, e:&lt;br /&gt;
     print &#039;Content-Type: text/plain\r\n\r\n&#039;,&lt;br /&gt;
     print &#039;Oops...&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print &#039;Trac detected an internal error:&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print e&lt;br /&gt;
     print&lt;br /&gt;
     import traceback&lt;br /&gt;
     import StringIO&lt;br /&gt;
     tb = StringIO.StringIO()&lt;br /&gt;
     traceback.print_exc(file=tb)&lt;br /&gt;
     print tb.getvalue()&lt;br /&gt;
&lt;br /&gt;
===== .htaccess =====&lt;br /&gt;
Neben der Anpassung der &#039;&#039;index.fcgi&#039;&#039; benötigen wir noch eine &#039;&#039;.htaccess&#039;&#039;-Datei um das Verhalten des Webservers zu beeinflussen. &lt;br /&gt;
&lt;br /&gt;
 $ nano /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
Erstmal müssen wir dafür sorgen, dass CGIs ausgeführt werden. Außerdem sorgt dafür, dass alle Anfragen auf das Script &#039;&#039;index.fcgi&#039;&#039; laufen:&lt;br /&gt;
&lt;br /&gt;
 Options +ExecCGI&lt;br /&gt;
 &amp;lt;br /&amp;gt;&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule ^$ %{REQUEST_URI}index.fcgi [R=301]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} !\.(png|css|fcgi|txt|jpe?g|gif|pdf|svg)$&lt;br /&gt;
 RewriteRule ^(.*)$ index.fcgi/$1 [L,QSA]&lt;br /&gt;
&lt;br /&gt;
Nach diesen letzten Anpassungung können Sie erstmals Trac unter http://trac.host.com/ aufrufen. Als nächster Schritt folgt nun die [[Trac#Trac_konfigurieren|Anpassung]] der frisch installierten Trac-Instanz, speziell die Einrichtung des Logins.&lt;br /&gt;
&lt;br /&gt;
== Trac konfigurieren ==&lt;br /&gt;
=== Login einrichten ===&lt;br /&gt;
&lt;br /&gt;
Der letzte fehlende Punkt um Trac nutzen zu können, ist der fehlende Login. Trac authentifiziert normalerweise über HTTP Authentication. Allerdings wäre dafür eine spezielle Apache-Konfiguration notwendig, was wir aber vermeiden möchten. Deshalb verwenden wir das [http://trac-hacks.org/wiki/AccountManagerPlugin AccountManager-plugin].&lt;br /&gt;
&lt;br /&gt;
==== Exkurs: Eigene Plugins installieren und verwenden ====&lt;br /&gt;
Um eigene Plugins installieren zu können, müssen wir die Direktive &#039;&#039;plugins_dir&#039;&#039; in der Sektion &#039;&#039;inherit&#039;&#039; in der &#039;&#039;&#039;conf/trac.ini&#039;&#039;&#039; anpassen:&lt;br /&gt;
&lt;br /&gt;
 $ nano /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/conf/trac.ini&lt;br /&gt;
&lt;br /&gt;
Nehmen wir an, dass wir Plugins nach &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugins&#039;&#039; installieren wollen.&lt;br /&gt;
&lt;br /&gt;
 [inherit]&lt;br /&gt;
 plugins_dir = /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugins&lt;br /&gt;
&lt;br /&gt;
Trac-Plugins werden mithilfe der Python [http://peak.telecommunity.com/DevCenter/setuptools Setuptools] installiert. Damit das funktioniert, muss noch die Umgebungsvariable PYTHONPATH angepasst werden. &lt;br /&gt;
&lt;br /&gt;
 nano /home/&amp;lt;user&amp;gt;/.bashrc&lt;br /&gt;
&lt;br /&gt;
Hier muss am Ende folgendes eingefügt werden:&lt;br /&gt;
&lt;br /&gt;
 PYTHONPATH=${PYTHONPATH}://home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugin&lt;br /&gt;
&lt;br /&gt;
Danach können Plugins mit dem folgendem Kommando installiert werden:&lt;br /&gt;
&lt;br /&gt;
 easy_install --install-dir /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugin &amp;lt;plugin&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wobei &amp;lt;plugin&amp;gt; die URL des Plugins sein muss.&lt;br /&gt;
&lt;br /&gt;
==== AccountManager-Plugin installieren ====&lt;br /&gt;
Mit folgendem Kommando wird das AccountManager-Plugin installiert. &#039;&#039;/trunk&#039;&#039; ist die passende Version für Trac 0.11.&lt;br /&gt;
&lt;br /&gt;
 easy_install --install-dir /home/&amp;lt;user&amp;gt;/shared/trac http://trac-hacks.org/svn/accountmanagerplugin/trunk&lt;br /&gt;
&lt;br /&gt;
==== AccountManager-Plugin konfigurieren ====&lt;br /&gt;
Um dass AccountManager-Plugin zu verwenden, muss es noch konfiguriert werden. Folgendes muss daher an die Trac-Konfigurationsdatei angefügt werden:&lt;br /&gt;
&lt;br /&gt;
 [components]&lt;br /&gt;
&lt;br /&gt;
Default-Login-Komponente deaktivieren&lt;br /&gt;
&lt;br /&gt;
 trac.web.auth.loginmodule = disabled&lt;br /&gt;
&lt;br /&gt;
AccountManager Login-Komponente aktivieren&lt;br /&gt;
&lt;br /&gt;
 acct_mgr.web_ui.loginmodule = enabled&lt;br /&gt;
&lt;br /&gt;
Passwörter werden im htpasswd-Format abgelegt&lt;br /&gt;
&lt;br /&gt;
 acct_mgr.htfile.htpasswdstore = enabled&lt;br /&gt;
&lt;br /&gt;
Administrations-Seite aktivieren&lt;br /&gt;
&lt;br /&gt;
 acct_mgr.admin.accountmanageradminpage = enabled&lt;br /&gt;
&lt;br /&gt;
 [account-manager]&lt;br /&gt;
&lt;br /&gt;
Passwörter liegen im htpasswd-Format vor&lt;br /&gt;
&lt;br /&gt;
 password_store = HtPasswdStore&lt;br /&gt;
&lt;br /&gt;
Pfad zur htpasswd-Datei&lt;br /&gt;
&lt;br /&gt;
 password_file = /home/&amp;lt;user&amp;gt;/path/to/passwd&lt;br /&gt;
&lt;br /&gt;
Danach sieht die Konfiguration folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
 [components]&lt;br /&gt;
 trac.web.auth.loginmodule = disabled&lt;br /&gt;
 acct_mgr.web_ui.loginmodule = enabled&lt;br /&gt;
 acct_mgr.htfile.htpasswdstore = enabled&lt;br /&gt;
 acct_mgr.admin.accountmanageradminpage = enabled&lt;br /&gt;
 &lt;br /&gt;
 [account-manager]&lt;br /&gt;
 password_store = HtPasswdStore&lt;br /&gt;
 password_file = /home/&amp;lt;user&amp;gt;/path/to/passwd&lt;br /&gt;
&lt;br /&gt;
Nun kann man sich mit einem Benutzer anmelden, der in &#039;&#039;/home/&amp;lt;user&amp;gt;/path/to/passwd&#039;&#039; definiert ist, anmelden.&lt;br /&gt;
&lt;br /&gt;
==== Benutzer zum Administrator machen ====&lt;br /&gt;
Damit ein Benutzer zum Administrator wird, müssen er die Rolle &#039;&#039;TRAC_ADMIN&#039;&#039; haben. Dazu verwenden wir wieder das &#039;&#039;trac-admin&#039;&#039; Kommandozeilen-Werkzeug:&lt;br /&gt;
&lt;br /&gt;
 trac-admin /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac permission add &amp;lt;username&amp;gt; TRAC_ADMIN&lt;br /&gt;
&lt;br /&gt;
=== Mail-Konfiguration ===&lt;br /&gt;
&lt;br /&gt;
Trac versendet Emails über neue und geänderte Tickets. Damit das funktioniert, müssen in der &#039;&#039;notification&#039;&#039;-Sektion einige Einstellungen gemacht werden:&lt;br /&gt;
&lt;br /&gt;
 [notification]&lt;br /&gt;
 smtp_port = 25&lt;br /&gt;
 smtp_server = localhost&lt;br /&gt;
 smtp_from = no-reply@trac.host.com&lt;br /&gt;
 smtp_always_bcc = owner@project.com&lt;br /&gt;
 smtp_enabled = true&lt;br /&gt;
 smtp_replyto = email@trac.host.com&lt;br /&gt;
&lt;br /&gt;
Die meisten der Optionen sind selbsterklärend, &#039;&#039;smtp_always_bcc&#039;&#039; sendet standardmäßig eine Benachrichtigung über jede Ticket-Änderung an eine Standard-Adresse. Dies ist z.B. hilfreich, wenn der Projektbesitzer alles mitbekommen möchte und sich der Ticket-Traffic in Grenzen hält.&lt;br /&gt;
&lt;br /&gt;
=== Ticket Workflow ===&lt;br /&gt;
=== Visuelle Anpassungen ===&lt;br /&gt;
=== VCS Integration ===&lt;br /&gt;
==== Subversion ====&lt;br /&gt;
siehe [[Subversion]]&lt;/div&gt;</summary>
		<author><name>DelphiN</name></author>
	</entry>
	<entry>
		<id>https://wiki.schokokeks.org/wiki/index.php?title=Trac&amp;diff=8857</id>
		<title>Trac</title>
		<link rel="alternate" type="text/html" href="https://wiki.schokokeks.org/wiki/index.php?title=Trac&amp;diff=8857"/>
		<updated>2009-10-24T19:48:12Z</updated>

		<summary type="html">&lt;p&gt;DelphiN: /* Subversion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung ==&lt;br /&gt;
[http://trac.edgewall.org/ 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.&lt;br /&gt;
&lt;br /&gt;
Die Installation von Trac unterscheidet sich prinzipiell von der Installation üblicher PHP/MySQL Applikationen, weshalb sie hier genauer ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
=== Technische Vorraussetzungen ===&lt;br /&gt;
Wir gehen im Folgenden davon aus, dass &#039;&#039;trac.host.com&#039;&#039; über das [https://config.schokokeks.org/ Konfigurations-Interface] konfiguriert ist und Das &#039;&#039;htdocs&#039;&#039;-Verzeichnis in /home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs liegt.&lt;br /&gt;
&lt;br /&gt;
Trac selbst ist bereits auf dem Server installiert. Derzeitig liegt es in der Version 0.11 vor.&lt;br /&gt;
&lt;br /&gt;
Wenn MySQL als RDBMS verwendet werden soll, muss eine MySQL-Datenbank verfügbar sein. Diese lässt sich ebenso über die Konfigurations-Maske anlegen.&lt;br /&gt;
&lt;br /&gt;
== Trac installieren ==&lt;br /&gt;
=== Trac-Umgebung aufsetzen ===&lt;br /&gt;
Trac wird mit einem Kommandozeilen-Werkzeug &#039;&#039;trac-admin&#039;&#039; ausgeliefert. Mit &#039;&#039;trac-admin&#039;&#039; lassen sich alle administrativen Aufgaben auch von der Kommandozeile erledigen.&lt;br /&gt;
&lt;br /&gt;
==== Verzeichnis auswählen ====&lt;br /&gt;
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 &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== RDBMS auswählen ====&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==== Trac-Umgebung initialisieren ====&lt;br /&gt;
Um Trac zu initialisieren, verwenden wir das Kommandozeilen-Werkzeug und führen &#039;&#039;trac-admin /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac initenv&#039;&#039; aus. &#039;&#039;initenv&#039;&#039; führt uns interaktiv durch die Installation.&lt;br /&gt;
&lt;br /&gt;
===== Projektname festlegen =====&lt;br /&gt;
&lt;br /&gt;
 $ trac-admin /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac initenv&lt;br /&gt;
 Creating a new Trac environment at /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac&lt;br /&gt;
 &lt;br /&gt;
 Trac will first ask a few questions about your environment &lt;br /&gt;
 in order to initalize and prepare the project database.&lt;br /&gt;
 &lt;br /&gt;
  Please enter the name of your project.&lt;br /&gt;
  This name will be used in page titles and descriptions.&lt;br /&gt;
 &lt;br /&gt;
 Project Name [My Project]&amp;gt; Mein Projektname&lt;br /&gt;
&lt;br /&gt;
Der Projektname kann beliebig vergeben werden und kann später editiert werden. Geben Sie einen Projektname an und bestätigen diesen mit der Eingabetaste.&lt;br /&gt;
&lt;br /&gt;
===== Datenbankverbindung angeben =====&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
  Please specify the connection string for the database to use.&lt;br /&gt;
  By default, a local SQLite database is created in the environment &lt;br /&gt;
  directory. It is also possible to use an already existing &lt;br /&gt;
  PostgreSQL database (check the Trac documentation for the exact &lt;br /&gt;
  connection string syntax).&lt;br /&gt;
 &lt;br /&gt;
 Database connection string [sqlite:db/trac.db]&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Wenn MySQL verwendet werden soll, sehen die Verbindungsinformationen ähnlich aus wie diese:&lt;br /&gt;
&lt;br /&gt;
 mysql://&amp;lt;user&amp;gt;:&amp;lt;password&amp;gt;@localhost/&amp;lt;datenbank name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Felder in spitzen Klammern sind natürlich durch die entsprechenden Werte zu ersetzen.&lt;br /&gt;
&lt;br /&gt;
Wenn Trac die Datenbank-Verbindung akzeptiert und sich verbinden kann, wird das Trac-Schema angelegt.&lt;br /&gt;
&lt;br /&gt;
=====  VCS-Integration =====&lt;br /&gt;
 Please specify the type of version control system,&lt;br /&gt;
  By default, it will be svn.&lt;br /&gt;
 &lt;br /&gt;
  If you don&#039;t want to use Trac with version control integration, &lt;br /&gt;
  choose the default here and don&#039;t specify a repository directory. &lt;br /&gt;
  in the next question.&lt;br /&gt;
 &lt;br /&gt;
 Repository type [svn]&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Wenn Sie Subversion verwenden wollen, bestätigen sie diese Voreinstellung einfach mit der Eingabetaste. Die VCS-Integration kann später auch noch angepasst werden.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
  Please specify the absolute path to the version control &lt;br /&gt;
  repository, or leave it blank to use Trac without a repository.&lt;br /&gt;
  You can also set the repository location later.&lt;br /&gt;
 &lt;br /&gt;
 Path to repository [/path/to/repos]&amp;gt; /home/&amp;lt;user&amp;gt;/subversion/svn.host.com/repositories/&amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das war&#039;s auch schon, nach der Bestätigung des Repository-Pfades sollten Sie eine Meldung ähnlich zu dieser erhalten:&lt;br /&gt;
&lt;br /&gt;
 Project environment for &#039;My Project&#039; created.&lt;br /&gt;
 &lt;br /&gt;
 You may now configure the environment by editing the file:&lt;br /&gt;
 &lt;br /&gt;
   /home/lars/websites/projects.usrportage.de/trac/portage-mod-jabber/conf/trac.ini&lt;br /&gt;
 &lt;br /&gt;
 If you&#039;d like to take this new project environment for a test drive,&lt;br /&gt;
 try running the Trac standalone web server `tracd`:&lt;br /&gt;
 &lt;br /&gt;
   tracd --port 8000 /home/lars/websites/projects.usrportage.de/trac/portage-mod-jabber&lt;br /&gt;
 &lt;br /&gt;
 Then point your browser to http://localhost:8000/portage-mod-jabber.&lt;br /&gt;
 There you can also browse the documentation for your installed&lt;br /&gt;
 version of Trac, including information on further setup (such as&lt;br /&gt;
 deploying Trac to a real web server).&lt;br /&gt;
 &lt;br /&gt;
 The latest documentation can also always be found on the project&lt;br /&gt;
 website:&lt;br /&gt;
 &lt;br /&gt;
   http://trac.edgewall.org/&lt;br /&gt;
 &lt;br /&gt;
 Congratulations!&lt;br /&gt;
&lt;br /&gt;
==== Trac im Web verfügbar machen ====&lt;br /&gt;
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 &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs&#039;&#039; verfügbar. Wir kopieren dazu &#039;&#039;/usr/share/webapps/trac/0.11/hostroot/cgi-bin/trac.fcgi&#039;&#039; nach &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs/index.fcgi&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 cp /usr/share/webapps/trac/0.11/hostroot/cgi-bin/trac.fcgi /home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs/index.fcgi&lt;br /&gt;
&lt;br /&gt;
===== TRAC_ENV path =====&lt;br /&gt;
Nun muss dem FastCGI-Endpoint noch bekannt gegeben werden, welche Trac-Umgebung der ausliefern soll. Dazu müssen wir die Datei &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/htdocs/index.fcgi&#039;&#039; editieren. &lt;br /&gt;
&lt;br /&gt;
 $ nano /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/htdocs/index.fcgi&lt;br /&gt;
&lt;br /&gt;
Diese sieht so aus:&lt;br /&gt;
&lt;br /&gt;
 try:&lt;br /&gt;
     from trac.web import fcgi_frontend&lt;br /&gt;
     fcgi_frontend.run()&lt;br /&gt;
 except SystemExit:&lt;br /&gt;
     raise&lt;br /&gt;
 except Exception, e:&lt;br /&gt;
     print &#039;Content-Type: text/plain\r\n\r\n&#039;,&lt;br /&gt;
     print &#039;Oops...&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print &#039;Trac detected an internal error:&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print e&lt;br /&gt;
     print&lt;br /&gt;
     import traceback&lt;br /&gt;
     import StringIO&lt;br /&gt;
     tb = StringIO.StringIO()&lt;br /&gt;
     traceback.print_exc(file=tb)&lt;br /&gt;
     print tb.getvalue()&lt;br /&gt;
&lt;br /&gt;
Wir interessieren uns für den oberen Teil, vor dem import-Statement. Wir importieren das Python-Modul &#039;&#039;os&#039;&#039;, um die Environment-Variable &#039;&#039;TRAC_ENV&#039;&#039; setzen zu können. Der obere Teil muss also so aussehen:&lt;br /&gt;
&lt;br /&gt;
 try:&lt;br /&gt;
     import os&lt;br /&gt;
     os.environ[&#039;TRAC_ENV&#039;] = &#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac/&#039;&lt;br /&gt;
     from trac.web import fcgi_frontend&lt;br /&gt;
     fcgi_frontend.run()&lt;br /&gt;
 except SystemExit:&lt;br /&gt;
     raise&lt;br /&gt;
 except Exception, e:&lt;br /&gt;
     print &#039;Content-Type: text/plain\r\n\r\n&#039;,&lt;br /&gt;
     print &#039;Oops...&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print &#039;Trac detected an internal error:&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print e&lt;br /&gt;
     print&lt;br /&gt;
     import traceback&lt;br /&gt;
     import StringIO&lt;br /&gt;
     tb = StringIO.StringIO()&lt;br /&gt;
     traceback.print_exc(file=tb)&lt;br /&gt;
     print tb.getvalue()&lt;br /&gt;
&lt;br /&gt;
===== .htaccess =====&lt;br /&gt;
Neben der Anpassung der &#039;&#039;index.fcgi&#039;&#039; benötigen wir noch eine &#039;&#039;.htaccess&#039;&#039;-Datei um das Verhalten des Webservers zu beeinflussen. &lt;br /&gt;
&lt;br /&gt;
 $ nano /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
Erstmal müssen wir dafür sorgen, dass CGIs ausgeführt werden. Außerdem sorgt dafür, dass alle Anfragen auf das Script &#039;&#039;index.fcgi&#039;&#039; laufen:&lt;br /&gt;
&lt;br /&gt;
 Options +ExecCGI&lt;br /&gt;
 &amp;lt;br /&amp;gt;&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule ^$ %{REQUEST_URI}index.fcgi [R=301]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} !\.(png|css|fcgi|txt|jpe?g|gif|pdf|svg)$&lt;br /&gt;
 RewriteRule ^(.*)$ index.fcgi/$1 [L,QSA]&lt;br /&gt;
&lt;br /&gt;
Nach diesen letzten Anpassungung können Sie erstmals Trac unter http://trac.host.com/ aufrufen. Als nächster Schritt folgt nun die [[Trac#Trac_konfigurieren|Anpassung]] der frisch installierten Trac-Instanz, speziell die Einrichtung des Logins.&lt;br /&gt;
&lt;br /&gt;
== Trac konfigurieren ==&lt;br /&gt;
=== Login einrichten ===&lt;br /&gt;
&lt;br /&gt;
Der letzte fehlende Punkt um Trac nutzen zu können, ist der fehlende Login. Trac authentifiziert normalerweise über HTTP Authentication. Allerdings wäre dafür eine spezielle Apache-Konfiguration notwendig, was wir aber vermeiden möchten. Deshalb verwenden wir das [http://trac-hacks.org/wiki/AccountManagerPlugin AccountManager-plugin].&lt;br /&gt;
&lt;br /&gt;
==== Exkurs: Eigene Plugins installieren und verwenden ====&lt;br /&gt;
Um eigene Plugins installieren zu können, müssen wir die Direktive &#039;&#039;plugins_dir&#039;&#039; in der Sektion &#039;&#039;inherit&#039;&#039; in der &#039;&#039;&#039;conf/trac.ini&#039;&#039;&#039; anpassen:&lt;br /&gt;
&lt;br /&gt;
 $ nano /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/conf/trac.ini&lt;br /&gt;
&lt;br /&gt;
Nehmen wir an, dass wir Plugins nach &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugins&#039;&#039; installieren wollen.&lt;br /&gt;
&lt;br /&gt;
 [inherit]&lt;br /&gt;
 plugins_dir = /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugins&lt;br /&gt;
&lt;br /&gt;
Trac-Plugins werden mithilfe der Python [http://peak.telecommunity.com/DevCenter/setuptools Setuptools] installiert. Damit das funktioniert, muss noch die Umgebungsvariable PYTHONPATH angepasst werden. Dazu muss die Daten &#039;&#039;/home/&amp;lt;user&amp;gt;/.bashrc&#039;&#039; editiert werden:&lt;br /&gt;
&lt;br /&gt;
 PYTHONPATH=${PYTHONPATH}://home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugin&lt;br /&gt;
&lt;br /&gt;
Danach können Plugins mit dem folgendem Kommando installiert werden:&lt;br /&gt;
&lt;br /&gt;
 easy_install --install-dir /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugin &amp;lt;plugin&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wobei &amp;lt;plugin&amp;gt; die URL des Plugins sein muss.&lt;br /&gt;
&lt;br /&gt;
==== AccountManager-Plugin installieren ====&lt;br /&gt;
Mit folgendem Kommando wird das AccountManager-Plugin installiert. &#039;&#039;/trunk&#039;&#039; ist die passende Version für Trac 0.11.&lt;br /&gt;
&lt;br /&gt;
 easy_install --install-dir /home/&amp;lt;user&amp;gt;/shared/trac http://trac-hacks.org/svn/accountmanagerplugin/trunk&lt;br /&gt;
&lt;br /&gt;
==== AccountManager-Plugin konfigurieren ====&lt;br /&gt;
Um dass AccountManager-Plugin zu verwenden, muss es noch konfiguriert werden. Folgendes muss daher an die Trac-Konfigurationsdatei angefügt werden:&lt;br /&gt;
&lt;br /&gt;
 [components]&lt;br /&gt;
&lt;br /&gt;
Default-Login-Komponente deaktivieren&lt;br /&gt;
&lt;br /&gt;
 trac.web.auth.loginmodule = disabled&lt;br /&gt;
&lt;br /&gt;
AccountManager Login-Komponente aktivieren&lt;br /&gt;
&lt;br /&gt;
 acct_mgr.web_ui.loginmodule = enabled&lt;br /&gt;
&lt;br /&gt;
Passwörter werden im htpasswd-Format abgelegt&lt;br /&gt;
&lt;br /&gt;
 acct_mgr.htfile.htpasswdstore = enabled&lt;br /&gt;
&lt;br /&gt;
Administrations-Seite aktivieren&lt;br /&gt;
&lt;br /&gt;
 acct_mgr.admin.accountmanageradminpage = enabled&lt;br /&gt;
&lt;br /&gt;
 [account-manager]&lt;br /&gt;
&lt;br /&gt;
Passwörter liegen im htpasswd-Format vor&lt;br /&gt;
&lt;br /&gt;
 password_store = HtPasswdStore&lt;br /&gt;
&lt;br /&gt;
Pfad zur htpasswd-Datei&lt;br /&gt;
&lt;br /&gt;
 password_file = /home/&amp;lt;user&amp;gt;/path/to/passwd&lt;br /&gt;
&lt;br /&gt;
Danach sieht die Konfiguration folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
 [components]&lt;br /&gt;
 trac.web.auth.loginmodule = disabled&lt;br /&gt;
 acct_mgr.web_ui.loginmodule = enabled&lt;br /&gt;
 acct_mgr.htfile.htpasswdstore = enabled&lt;br /&gt;
 acct_mgr.admin.accountmanageradminpage = enabled&lt;br /&gt;
 &lt;br /&gt;
 [account-manager]&lt;br /&gt;
 password_store = HtPasswdStore&lt;br /&gt;
 password_file = /home/&amp;lt;user&amp;gt;/path/to/passwd&lt;br /&gt;
&lt;br /&gt;
Nun kann man sich mit einem Benutzer anmelden, der in &#039;&#039;/home/&amp;lt;user&amp;gt;/path/to/passwd&#039;&#039; definiert ist, anmelden.&lt;br /&gt;
&lt;br /&gt;
==== Benutzer zum Administrator machen ====&lt;br /&gt;
Damit ein Benutzer zum Administrator wird, müssen er die Rolle &#039;&#039;TRAC_ADMIN&#039;&#039; haben. Dazu verwenden wir wieder das &#039;&#039;trac-admin&#039;&#039; Kommandozeilen-Werkzeug:&lt;br /&gt;
&lt;br /&gt;
 trac-admin /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac permission add &amp;lt;username&amp;gt; TRAC_ADMIN&lt;br /&gt;
&lt;br /&gt;
=== Mail-Konfiguration ===&lt;br /&gt;
&lt;br /&gt;
Trac versendet Emails über neue und geänderte Tickets. Damit das funktioniert, müssen in der &#039;&#039;notification&#039;&#039;-Sektion einige Einstellungen gemacht werden:&lt;br /&gt;
&lt;br /&gt;
 [notification]&lt;br /&gt;
 smtp_port = 25&lt;br /&gt;
 smtp_server = localhost&lt;br /&gt;
 smtp_from = no-reply@trac.host.com&lt;br /&gt;
 smtp_always_bcc = owner@project.com&lt;br /&gt;
 smtp_enabled = true&lt;br /&gt;
 smtp_replyto = email@trac.host.com&lt;br /&gt;
&lt;br /&gt;
Die meisten der Optionen sind selbsterklärend, &#039;&#039;smtp_always_bcc&#039;&#039; sendet standardmäßig eine Benachrichtigung über jede Ticket-Änderung an eine Standard-Adresse. Dies ist z.B. hilfreich, wenn der Projektbesitzer alles mitbekommen möchte und sich der Ticket-Traffic in Grenzen hält.&lt;br /&gt;
&lt;br /&gt;
=== Ticket Workflow ===&lt;br /&gt;
=== Visuelle Anpassungen ===&lt;br /&gt;
=== VCS Integration ===&lt;br /&gt;
==== Subversion ====&lt;br /&gt;
siehe [[Subversion]]&lt;/div&gt;</summary>
		<author><name>DelphiN</name></author>
	</entry>
	<entry>
		<id>https://wiki.schokokeks.org/wiki/index.php?title=Trac&amp;diff=8856</id>
		<title>Trac</title>
		<link rel="alternate" type="text/html" href="https://wiki.schokokeks.org/wiki/index.php?title=Trac&amp;diff=8856"/>
		<updated>2009-10-21T12:44:08Z</updated>

		<summary type="html">&lt;p&gt;DelphiN: /* Exkurs: Eigene Plugins installieren und verwenden */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung ==&lt;br /&gt;
[http://trac.edgewall.org/ 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.&lt;br /&gt;
&lt;br /&gt;
Die Installation von Trac unterscheidet sich prinzipiell von der Installation üblicher PHP/MySQL Applikationen, weshalb sie hier genauer ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
=== Technische Vorraussetzungen ===&lt;br /&gt;
Wir gehen im Folgenden davon aus, dass &#039;&#039;trac.host.com&#039;&#039; über das [https://config.schokokeks.org/ Konfigurations-Interface] konfiguriert ist und Das &#039;&#039;htdocs&#039;&#039;-Verzeichnis in /home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs liegt.&lt;br /&gt;
&lt;br /&gt;
Trac selbst ist bereits auf dem Server installiert. Derzeitig liegt es in der Version 0.11 vor.&lt;br /&gt;
&lt;br /&gt;
Wenn MySQL als RDBMS verwendet werden soll, muss eine MySQL-Datenbank verfügbar sein. Diese lässt sich ebenso über die Konfigurations-Maske anlegen.&lt;br /&gt;
&lt;br /&gt;
== Trac installieren ==&lt;br /&gt;
=== Trac-Umgebung aufsetzen ===&lt;br /&gt;
Trac wird mit einem Kommandozeilen-Werkzeug &#039;&#039;trac-admin&#039;&#039; ausgeliefert. Mit &#039;&#039;trac-admin&#039;&#039; lassen sich alle administrativen Aufgaben auch von der Kommandozeile erledigen.&lt;br /&gt;
&lt;br /&gt;
==== Verzeichnis auswählen ====&lt;br /&gt;
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 &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== RDBMS auswählen ====&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==== Trac-Umgebung initialisieren ====&lt;br /&gt;
Um Trac zu initialisieren, verwenden wir das Kommandozeilen-Werkzeug und führen &#039;&#039;trac-admin /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac initenv&#039;&#039; aus. &#039;&#039;initenv&#039;&#039; führt uns interaktiv durch die Installation.&lt;br /&gt;
&lt;br /&gt;
===== Projektname festlegen =====&lt;br /&gt;
&lt;br /&gt;
 $ trac-admin /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac initenv&lt;br /&gt;
 Creating a new Trac environment at /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac&lt;br /&gt;
 &lt;br /&gt;
 Trac will first ask a few questions about your environment &lt;br /&gt;
 in order to initalize and prepare the project database.&lt;br /&gt;
 &lt;br /&gt;
  Please enter the name of your project.&lt;br /&gt;
  This name will be used in page titles and descriptions.&lt;br /&gt;
 &lt;br /&gt;
 Project Name [My Project]&amp;gt; Mein Projektname&lt;br /&gt;
&lt;br /&gt;
Der Projektname kann beliebig vergeben werden und kann später editiert werden. Geben Sie einen Projektname an und bestätigen diesen mit der Eingabetaste.&lt;br /&gt;
&lt;br /&gt;
===== Datenbankverbindung angeben =====&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
  Please specify the connection string for the database to use.&lt;br /&gt;
  By default, a local SQLite database is created in the environment &lt;br /&gt;
  directory. It is also possible to use an already existing &lt;br /&gt;
  PostgreSQL database (check the Trac documentation for the exact &lt;br /&gt;
  connection string syntax).&lt;br /&gt;
 &lt;br /&gt;
 Database connection string [sqlite:db/trac.db]&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Wenn MySQL verwendet werden soll, sehen die Verbindungsinformationen ähnlich aus wie diese:&lt;br /&gt;
&lt;br /&gt;
 mysql://&amp;lt;user&amp;gt;:&amp;lt;password&amp;gt;@localhost/&amp;lt;datenbank name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Felder in spitzen Klammern sind natürlich durch die entsprechenden Werte zu ersetzen.&lt;br /&gt;
&lt;br /&gt;
Wenn Trac die Datenbank-Verbindung akzeptiert und sich verbinden kann, wird das Trac-Schema angelegt.&lt;br /&gt;
&lt;br /&gt;
=====  VCS-Integration =====&lt;br /&gt;
 Please specify the type of version control system,&lt;br /&gt;
  By default, it will be svn.&lt;br /&gt;
 &lt;br /&gt;
  If you don&#039;t want to use Trac with version control integration, &lt;br /&gt;
  choose the default here and don&#039;t specify a repository directory. &lt;br /&gt;
  in the next question.&lt;br /&gt;
 &lt;br /&gt;
 Repository type [svn]&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Wenn Sie Subversion verwenden wollen, bestätigen sie diese Voreinstellung einfach mit der Eingabetaste. Die VCS-Integration kann später auch noch angepasst werden.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
  Please specify the absolute path to the version control &lt;br /&gt;
  repository, or leave it blank to use Trac without a repository.&lt;br /&gt;
  You can also set the repository location later.&lt;br /&gt;
 &lt;br /&gt;
 Path to repository [/path/to/repos]&amp;gt; /home/&amp;lt;user&amp;gt;/subversion/svn.host.com/repositories/&amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das war&#039;s auch schon, nach der Bestätigung des Repository-Pfades sollten Sie eine Meldung ähnlich zu dieser erhalten:&lt;br /&gt;
&lt;br /&gt;
 Project environment for &#039;My Project&#039; created.&lt;br /&gt;
 &lt;br /&gt;
 You may now configure the environment by editing the file:&lt;br /&gt;
 &lt;br /&gt;
   /home/lars/websites/projects.usrportage.de/trac/portage-mod-jabber/conf/trac.ini&lt;br /&gt;
 &lt;br /&gt;
 If you&#039;d like to take this new project environment for a test drive,&lt;br /&gt;
 try running the Trac standalone web server `tracd`:&lt;br /&gt;
 &lt;br /&gt;
   tracd --port 8000 /home/lars/websites/projects.usrportage.de/trac/portage-mod-jabber&lt;br /&gt;
 &lt;br /&gt;
 Then point your browser to http://localhost:8000/portage-mod-jabber.&lt;br /&gt;
 There you can also browse the documentation for your installed&lt;br /&gt;
 version of Trac, including information on further setup (such as&lt;br /&gt;
 deploying Trac to a real web server).&lt;br /&gt;
 &lt;br /&gt;
 The latest documentation can also always be found on the project&lt;br /&gt;
 website:&lt;br /&gt;
 &lt;br /&gt;
   http://trac.edgewall.org/&lt;br /&gt;
 &lt;br /&gt;
 Congratulations!&lt;br /&gt;
&lt;br /&gt;
==== Trac im Web verfügbar machen ====&lt;br /&gt;
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 &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs&#039;&#039; verfügbar. Wir kopieren dazu &#039;&#039;/usr/share/webapps/trac/0.11/hostroot/cgi-bin/trac.fcgi&#039;&#039; nach &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs/index.fcgi&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 cp /usr/share/webapps/trac/0.11/hostroot/cgi-bin/trac.fcgi /home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs/index.fcgi&lt;br /&gt;
&lt;br /&gt;
===== TRAC_ENV path =====&lt;br /&gt;
Nun muss dem FastCGI-Endpoint noch bekannt gegeben werden, welche Trac-Umgebung der ausliefern soll. Dazu müssen wir die Datei &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/htdocs/index.fcgi&#039;&#039; editieren. &lt;br /&gt;
&lt;br /&gt;
 $ nano /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/htdocs/index.fcgi&lt;br /&gt;
&lt;br /&gt;
Diese sieht so aus:&lt;br /&gt;
&lt;br /&gt;
 try:&lt;br /&gt;
     from trac.web import fcgi_frontend&lt;br /&gt;
     fcgi_frontend.run()&lt;br /&gt;
 except SystemExit:&lt;br /&gt;
     raise&lt;br /&gt;
 except Exception, e:&lt;br /&gt;
     print &#039;Content-Type: text/plain\r\n\r\n&#039;,&lt;br /&gt;
     print &#039;Oops...&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print &#039;Trac detected an internal error:&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print e&lt;br /&gt;
     print&lt;br /&gt;
     import traceback&lt;br /&gt;
     import StringIO&lt;br /&gt;
     tb = StringIO.StringIO()&lt;br /&gt;
     traceback.print_exc(file=tb)&lt;br /&gt;
     print tb.getvalue()&lt;br /&gt;
&lt;br /&gt;
Wir interessieren uns für den oberen Teil, vor dem import-Statement. Wir importieren das Python-Modul &#039;&#039;os&#039;&#039;, um die Environment-Variable &#039;&#039;TRAC_ENV&#039;&#039; setzen zu können. Der obere Teil muss also so aussehen:&lt;br /&gt;
&lt;br /&gt;
 try:&lt;br /&gt;
     import os&lt;br /&gt;
     os.environ[&#039;TRAC_ENV&#039;] = &#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac/&#039;&lt;br /&gt;
     from trac.web import fcgi_frontend&lt;br /&gt;
     fcgi_frontend.run()&lt;br /&gt;
 except SystemExit:&lt;br /&gt;
     raise&lt;br /&gt;
 except Exception, e:&lt;br /&gt;
     print &#039;Content-Type: text/plain\r\n\r\n&#039;,&lt;br /&gt;
     print &#039;Oops...&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print &#039;Trac detected an internal error:&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print e&lt;br /&gt;
     print&lt;br /&gt;
     import traceback&lt;br /&gt;
     import StringIO&lt;br /&gt;
     tb = StringIO.StringIO()&lt;br /&gt;
     traceback.print_exc(file=tb)&lt;br /&gt;
     print tb.getvalue()&lt;br /&gt;
&lt;br /&gt;
===== .htaccess =====&lt;br /&gt;
Neben der Anpassung der &#039;&#039;index.fcgi&#039;&#039; benötigen wir noch eine &#039;&#039;.htaccess&#039;&#039;-Datei um das Verhalten des Webservers zu beeinflussen. &lt;br /&gt;
&lt;br /&gt;
 $ nano /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
Erstmal müssen wir dafür sorgen, dass CGIs ausgeführt werden. Außerdem sorgt dafür, dass alle Anfragen auf das Script &#039;&#039;index.fcgi&#039;&#039; laufen:&lt;br /&gt;
&lt;br /&gt;
 Options +ExecCGI&lt;br /&gt;
 &amp;lt;br /&amp;gt;&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule ^$ %{REQUEST_URI}index.fcgi [R=301]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} !\.(png|css|fcgi|txt|jpe?g|gif|pdf|svg)$&lt;br /&gt;
 RewriteRule ^(.*)$ index.fcgi/$1 [L,QSA]&lt;br /&gt;
&lt;br /&gt;
Nach diesen letzten Anpassungung können Sie erstmals Trac unter http://trac.host.com/ aufrufen. Als nächster Schritt folgt nun die [[Trac#Trac_konfigurieren|Anpassung]] der frisch installierten Trac-Instanz, speziell die Einrichtung des Logins.&lt;br /&gt;
&lt;br /&gt;
== Trac konfigurieren ==&lt;br /&gt;
=== Login einrichten ===&lt;br /&gt;
&lt;br /&gt;
Der letzte fehlende Punkt um Trac nutzen zu können, ist der fehlende Login. Trac authentifiziert normalerweise über HTTP Authentication. Allerdings wäre dafür eine spezielle Apache-Konfiguration notwendig, was wir aber vermeiden möchten. Deshalb verwenden wir das [http://trac-hacks.org/wiki/AccountManagerPlugin AccountManager-plugin].&lt;br /&gt;
&lt;br /&gt;
==== Exkurs: Eigene Plugins installieren und verwenden ====&lt;br /&gt;
Um eigene Plugins installieren zu können, müssen wir die Direktive &#039;&#039;plugins_dir&#039;&#039; in der Sektion &#039;&#039;inherit&#039;&#039; in der &#039;&#039;&#039;conf/trac.ini&#039;&#039;&#039; anpassen:&lt;br /&gt;
&lt;br /&gt;
 $ nano /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/conf/trac.ini&lt;br /&gt;
&lt;br /&gt;
Nehmen wir an, dass wir Plugins nach &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugins&#039;&#039; installieren wollen.&lt;br /&gt;
&lt;br /&gt;
 [inherit]&lt;br /&gt;
 plugins_dir = /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugins&lt;br /&gt;
&lt;br /&gt;
Trac-Plugins werden mithilfe der Python [http://peak.telecommunity.com/DevCenter/setuptools Setuptools] installiert. Damit das funktioniert, muss noch die Umgebungsvariable PYTHONPATH angepasst werden. Dazu muss die Daten &#039;&#039;/home/&amp;lt;user&amp;gt;/.bashrc&#039;&#039; editiert werden:&lt;br /&gt;
&lt;br /&gt;
 PYTHONPATH=${PYTHONPATH}://home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugin&lt;br /&gt;
&lt;br /&gt;
Danach können Plugins mit dem folgendem Kommando installiert werden:&lt;br /&gt;
&lt;br /&gt;
 easy_install --install-dir /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/trac/plugin &amp;lt;plugin&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wobei &amp;lt;plugin&amp;gt; die URL des Plugins sein muss.&lt;br /&gt;
&lt;br /&gt;
==== AccountManager-Plugin installieren ====&lt;br /&gt;
Mit folgendem Kommando wird das AccountManager-Plugin installiert. &#039;&#039;/trunk&#039;&#039; ist die passende Version für Trac 0.11.&lt;br /&gt;
&lt;br /&gt;
 easy_install --install-dir /home/&amp;lt;user&amp;gt;/shared/trac http://trac-hacks.org/svn/accountmanagerplugin/trunk&lt;br /&gt;
&lt;br /&gt;
==== AccountManager-Plugin konfigurieren ====&lt;br /&gt;
Um dass AccountManager-Plugin zu verwenden, muss es noch konfiguriert werden. Folgendes muss daher an die Trac-Konfigurationsdatei angefügt werden:&lt;br /&gt;
&lt;br /&gt;
 [components]&lt;br /&gt;
&lt;br /&gt;
Default-Login-Komponente deaktivieren&lt;br /&gt;
&lt;br /&gt;
 trac.web.auth.loginmodule = disabled&lt;br /&gt;
&lt;br /&gt;
AccountManager Login-Komponente aktivieren&lt;br /&gt;
&lt;br /&gt;
 acct_mgr.web_ui.loginmodule = enabled&lt;br /&gt;
&lt;br /&gt;
Passwörter werden im htpasswd-Format abgelegt&lt;br /&gt;
&lt;br /&gt;
 acct_mgr.htfile.htpasswdstore = enabled&lt;br /&gt;
&lt;br /&gt;
Administrations-Seite aktivieren&lt;br /&gt;
&lt;br /&gt;
 acct_mgr.admin.accountmanageradminpage = enabled&lt;br /&gt;
&lt;br /&gt;
 [account-manager]&lt;br /&gt;
&lt;br /&gt;
Passwörter liegen im htpasswd-Format vor&lt;br /&gt;
&lt;br /&gt;
 password_store = HtPasswdStore&lt;br /&gt;
&lt;br /&gt;
Pfad zur htpasswd-Datei&lt;br /&gt;
&lt;br /&gt;
 password_file = /home/&amp;lt;user&amp;gt;/path/to/passwd&lt;br /&gt;
&lt;br /&gt;
Danach sieht die Konfiguration folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
 [components]&lt;br /&gt;
 trac.web.auth.loginmodule = disabled&lt;br /&gt;
 acct_mgr.web_ui.loginmodule = enabled&lt;br /&gt;
 acct_mgr.htfile.htpasswdstore = enabled&lt;br /&gt;
 acct_mgr.admin.accountmanageradminpage = enabled&lt;br /&gt;
 &lt;br /&gt;
 [account-manager]&lt;br /&gt;
 password_store = HtPasswdStore&lt;br /&gt;
 password_file = /home/&amp;lt;user&amp;gt;/path/to/passwd&lt;br /&gt;
&lt;br /&gt;
Nun kann man sich mit einem Benutzer anmelden, der in &#039;&#039;/home/&amp;lt;user&amp;gt;/path/to/passwd&#039;&#039; definiert ist, anmelden.&lt;br /&gt;
&lt;br /&gt;
==== Benutzer zum Administrator machen ====&lt;br /&gt;
Damit ein Benutzer zum Administrator wird, müssen er die Rolle &#039;&#039;TRAC_ADMIN&#039;&#039; haben. Dazu verwenden wir wieder das &#039;&#039;trac-admin&#039;&#039; Kommandozeilen-Werkzeug:&lt;br /&gt;
&lt;br /&gt;
 trac-admin /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac permission add &amp;lt;username&amp;gt; TRAC_ADMIN&lt;br /&gt;
&lt;br /&gt;
=== Mail-Konfiguration ===&lt;br /&gt;
&lt;br /&gt;
Trac versendet Emails über neue und geänderte Tickets. Damit das funktioniert, müssen in der &#039;&#039;notification&#039;&#039;-Sektion einige Einstellungen gemacht werden:&lt;br /&gt;
&lt;br /&gt;
 [notification]&lt;br /&gt;
 smtp_port = 25&lt;br /&gt;
 smtp_server = localhost&lt;br /&gt;
 smtp_from = no-reply@trac.host.com&lt;br /&gt;
 smtp_always_bcc = owner@project.com&lt;br /&gt;
 smtp_enabled = true&lt;br /&gt;
 smtp_replyto = email@trac.host.com&lt;br /&gt;
&lt;br /&gt;
Die meisten der Optionen sind selbsterklärend, &#039;&#039;smtp_always_bcc&#039;&#039; sendet standardmäßig eine Benachrichtigung über jede Ticket-Änderung an eine Standard-Adresse. Dies ist z.B. hilfreich, wenn der Projektbesitzer alles mitbekommen möchte und sich der Ticket-Traffic in Grenzen hält.&lt;br /&gt;
&lt;br /&gt;
=== Ticket Workflow ===&lt;br /&gt;
=== Visuelle Anpassungen ===&lt;br /&gt;
=== VCS Integration ===&lt;br /&gt;
==== Subversion ====&lt;/div&gt;</summary>
		<author><name>DelphiN</name></author>
	</entry>
	<entry>
		<id>https://wiki.schokokeks.org/wiki/index.php?title=Trac&amp;diff=8855</id>
		<title>Trac</title>
		<link rel="alternate" type="text/html" href="https://wiki.schokokeks.org/wiki/index.php?title=Trac&amp;diff=8855"/>
		<updated>2009-10-21T12:39:04Z</updated>

		<summary type="html">&lt;p&gt;DelphiN: /* .htaccess */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung ==&lt;br /&gt;
[http://trac.edgewall.org/ 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.&lt;br /&gt;
&lt;br /&gt;
Die Installation von Trac unterscheidet sich prinzipiell von der Installation üblicher PHP/MySQL Applikationen, weshalb sie hier genauer ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
=== Technische Vorraussetzungen ===&lt;br /&gt;
Wir gehen im Folgenden davon aus, dass &#039;&#039;trac.host.com&#039;&#039; über das [https://config.schokokeks.org/ Konfigurations-Interface] konfiguriert ist und Das &#039;&#039;htdocs&#039;&#039;-Verzeichnis in /home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs liegt.&lt;br /&gt;
&lt;br /&gt;
Trac selbst ist bereits auf dem Server installiert. Derzeitig liegt es in der Version 0.11 vor.&lt;br /&gt;
&lt;br /&gt;
Wenn MySQL als RDBMS verwendet werden soll, muss eine MySQL-Datenbank verfügbar sein. Diese lässt sich ebenso über die Konfigurations-Maske anlegen.&lt;br /&gt;
&lt;br /&gt;
== Trac installieren ==&lt;br /&gt;
=== Trac-Umgebung aufsetzen ===&lt;br /&gt;
Trac wird mit einem Kommandozeilen-Werkzeug &#039;&#039;trac-admin&#039;&#039; ausgeliefert. Mit &#039;&#039;trac-admin&#039;&#039; lassen sich alle administrativen Aufgaben auch von der Kommandozeile erledigen.&lt;br /&gt;
&lt;br /&gt;
==== Verzeichnis auswählen ====&lt;br /&gt;
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 &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== RDBMS auswählen ====&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==== Trac-Umgebung initialisieren ====&lt;br /&gt;
Um Trac zu initialisieren, verwenden wir das Kommandozeilen-Werkzeug und führen &#039;&#039;trac-admin /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac initenv&#039;&#039; aus. &#039;&#039;initenv&#039;&#039; führt uns interaktiv durch die Installation.&lt;br /&gt;
&lt;br /&gt;
===== Projektname festlegen =====&lt;br /&gt;
&lt;br /&gt;
 $ trac-admin /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac initenv&lt;br /&gt;
 Creating a new Trac environment at /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac&lt;br /&gt;
 &lt;br /&gt;
 Trac will first ask a few questions about your environment &lt;br /&gt;
 in order to initalize and prepare the project database.&lt;br /&gt;
 &lt;br /&gt;
  Please enter the name of your project.&lt;br /&gt;
  This name will be used in page titles and descriptions.&lt;br /&gt;
 &lt;br /&gt;
 Project Name [My Project]&amp;gt; Mein Projektname&lt;br /&gt;
&lt;br /&gt;
Der Projektname kann beliebig vergeben werden und kann später editiert werden. Geben Sie einen Projektname an und bestätigen diesen mit der Eingabetaste.&lt;br /&gt;
&lt;br /&gt;
===== Datenbankverbindung angeben =====&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
  Please specify the connection string for the database to use.&lt;br /&gt;
  By default, a local SQLite database is created in the environment &lt;br /&gt;
  directory. It is also possible to use an already existing &lt;br /&gt;
  PostgreSQL database (check the Trac documentation for the exact &lt;br /&gt;
  connection string syntax).&lt;br /&gt;
 &lt;br /&gt;
 Database connection string [sqlite:db/trac.db]&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Wenn MySQL verwendet werden soll, sehen die Verbindungsinformationen ähnlich aus wie diese:&lt;br /&gt;
&lt;br /&gt;
 mysql://&amp;lt;user&amp;gt;:&amp;lt;password&amp;gt;@localhost/&amp;lt;datenbank name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Felder in spitzen Klammern sind natürlich durch die entsprechenden Werte zu ersetzen.&lt;br /&gt;
&lt;br /&gt;
Wenn Trac die Datenbank-Verbindung akzeptiert und sich verbinden kann, wird das Trac-Schema angelegt.&lt;br /&gt;
&lt;br /&gt;
=====  VCS-Integration =====&lt;br /&gt;
 Please specify the type of version control system,&lt;br /&gt;
  By default, it will be svn.&lt;br /&gt;
 &lt;br /&gt;
  If you don&#039;t want to use Trac with version control integration, &lt;br /&gt;
  choose the default here and don&#039;t specify a repository directory. &lt;br /&gt;
  in the next question.&lt;br /&gt;
 &lt;br /&gt;
 Repository type [svn]&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Wenn Sie Subversion verwenden wollen, bestätigen sie diese Voreinstellung einfach mit der Eingabetaste. Die VCS-Integration kann später auch noch angepasst werden.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
  Please specify the absolute path to the version control &lt;br /&gt;
  repository, or leave it blank to use Trac without a repository.&lt;br /&gt;
  You can also set the repository location later.&lt;br /&gt;
 &lt;br /&gt;
 Path to repository [/path/to/repos]&amp;gt; /home/&amp;lt;user&amp;gt;/subversion/svn.host.com/repositories/&amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das war&#039;s auch schon, nach der Bestätigung des Repository-Pfades sollten Sie eine Meldung ähnlich zu dieser erhalten:&lt;br /&gt;
&lt;br /&gt;
 Project environment for &#039;My Project&#039; created.&lt;br /&gt;
 &lt;br /&gt;
 You may now configure the environment by editing the file:&lt;br /&gt;
 &lt;br /&gt;
   /home/lars/websites/projects.usrportage.de/trac/portage-mod-jabber/conf/trac.ini&lt;br /&gt;
 &lt;br /&gt;
 If you&#039;d like to take this new project environment for a test drive,&lt;br /&gt;
 try running the Trac standalone web server `tracd`:&lt;br /&gt;
 &lt;br /&gt;
   tracd --port 8000 /home/lars/websites/projects.usrportage.de/trac/portage-mod-jabber&lt;br /&gt;
 &lt;br /&gt;
 Then point your browser to http://localhost:8000/portage-mod-jabber.&lt;br /&gt;
 There you can also browse the documentation for your installed&lt;br /&gt;
 version of Trac, including information on further setup (such as&lt;br /&gt;
 deploying Trac to a real web server).&lt;br /&gt;
 &lt;br /&gt;
 The latest documentation can also always be found on the project&lt;br /&gt;
 website:&lt;br /&gt;
 &lt;br /&gt;
   http://trac.edgewall.org/&lt;br /&gt;
 &lt;br /&gt;
 Congratulations!&lt;br /&gt;
&lt;br /&gt;
==== Trac im Web verfügbar machen ====&lt;br /&gt;
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 &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs&#039;&#039; verfügbar. Wir kopieren dazu &#039;&#039;/usr/share/webapps/trac/0.11/hostroot/cgi-bin/trac.fcgi&#039;&#039; nach &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs/index.fcgi&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 cp /usr/share/webapps/trac/0.11/hostroot/cgi-bin/trac.fcgi /home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs/index.fcgi&lt;br /&gt;
&lt;br /&gt;
===== TRAC_ENV path =====&lt;br /&gt;
Nun muss dem FastCGI-Endpoint noch bekannt gegeben werden, welche Trac-Umgebung der ausliefern soll. Dazu müssen wir die Datei &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/htdocs/index.fcgi&#039;&#039; editieren. &lt;br /&gt;
&lt;br /&gt;
 $ nano /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/htdocs/index.fcgi&lt;br /&gt;
&lt;br /&gt;
Diese sieht so aus:&lt;br /&gt;
&lt;br /&gt;
 try:&lt;br /&gt;
     from trac.web import fcgi_frontend&lt;br /&gt;
     fcgi_frontend.run()&lt;br /&gt;
 except SystemExit:&lt;br /&gt;
     raise&lt;br /&gt;
 except Exception, e:&lt;br /&gt;
     print &#039;Content-Type: text/plain\r\n\r\n&#039;,&lt;br /&gt;
     print &#039;Oops...&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print &#039;Trac detected an internal error:&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print e&lt;br /&gt;
     print&lt;br /&gt;
     import traceback&lt;br /&gt;
     import StringIO&lt;br /&gt;
     tb = StringIO.StringIO()&lt;br /&gt;
     traceback.print_exc(file=tb)&lt;br /&gt;
     print tb.getvalue()&lt;br /&gt;
&lt;br /&gt;
Wir interessieren uns für den oberen Teil, vor dem import-Statement. Wir importieren das Python-Modul &#039;&#039;os&#039;&#039;, um die Environment-Variable &#039;&#039;TRAC_ENV&#039;&#039; setzen zu können. Der obere Teil muss also so aussehen:&lt;br /&gt;
&lt;br /&gt;
 try:&lt;br /&gt;
     import os&lt;br /&gt;
     os.environ[&#039;TRAC_ENV&#039;] = &#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac/&#039;&lt;br /&gt;
     from trac.web import fcgi_frontend&lt;br /&gt;
     fcgi_frontend.run()&lt;br /&gt;
 except SystemExit:&lt;br /&gt;
     raise&lt;br /&gt;
 except Exception, e:&lt;br /&gt;
     print &#039;Content-Type: text/plain\r\n\r\n&#039;,&lt;br /&gt;
     print &#039;Oops...&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print &#039;Trac detected an internal error:&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print e&lt;br /&gt;
     print&lt;br /&gt;
     import traceback&lt;br /&gt;
     import StringIO&lt;br /&gt;
     tb = StringIO.StringIO()&lt;br /&gt;
     traceback.print_exc(file=tb)&lt;br /&gt;
     print tb.getvalue()&lt;br /&gt;
&lt;br /&gt;
===== .htaccess =====&lt;br /&gt;
Neben der Anpassung der &#039;&#039;index.fcgi&#039;&#039; benötigen wir noch eine &#039;&#039;.htaccess&#039;&#039;-Datei um das Verhalten des Webservers zu beeinflussen. &lt;br /&gt;
&lt;br /&gt;
 $ nano /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/htdocs/.htaccess&lt;br /&gt;
&lt;br /&gt;
Erstmal müssen wir dafür sorgen, dass CGIs ausgeführt werden. Außerdem sorgt dafür, dass alle Anfragen auf das Script &#039;&#039;index.fcgi&#039;&#039; laufen:&lt;br /&gt;
&lt;br /&gt;
 Options +ExecCGI&lt;br /&gt;
 &amp;lt;br /&amp;gt;&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule ^$ %{REQUEST_URI}index.fcgi [R=301]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} !\.(png|css|fcgi|txt|jpe?g|gif|pdf|svg)$&lt;br /&gt;
 RewriteRule ^(.*)$ index.fcgi/$1 [L,QSA]&lt;br /&gt;
&lt;br /&gt;
Nach diesen letzten Anpassungung können Sie erstmals Trac unter http://trac.host.com/ aufrufen. Als nächster Schritt folgt nun die [[Trac#Trac_konfigurieren|Anpassung]] der frisch installierten Trac-Instanz, speziell die Einrichtung des Logins.&lt;br /&gt;
&lt;br /&gt;
== Trac konfigurieren ==&lt;br /&gt;
=== Login einrichten ===&lt;br /&gt;
&lt;br /&gt;
Der letzte fehlende Punkt um Trac nutzen zu können, ist der fehlende Login. Trac authentifiziert normalerweise über HTTP Authentication. Allerdings wäre dafür eine spezielle Apache-Konfiguration notwendig, was wir aber vermeiden möchten. Deshalb verwenden wir das [http://trac-hacks.org/wiki/AccountManagerPlugin AccountManager-plugin].&lt;br /&gt;
&lt;br /&gt;
==== Exkurs: Eigene Plugins installieren und verwenden ====&lt;br /&gt;
Um eigene Plugins installieren zu können, müssen wir die Direktive &#039;&#039;plugins_dir&#039;&#039; in der Sektion &#039;&#039;inherit&#039;&#039; in der &#039;&#039;&#039;config/trac.ini&#039;&#039;&#039; anpassen. Nehmen wir an, dass wir Plugins nach &#039;&#039;/home/&amp;lt;user&amp;gt;/shared/trac&#039;&#039; installieren wollen.&lt;br /&gt;
&lt;br /&gt;
 [inherit]&lt;br /&gt;
 plugins_dir = /home/&amp;lt;user&amp;gt;/shared/trac&lt;br /&gt;
&lt;br /&gt;
Trac-Plugins werden mithilfe der Python [http://peak.telecommunity.com/DevCenter/setuptools Setuptools] installiert. Damit das funktioniert, muss noch die Umgebungsvariable PYTHONPATH angepasst werden. Dazu muss die Daten &#039;&#039;/home/&amp;lt;user&amp;gt;/.bashrc&#039;&#039; editiert werden:&lt;br /&gt;
&lt;br /&gt;
 PYTHONPATH=${PYTHONPATH}:/home/&amp;lt;user&amp;gt;/shared/trac&lt;br /&gt;
&lt;br /&gt;
Danach können Plugins mit dem folgendem Kommando installiert werden:&lt;br /&gt;
&lt;br /&gt;
 easy_install --install-dir /home/&amp;lt;user&amp;gt;/shared/trac &amp;lt;plugin&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wobei &amp;lt;plugin&amp;gt; die URL des Plugins sein muss.&lt;br /&gt;
&lt;br /&gt;
==== AccountManager-Plugin installieren ====&lt;br /&gt;
Mit folgendem Kommando wird das AccountManager-Plugin installiert. &#039;&#039;/trunk&#039;&#039; ist die passende Version für Trac 0.11.&lt;br /&gt;
&lt;br /&gt;
 easy_install --install-dir /home/&amp;lt;user&amp;gt;/shared/trac http://trac-hacks.org/svn/accountmanagerplugin/trunk&lt;br /&gt;
&lt;br /&gt;
==== AccountManager-Plugin konfigurieren ====&lt;br /&gt;
Um dass AccountManager-Plugin zu verwenden, muss es noch konfiguriert werden. Folgendes muss daher an die Trac-Konfigurationsdatei angefügt werden:&lt;br /&gt;
&lt;br /&gt;
 [components]&lt;br /&gt;
&lt;br /&gt;
Default-Login-Komponente deaktivieren&lt;br /&gt;
&lt;br /&gt;
 trac.web.auth.loginmodule = disabled&lt;br /&gt;
&lt;br /&gt;
AccountManager Login-Komponente aktivieren&lt;br /&gt;
&lt;br /&gt;
 acct_mgr.web_ui.loginmodule = enabled&lt;br /&gt;
&lt;br /&gt;
Passwörter werden im htpasswd-Format abgelegt&lt;br /&gt;
&lt;br /&gt;
 acct_mgr.htfile.htpasswdstore = enabled&lt;br /&gt;
&lt;br /&gt;
Administrations-Seite aktivieren&lt;br /&gt;
&lt;br /&gt;
 acct_mgr.admin.accountmanageradminpage = enabled&lt;br /&gt;
&lt;br /&gt;
 [account-manager]&lt;br /&gt;
&lt;br /&gt;
Passwörter liegen im htpasswd-Format vor&lt;br /&gt;
&lt;br /&gt;
 password_store = HtPasswdStore&lt;br /&gt;
&lt;br /&gt;
Pfad zur htpasswd-Datei&lt;br /&gt;
&lt;br /&gt;
 password_file = /home/&amp;lt;user&amp;gt;/path/to/passwd&lt;br /&gt;
&lt;br /&gt;
Danach sieht die Konfiguration folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
 [components]&lt;br /&gt;
 trac.web.auth.loginmodule = disabled&lt;br /&gt;
 acct_mgr.web_ui.loginmodule = enabled&lt;br /&gt;
 acct_mgr.htfile.htpasswdstore = enabled&lt;br /&gt;
 acct_mgr.admin.accountmanageradminpage = enabled&lt;br /&gt;
 &lt;br /&gt;
 [account-manager]&lt;br /&gt;
 password_store = HtPasswdStore&lt;br /&gt;
 password_file = /home/&amp;lt;user&amp;gt;/path/to/passwd&lt;br /&gt;
&lt;br /&gt;
Nun kann man sich mit einem Benutzer anmelden, der in &#039;&#039;/home/&amp;lt;user&amp;gt;/path/to/passwd&#039;&#039; definiert ist, anmelden.&lt;br /&gt;
&lt;br /&gt;
==== Benutzer zum Administrator machen ====&lt;br /&gt;
Damit ein Benutzer zum Administrator wird, müssen er die Rolle &#039;&#039;TRAC_ADMIN&#039;&#039; haben. Dazu verwenden wir wieder das &#039;&#039;trac-admin&#039;&#039; Kommandozeilen-Werkzeug:&lt;br /&gt;
&lt;br /&gt;
 trac-admin /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac permission add &amp;lt;username&amp;gt; TRAC_ADMIN&lt;br /&gt;
&lt;br /&gt;
=== Mail-Konfiguration ===&lt;br /&gt;
&lt;br /&gt;
Trac versendet Emails über neue und geänderte Tickets. Damit das funktioniert, müssen in der &#039;&#039;notification&#039;&#039;-Sektion einige Einstellungen gemacht werden:&lt;br /&gt;
&lt;br /&gt;
 [notification]&lt;br /&gt;
 smtp_port = 25&lt;br /&gt;
 smtp_server = localhost&lt;br /&gt;
 smtp_from = no-reply@trac.host.com&lt;br /&gt;
 smtp_always_bcc = owner@project.com&lt;br /&gt;
 smtp_enabled = true&lt;br /&gt;
 smtp_replyto = email@trac.host.com&lt;br /&gt;
&lt;br /&gt;
Die meisten der Optionen sind selbsterklärend, &#039;&#039;smtp_always_bcc&#039;&#039; sendet standardmäßig eine Benachrichtigung über jede Ticket-Änderung an eine Standard-Adresse. Dies ist z.B. hilfreich, wenn der Projektbesitzer alles mitbekommen möchte und sich der Ticket-Traffic in Grenzen hält.&lt;br /&gt;
&lt;br /&gt;
=== Ticket Workflow ===&lt;br /&gt;
=== Visuelle Anpassungen ===&lt;br /&gt;
=== VCS Integration ===&lt;br /&gt;
==== Subversion ====&lt;/div&gt;</summary>
		<author><name>DelphiN</name></author>
	</entry>
	<entry>
		<id>https://wiki.schokokeks.org/wiki/index.php?title=Trac&amp;diff=8854</id>
		<title>Trac</title>
		<link rel="alternate" type="text/html" href="https://wiki.schokokeks.org/wiki/index.php?title=Trac&amp;diff=8854"/>
		<updated>2009-10-21T12:36:37Z</updated>

		<summary type="html">&lt;p&gt;DelphiN: /* TRAC_ENV path */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung ==&lt;br /&gt;
[http://trac.edgewall.org/ 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.&lt;br /&gt;
&lt;br /&gt;
Die Installation von Trac unterscheidet sich prinzipiell von der Installation üblicher PHP/MySQL Applikationen, weshalb sie hier genauer ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
=== Technische Vorraussetzungen ===&lt;br /&gt;
Wir gehen im Folgenden davon aus, dass &#039;&#039;trac.host.com&#039;&#039; über das [https://config.schokokeks.org/ Konfigurations-Interface] konfiguriert ist und Das &#039;&#039;htdocs&#039;&#039;-Verzeichnis in /home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs liegt.&lt;br /&gt;
&lt;br /&gt;
Trac selbst ist bereits auf dem Server installiert. Derzeitig liegt es in der Version 0.11 vor.&lt;br /&gt;
&lt;br /&gt;
Wenn MySQL als RDBMS verwendet werden soll, muss eine MySQL-Datenbank verfügbar sein. Diese lässt sich ebenso über die Konfigurations-Maske anlegen.&lt;br /&gt;
&lt;br /&gt;
== Trac installieren ==&lt;br /&gt;
=== Trac-Umgebung aufsetzen ===&lt;br /&gt;
Trac wird mit einem Kommandozeilen-Werkzeug &#039;&#039;trac-admin&#039;&#039; ausgeliefert. Mit &#039;&#039;trac-admin&#039;&#039; lassen sich alle administrativen Aufgaben auch von der Kommandozeile erledigen.&lt;br /&gt;
&lt;br /&gt;
==== Verzeichnis auswählen ====&lt;br /&gt;
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 &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== RDBMS auswählen ====&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==== Trac-Umgebung initialisieren ====&lt;br /&gt;
Um Trac zu initialisieren, verwenden wir das Kommandozeilen-Werkzeug und führen &#039;&#039;trac-admin /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac initenv&#039;&#039; aus. &#039;&#039;initenv&#039;&#039; führt uns interaktiv durch die Installation.&lt;br /&gt;
&lt;br /&gt;
===== Projektname festlegen =====&lt;br /&gt;
&lt;br /&gt;
 $ trac-admin /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac initenv&lt;br /&gt;
 Creating a new Trac environment at /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac&lt;br /&gt;
 &lt;br /&gt;
 Trac will first ask a few questions about your environment &lt;br /&gt;
 in order to initalize and prepare the project database.&lt;br /&gt;
 &lt;br /&gt;
  Please enter the name of your project.&lt;br /&gt;
  This name will be used in page titles and descriptions.&lt;br /&gt;
 &lt;br /&gt;
 Project Name [My Project]&amp;gt; Mein Projektname&lt;br /&gt;
&lt;br /&gt;
Der Projektname kann beliebig vergeben werden und kann später editiert werden. Geben Sie einen Projektname an und bestätigen diesen mit der Eingabetaste.&lt;br /&gt;
&lt;br /&gt;
===== Datenbankverbindung angeben =====&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
  Please specify the connection string for the database to use.&lt;br /&gt;
  By default, a local SQLite database is created in the environment &lt;br /&gt;
  directory. It is also possible to use an already existing &lt;br /&gt;
  PostgreSQL database (check the Trac documentation for the exact &lt;br /&gt;
  connection string syntax).&lt;br /&gt;
 &lt;br /&gt;
 Database connection string [sqlite:db/trac.db]&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Wenn MySQL verwendet werden soll, sehen die Verbindungsinformationen ähnlich aus wie diese:&lt;br /&gt;
&lt;br /&gt;
 mysql://&amp;lt;user&amp;gt;:&amp;lt;password&amp;gt;@localhost/&amp;lt;datenbank name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Felder in spitzen Klammern sind natürlich durch die entsprechenden Werte zu ersetzen.&lt;br /&gt;
&lt;br /&gt;
Wenn Trac die Datenbank-Verbindung akzeptiert und sich verbinden kann, wird das Trac-Schema angelegt.&lt;br /&gt;
&lt;br /&gt;
=====  VCS-Integration =====&lt;br /&gt;
 Please specify the type of version control system,&lt;br /&gt;
  By default, it will be svn.&lt;br /&gt;
 &lt;br /&gt;
  If you don&#039;t want to use Trac with version control integration, &lt;br /&gt;
  choose the default here and don&#039;t specify a repository directory. &lt;br /&gt;
  in the next question.&lt;br /&gt;
 &lt;br /&gt;
 Repository type [svn]&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Wenn Sie Subversion verwenden wollen, bestätigen sie diese Voreinstellung einfach mit der Eingabetaste. Die VCS-Integration kann später auch noch angepasst werden.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
  Please specify the absolute path to the version control &lt;br /&gt;
  repository, or leave it blank to use Trac without a repository.&lt;br /&gt;
  You can also set the repository location later.&lt;br /&gt;
 &lt;br /&gt;
 Path to repository [/path/to/repos]&amp;gt; /home/&amp;lt;user&amp;gt;/subversion/svn.host.com/repositories/&amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das war&#039;s auch schon, nach der Bestätigung des Repository-Pfades sollten Sie eine Meldung ähnlich zu dieser erhalten:&lt;br /&gt;
&lt;br /&gt;
 Project environment for &#039;My Project&#039; created.&lt;br /&gt;
 &lt;br /&gt;
 You may now configure the environment by editing the file:&lt;br /&gt;
 &lt;br /&gt;
   /home/lars/websites/projects.usrportage.de/trac/portage-mod-jabber/conf/trac.ini&lt;br /&gt;
 &lt;br /&gt;
 If you&#039;d like to take this new project environment for a test drive,&lt;br /&gt;
 try running the Trac standalone web server `tracd`:&lt;br /&gt;
 &lt;br /&gt;
   tracd --port 8000 /home/lars/websites/projects.usrportage.de/trac/portage-mod-jabber&lt;br /&gt;
 &lt;br /&gt;
 Then point your browser to http://localhost:8000/portage-mod-jabber.&lt;br /&gt;
 There you can also browse the documentation for your installed&lt;br /&gt;
 version of Trac, including information on further setup (such as&lt;br /&gt;
 deploying Trac to a real web server).&lt;br /&gt;
 &lt;br /&gt;
 The latest documentation can also always be found on the project&lt;br /&gt;
 website:&lt;br /&gt;
 &lt;br /&gt;
   http://trac.edgewall.org/&lt;br /&gt;
 &lt;br /&gt;
 Congratulations!&lt;br /&gt;
&lt;br /&gt;
==== Trac im Web verfügbar machen ====&lt;br /&gt;
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 &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs&#039;&#039; verfügbar. Wir kopieren dazu &#039;&#039;/usr/share/webapps/trac/0.11/hostroot/cgi-bin/trac.fcgi&#039;&#039; nach &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs/index.fcgi&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 cp /usr/share/webapps/trac/0.11/hostroot/cgi-bin/trac.fcgi /home/&amp;lt;user&amp;gt;/websites/trac.host.com/htdocs/index.fcgi&lt;br /&gt;
&lt;br /&gt;
===== TRAC_ENV path =====&lt;br /&gt;
Nun muss dem FastCGI-Endpoint noch bekannt gegeben werden, welche Trac-Umgebung der ausliefern soll. Dazu müssen wir die Datei &#039;&#039;/home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/htdocs/index.fcgi&#039;&#039; editieren. &lt;br /&gt;
&lt;br /&gt;
 $ nano /home/&amp;lt;user&amp;gt;/websites/trac.&amp;lt;host.com&amp;gt;/htdocs/index.fcgi&lt;br /&gt;
&lt;br /&gt;
Diese sieht so aus:&lt;br /&gt;
&lt;br /&gt;
 try:&lt;br /&gt;
     from trac.web import fcgi_frontend&lt;br /&gt;
     fcgi_frontend.run()&lt;br /&gt;
 except SystemExit:&lt;br /&gt;
     raise&lt;br /&gt;
 except Exception, e:&lt;br /&gt;
     print &#039;Content-Type: text/plain\r\n\r\n&#039;,&lt;br /&gt;
     print &#039;Oops...&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print &#039;Trac detected an internal error:&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print e&lt;br /&gt;
     print&lt;br /&gt;
     import traceback&lt;br /&gt;
     import StringIO&lt;br /&gt;
     tb = StringIO.StringIO()&lt;br /&gt;
     traceback.print_exc(file=tb)&lt;br /&gt;
     print tb.getvalue()&lt;br /&gt;
&lt;br /&gt;
Wir interessieren uns für den oberen Teil, vor dem import-Statement. Wir importieren das Python-Modul &#039;&#039;os&#039;&#039;, um die Environment-Variable &#039;&#039;TRAC_ENV&#039;&#039; setzen zu können. Der obere Teil muss also so aussehen:&lt;br /&gt;
&lt;br /&gt;
 try:&lt;br /&gt;
     import os&lt;br /&gt;
     os.environ[&#039;TRAC_ENV&#039;] = &#039;/home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac/&#039;&lt;br /&gt;
     from trac.web import fcgi_frontend&lt;br /&gt;
     fcgi_frontend.run()&lt;br /&gt;
 except SystemExit:&lt;br /&gt;
     raise&lt;br /&gt;
 except Exception, e:&lt;br /&gt;
     print &#039;Content-Type: text/plain\r\n\r\n&#039;,&lt;br /&gt;
     print &#039;Oops...&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print &#039;Trac detected an internal error:&#039;&lt;br /&gt;
     print&lt;br /&gt;
     print e&lt;br /&gt;
     print&lt;br /&gt;
     import traceback&lt;br /&gt;
     import StringIO&lt;br /&gt;
     tb = StringIO.StringIO()&lt;br /&gt;
     traceback.print_exc(file=tb)&lt;br /&gt;
     print tb.getvalue()&lt;br /&gt;
&lt;br /&gt;
===== .htaccess =====&lt;br /&gt;
Neben der Anpassung der &#039;&#039;index.fcgi&#039;&#039; benötigen wir noch eine &#039;&#039;.htaccess&#039;&#039;-Datei um das Verhalten des Webservers zu beeinflussen. Erstmal müssen wir dafür sorgen, dass CGIs ausgeführt werden:&lt;br /&gt;
&lt;br /&gt;
 Options +ExecCGI&lt;br /&gt;
&lt;br /&gt;
Der zweite Streich sorgt dafür, dass alle Anfragen auf das Script &#039;&#039;index.fcgi&#039;&#039; laufen:&lt;br /&gt;
&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteRule ^$ %{REQUEST_URI}index.fcgi [R=301]&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} !\.(png|css|fcgi|txt|jpe?g|gif|pdf|svg)$&lt;br /&gt;
 RewriteRule ^(.*)$ index.fcgi/$1 [L,QSA]&lt;br /&gt;
&lt;br /&gt;
Nach diesen letzten Anpassungung können Sie erstmals Trac unter http://trac.host.com/ aufrufen. Als nächster Schritt folgt nun die [[Trac#Trac_konfigurieren|Anpassung]] der frisch installierten Trac-Instanz, speziell die Einrichtung des Logins.&lt;br /&gt;
&lt;br /&gt;
== Trac konfigurieren ==&lt;br /&gt;
=== Login einrichten ===&lt;br /&gt;
&lt;br /&gt;
Der letzte fehlende Punkt um Trac nutzen zu können, ist der fehlende Login. Trac authentifiziert normalerweise über HTTP Authentication. Allerdings wäre dafür eine spezielle Apache-Konfiguration notwendig, was wir aber vermeiden möchten. Deshalb verwenden wir das [http://trac-hacks.org/wiki/AccountManagerPlugin AccountManager-plugin].&lt;br /&gt;
&lt;br /&gt;
==== Exkurs: Eigene Plugins installieren und verwenden ====&lt;br /&gt;
Um eigene Plugins installieren zu können, müssen wir die Direktive &#039;&#039;plugins_dir&#039;&#039; in der Sektion &#039;&#039;inherit&#039;&#039; in der &#039;&#039;&#039;config/trac.ini&#039;&#039;&#039; anpassen. Nehmen wir an, dass wir Plugins nach &#039;&#039;/home/&amp;lt;user&amp;gt;/shared/trac&#039;&#039; installieren wollen.&lt;br /&gt;
&lt;br /&gt;
 [inherit]&lt;br /&gt;
 plugins_dir = /home/&amp;lt;user&amp;gt;/shared/trac&lt;br /&gt;
&lt;br /&gt;
Trac-Plugins werden mithilfe der Python [http://peak.telecommunity.com/DevCenter/setuptools Setuptools] installiert. Damit das funktioniert, muss noch die Umgebungsvariable PYTHONPATH angepasst werden. Dazu muss die Daten &#039;&#039;/home/&amp;lt;user&amp;gt;/.bashrc&#039;&#039; editiert werden:&lt;br /&gt;
&lt;br /&gt;
 PYTHONPATH=${PYTHONPATH}:/home/&amp;lt;user&amp;gt;/shared/trac&lt;br /&gt;
&lt;br /&gt;
Danach können Plugins mit dem folgendem Kommando installiert werden:&lt;br /&gt;
&lt;br /&gt;
 easy_install --install-dir /home/&amp;lt;user&amp;gt;/shared/trac &amp;lt;plugin&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wobei &amp;lt;plugin&amp;gt; die URL des Plugins sein muss.&lt;br /&gt;
&lt;br /&gt;
==== AccountManager-Plugin installieren ====&lt;br /&gt;
Mit folgendem Kommando wird das AccountManager-Plugin installiert. &#039;&#039;/trunk&#039;&#039; ist die passende Version für Trac 0.11.&lt;br /&gt;
&lt;br /&gt;
 easy_install --install-dir /home/&amp;lt;user&amp;gt;/shared/trac http://trac-hacks.org/svn/accountmanagerplugin/trunk&lt;br /&gt;
&lt;br /&gt;
==== AccountManager-Plugin konfigurieren ====&lt;br /&gt;
Um dass AccountManager-Plugin zu verwenden, muss es noch konfiguriert werden. Folgendes muss daher an die Trac-Konfigurationsdatei angefügt werden:&lt;br /&gt;
&lt;br /&gt;
 [components]&lt;br /&gt;
&lt;br /&gt;
Default-Login-Komponente deaktivieren&lt;br /&gt;
&lt;br /&gt;
 trac.web.auth.loginmodule = disabled&lt;br /&gt;
&lt;br /&gt;
AccountManager Login-Komponente aktivieren&lt;br /&gt;
&lt;br /&gt;
 acct_mgr.web_ui.loginmodule = enabled&lt;br /&gt;
&lt;br /&gt;
Passwörter werden im htpasswd-Format abgelegt&lt;br /&gt;
&lt;br /&gt;
 acct_mgr.htfile.htpasswdstore = enabled&lt;br /&gt;
&lt;br /&gt;
Administrations-Seite aktivieren&lt;br /&gt;
&lt;br /&gt;
 acct_mgr.admin.accountmanageradminpage = enabled&lt;br /&gt;
&lt;br /&gt;
 [account-manager]&lt;br /&gt;
&lt;br /&gt;
Passwörter liegen im htpasswd-Format vor&lt;br /&gt;
&lt;br /&gt;
 password_store = HtPasswdStore&lt;br /&gt;
&lt;br /&gt;
Pfad zur htpasswd-Datei&lt;br /&gt;
&lt;br /&gt;
 password_file = /home/&amp;lt;user&amp;gt;/path/to/passwd&lt;br /&gt;
&lt;br /&gt;
Danach sieht die Konfiguration folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
 [components]&lt;br /&gt;
 trac.web.auth.loginmodule = disabled&lt;br /&gt;
 acct_mgr.web_ui.loginmodule = enabled&lt;br /&gt;
 acct_mgr.htfile.htpasswdstore = enabled&lt;br /&gt;
 acct_mgr.admin.accountmanageradminpage = enabled&lt;br /&gt;
 &lt;br /&gt;
 [account-manager]&lt;br /&gt;
 password_store = HtPasswdStore&lt;br /&gt;
 password_file = /home/&amp;lt;user&amp;gt;/path/to/passwd&lt;br /&gt;
&lt;br /&gt;
Nun kann man sich mit einem Benutzer anmelden, der in &#039;&#039;/home/&amp;lt;user&amp;gt;/path/to/passwd&#039;&#039; definiert ist, anmelden.&lt;br /&gt;
&lt;br /&gt;
==== Benutzer zum Administrator machen ====&lt;br /&gt;
Damit ein Benutzer zum Administrator wird, müssen er die Rolle &#039;&#039;TRAC_ADMIN&#039;&#039; haben. Dazu verwenden wir wieder das &#039;&#039;trac-admin&#039;&#039; Kommandozeilen-Werkzeug:&lt;br /&gt;
&lt;br /&gt;
 trac-admin /home/&amp;lt;user&amp;gt;/websites/trac.host.com/trac permission add &amp;lt;username&amp;gt; TRAC_ADMIN&lt;br /&gt;
&lt;br /&gt;
=== Mail-Konfiguration ===&lt;br /&gt;
&lt;br /&gt;
Trac versendet Emails über neue und geänderte Tickets. Damit das funktioniert, müssen in der &#039;&#039;notification&#039;&#039;-Sektion einige Einstellungen gemacht werden:&lt;br /&gt;
&lt;br /&gt;
 [notification]&lt;br /&gt;
 smtp_port = 25&lt;br /&gt;
 smtp_server = localhost&lt;br /&gt;
 smtp_from = no-reply@trac.host.com&lt;br /&gt;
 smtp_always_bcc = owner@project.com&lt;br /&gt;
 smtp_enabled = true&lt;br /&gt;
 smtp_replyto = email@trac.host.com&lt;br /&gt;
&lt;br /&gt;
Die meisten der Optionen sind selbsterklärend, &#039;&#039;smtp_always_bcc&#039;&#039; sendet standardmäßig eine Benachrichtigung über jede Ticket-Änderung an eine Standard-Adresse. Dies ist z.B. hilfreich, wenn der Projektbesitzer alles mitbekommen möchte und sich der Ticket-Traffic in Grenzen hält.&lt;br /&gt;
&lt;br /&gt;
=== Ticket Workflow ===&lt;br /&gt;
=== Visuelle Anpassungen ===&lt;br /&gt;
=== VCS Integration ===&lt;br /&gt;
==== Subversion ====&lt;/div&gt;</summary>
		<author><name>DelphiN</name></author>
	</entry>
</feed>