[[Vorlage(Kopie, Trac)]] [[Vorlage(Getestet, )]] {{{#!vorlage Wissen [:Pakete_installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] [:Editor: Einen Editor öffnen] [:Rechte: Rechte für Dateien und Ordner anpassen] [:mit Root-Rechten arbeiten:] }}} [[Inhaltsverzeichnis(2)]] [[Bild(./banner.png, 180, align=left)]] [https://trac.edgewall.org/ Trac] {en} ist eine in [:Python:] geschriebene, webbasierte Anwendung, welche besonders bei Softwareentwicklern beliebt ist. Das Programm bietet unter einer integrierten Oberfläche ein Ticketsystem, ein Wiki sowie eine Quellcodeverwaltung. Es arbeitet mit [:Archiv/Subversion:Subversion], [:Archiv/Mercurial:Mercurial] und - ab Version 1.0 - [:Git:] zusammen. Trac lässt sich über [#Plugins Plugins] jedoch auch für andere Versionskontrollsysteme erweitern. Das Programm bietet verschiedene Übersichten und Auswertungsmöglichkeiten zum Status der Tickets sowie der Historie der Versionskontrolle. Weiterhin bietet Trac eine recht fein konfigurierbare Benutzerrechteverwaltung. Es wird per Voreinstellung [:SQLite:] als Datenbank im Hintergrund genutzt, grundsätzlich besteht aber auch die Möglichkeit, auf [:MySQL:] oder [:PostgreSQL:] umzustellen, was aber nur bei großen Projekten wirklich notwendig ist. Grundsätzlich ist der Einsatz von Trac aber nicht auf die Softwareentwicklung beschränkt. So ist z.B. das Ticketsystem recht flexibel konfigurierbar und kann somit auch für andere Anwendungsfälle genutzt werden. Weiterhin kann man den Versionskontrollteil komplett deaktivieren, sodass man nur ein Wiki plus Ticketsystem hat. Trac kann im standalone-Modus betrieben werden, d. h. dass der eingebaute Server zum Ausliefern der Seiten genutzt wird. Dies ist für kleinere Installationen völlig ausreichend, es besteht aber natürlich auch die Möglichkeit, die Software in echte Webserver, wie z.B. [:Apache:], einzubinden. Trac ist zwar einfach zu nutzen, hat aber umfangreiche Konfigurationsmöglichkeiten, von denen hier nur einige grundlegende Schritte beschrieben werden. Das [https://trac.edgewall.org/wiki Trac Open Source Project] {en} ist eine weitergehende und sehr detaillierte Dokumentation. Leider ist Trac immer noch nicht auf Python 3 portiert, sondern nur für Python 2.7 verfügbar. = Installation = Trac besitzt zur Zeit (Stand: April 2021) zwei unterstützte Versionen: 1.2 und die aktuelle Version 1.4. == über die Paketquellen == Trac ist in den Ubuntu-Quellen enthalten und kann über das Paket {{{#!vorlage Paketinstallation trac, universe }}} installiert werden [1]. Diese Installationsart ist jedoch nur für den lokalen oder Testbetrieb zu empfehlen, da die Version aus den Quellen (Bionic:1.2.0) nicht unbedingt die neuste Version ist und vor allem nicht immer alle Sicherheitsupdates enthält. Für produktive Anwendungen ist die manuelle Installation zu empfehlen. == manuelle Installation == Trac läuft aktuell nur mit Python 2 in der Version 2, eine Unterstützung von Python 3 kommt erst mit der Version 1.5 Die manuelle Installation kann via [:pip:] erfolgen[2]: {{{#!vorlage Befehl pip install trac }}} Ist eine systemweite Installation gewünscht, ist der Befehl mit Root-Rechten[5] aufzurufen. Weitere Installationsmethoden siehe [https://trac.edgewall.org/wiki/TracInstall Trac Installation Guide] {en}. = Grundlegende Konfiguration = Zuerst muss eine Projektumgebung, das "Environment", angelegt werden. Sie darf grundsätzlich in jedem beliebigen Verzeichnis liegen. Zu beachten ist aber, dass Trac später unter einem Benutzer gestartet wird, der auch Schreib- und Leserechte im Projektverzeichnis haben muss. Zum lokalen Testen kann man die Umgebung ohne weiteres im eigenen [:Homeverzeichnis:] installieren, will man Trac aber im Internet betreiben, so empfiehlt sich z.B. ein Projektverzeichnis unterhalb von '''/var/www''' bzw. '''/var/www/html''' == Projekt anlegen - Homeverzeichnis == Möchte man Trac testen (oder als rein privates Wiki oder Ticketsystem nutzen), so kann man die Projektumgebung ohne weiteres im Homeverzeichnis anlegen. Der Befehl [2] lautet: {{{#!vorlage Befehl trac-admin ~/tractest initenv }}} So wird im [:Homeverzeichnis:] das Unterverzeichnis '''tractest''' angelegt und alle für Trac notwendigen Daten werden dort hinterlegt. Zuerst gibt man bei der Installation einen Namen für das Projekt an. Dann wird nach der Verbindung zur Datenbank gefragt. Sofern man die vorgegebene Datenbank [:SQLite:] verwenden möchte - wogegen nichts spricht - bestätigt man den Vorgabewert. Darauf wird die Umgebung komplett angelegt. Das Projekt kann jetzt über den Aufruf von {{{#!vorlage Befehl tracd --port 8000 ~/tractest }}} und von `http://localhost:8000/tractest` im Browser genutzt werden. Der Port kann beliebig gewählt werden, sofern auf dem Port kein anderen Dienst läuft und ein unprivilegierter Port größer 1024 genutzt wird. Man kann das Programm auch im Daemon-Mode starten, in dem man zusätzlich die Option `-d` nutzt. Damit läuft die Software automatisch im Hintergrund und blockiert weder den Shellprompt noch werden Meldungen von Trac ausgegeben. Um den Trac-Server wieder zu stoppen kann man folgenden Befehl nutzen: {{{#!vorlage Befehl sudo killall tracd }}} Trac und das Projekt laufen jetzt zwar, da allerdings kein Benutzer angelegt ist, kann auf alle Seiten nur lesend zugegriffen werden. Informationen zum Anlegen von Nutzern findet man im Abschnitt [#Benutzer-anlegen Benutzer anlegen]. == Projekt anlegen - Server == Das Anlegen eines Projekts für einen (öffentlichen) Server läuft ähnlich, benötigt aber einige wenige Schritte mehr, da Rechte angepasst werden müssen[4]. Im folgendem Beispiel wird dazu Trac im Verzeichnis '''/var/www/trac''' eingerichtet: {{{#!vorlage Befehl #Anlegen der Projektumgebung sudo trac-admin /var/www/trac initenv #Ändern der Dateirechte sudo chown -R www-data /var/www/trac #Starten des Standalone Servers sudo su www-data -c "tracd --port 8000 /var/www/trac" }}} Nun sollte der Trac Standalone-Server im Webbrowser unter der Adresse `http://localhost:8000` erreichbar sein. Natürlich kann auch hier Trac über die Option `-d` im Hintergrund laufen, der Befehl zum Stoppen des Servers ist der gleiche wie bei der Installation im Homeverzeichnis. == Anbindung an Webserver == Trac kann natürlich nicht nur über den eingebauten Standalone-Server betrieben werden, sondern auch an einen richtigen Webserver gebunden werden. Dies ist besonders für größere Projekte empfehlenswert. Trac erlaubt den Betrieb [:Apache/mod_wsgi:] - der gängigsten Methode für Python - aber auch das ältere via CGI oder FastCGI. Informationen hierzu findet man in der Dokumentation im Abschnitt [https://trac.edgewall.org/wiki/TracInstall#RunningTraconaWebServer Running Trac on a Web Server] {en}. == Benutzer anlegen == Um mit Trac aktiv arbeiten zu können, also um Tickets zu erstellen oder Wikieinträge zu bearbeiten, muss man sich als Nutzer anmelden und mit den entsprechenden Rechten ausgestattet sein. Per Voreinstellung ist nach dem Anlegen einer Projektumgebung kein Benutzer angelegt, dies muss von Hand erfolgen. {{{#!vorlage Hinweis Die folgenden Schritte gelten nur für den Trac Standalone-Server. Nutzt man Trac über einen Server via mod_wsgi oder (Fast-) CGI: siehe entsprechende Anleitungen in [#Anbindung-an-Webserver Anbindung an Webserver]. }}} Zuerst ist eine Passwortdatei anzulegen. Falls ein Apache-Webserver installiert ist, kann man dies einfach über das Programm `htpasswd` erledigen: {{{#!vorlage Befehl sudo htdigest -c /var/www/tractest/.htpass REALM NUTZER }}} Um weitere Benutzer anzulegen die Option `-c` streichen, da sonst die Datei überschrieben wird. {{{#!vorlage Befehl sudo htpdigest /var/www/tractest/.htpass REALM NUTZER }}} `REALM` kann prinzipiell beliebig gewählt werden, sollte aber für alle späteren Trac-Benutzer einheitlich sein, da der `REALM` beim Login ebenfalls verglichen wird. Wer Apache und somit auch `htdigest` nicht installiert hat, kann die Passwortdatei auch mit Script [https://trac.edgewall.org/wiki/TracStandalone#GeneratingPasswordsWithoutApache Generating Passwords Without Apache] {en} anlegen. Jetzt muss man nur noch Trac mit Authentifizierung starten: {{{#!vorlage Befehl tracd --port 8000 --auth "tractest,/var/www/tractest/.htpass,REALM" /var/www/tractest/ }}} Wichtig ist dabei, dass `REALM` der gleiche ist wie in der Datei '''.htpass''' angelegt, sonst funktioniert der Login nicht. Einloggen kann man sich nach dem Start von Trac mit [[Vorlage(Tasten, lmt)]] auf ''"Login"'' im Menü rechts oben. == Benutzerrechte vergeben == Um einen Benutzer mit entsprechenden Rechten auszustatten dient das Programm '''trac-admin''', welches zusammen mit Trac installiert wird. Das Programm dient auch zur generellen Verwaltung einer Trac-Installation, siehe unten. Trac besitzt eine feingranulare Rechteverwaltung, man kann Rechte für Wiki, Ticketsystem und Versionskontrolle getrennt und mehrstufig pro Nutzer vergeben. Man sollte aber zumindest einen Benutzer mit Admin-Rechten anlegen. Dies erledigt der folgende Befehl: {{{#!vorlage Befehl sudo trac-admin /var/www/tractest permission add NUTZERNAME TRAC_ADMIN }}} Damit wird für das Projekt, welches unter '''/var/www/tractest''' für den Nutzer `NUTZERNAME` angelegt ist, das volle Admin-Recht gewährt. Liegt das Projekt innerhalb des eigenen Homeverzeichnisses, so kann man dem Befehl `sudo` weglassen. Meldet sich dieser Nutzer nun an, so hat er alle Rechte innerhalb des Projekts. Analog kann man natürlich für alle anderen, niedrigeren Rechte verfahren. Dabei können auch mehrfach verschiedene Rechte pro Nutzer vergeben werden. Vollständige Übersicht über die Rechte, siehe Seite [https://trac.edgewall.org/wiki/TracPermissions Trac Permissions] {en}. = Trac verwalten und konfigurieren = Zur Verwaltung eines Trac-Projekts dient in erster Linie das mit installierte Programm '''trac-admin'''. Die allgemeine Syntax lautet: {{{#!vorlage Befehl trac-admin /Pfad/zur/Installation/Projekt BEFEHL PARAMETER OPTIONEN }}} `PARAMETER` und `OPTIONEN` können je nach `BEFEHL` variieren. Ein Beispiel findet man im vorherigen Abschnitt [#Benutzerrechte-vergeben Benutzerrechte vergeben], eine umfassende Befehlsreferenz in [https://trac.edgewall.org/wiki/TracAdmin TracAdmin] {en}. == Neuplatzierung vom SVN-Verzeichnis == Sollte es notwendig sein, das SVN-Verzeichnis im Dateisystem zu verschieben, muss Trac resynchronisiert werden. Die Syntax lautet: {{{#!vorlage Befehl sudo trac-admin /pfad/zum/trac/verzeichnis/ repository resync '(default)' }}} Der Befehl `sudo` wird hier für die Berechtigung benötigt, falls das SVN-Verzeichnis, z. B. des Besitzers, ''"www-data"'' hat. Der Name des Repository ist der '''trac.ini''' Datei zu entnehmen. Im Abschnitt ''"[trac]"'' und Parameter ''"repository_sync_per_request"'' ist dieser Wert zu suchen: {{{#!code ini [trac] ... repository_sync_per_request = (default) ... }}} == Verwaltung mit graphischer Oberfläche == Einen Teil der Konfiguration kann man auch über die Oberfläche von Trac erledigen. Ist man als Benutzer mit Admin-Rechten angemeldet, so sieht man ganz rechts im Menü den Punkt ''"Admin"'' - [[Vorlage(Tasten, lmt)]] führt zum Konfigurationsmenü, wo u.a. Benutzerrechte angelegt, das Ticketsystem angepasst sowie die Versionskontrolle eingerichtet werden können. == Datei trac.ini == Globale Einstellungen für Trac werden zentral in der Datei '''trac.ini''' hinterlegt. Diese Datei findet man im Projektverzeichnis im Order '''conf'''. Die Datei kann mit einem beliebigen Editor bearbeitet werden [3]. Da die Datei an sich nicht kommentiert ist, sollte man vorher [https://trac.edgewall.org/wiki/TracIni The Trac Configuration File] {en} lesen. Einige Beispiele findet man auch im folgenden Abschnitt. = Design-Anpassung = [[Vorlage(Bildunterschrift, Trac/admin.png, 200, "TracWebAdmin im Ubuntuusers-Design", right)]] Auf der Projektseite [https://trac-hacks.org/ Trac Hacks] {en} ist ein Plugin für Themes zu finden. Folgend wird jedoch lediglich die manuelle Anpassung erläutert, was Kenntnisse über [wikipedia:Cascading Style Sheets:] erfordert. Um für mehrere Trac-Instanzen unterschiedliche Designs zu nutzen und damit bei einem Trac-Update die Änderungen nicht verloren gehen, wird ein eigenes Verzeichnis für das Trac-Theme angelegt und in der Trac-Konfiguration der einzelnen Instanz bekanntgegeben. == Logo und Favicon == Das eigene Logo '''mylogo.png''' und das Icon '''myicon.ico''' werden entweder in den Ordner '''/usr/share/trac/htdocs''' oder in den '''/htdocs'''-Ordner der betreffenden Instanz kopiert. Die Namen müssen in der Datei '''/var/trac/wiki/conf/trac.ini''' an entsprechender Stelle angepasst werden [3]. Hat man seine Dateien in den allgemeinen Ordner kopiert, gibt man '''src=common/...''' an, wenn man sie in den Ordner der Instanz kopiert hat, muss man '''src=site/...''' schreiben. Letztere Version ist günstiger, wenn man ein Update des Systems durchführt, da bei '''src=common/...''' die Dateien im allgemeinen Verzeichnis möglicherweise gelöscht werden können. {{{#!code ini [header_logo] src = common/mylogo.png ... [project] icon = common/myicon.ico }}} == CSS und Symbole == Da sich anbietet die vorhandenen Stylesheets und Symbole als Grundlage für eigene Anpassungen zu nutzen, wird der Ordner als Kopie für das Projekt gespeichert, die über den Webserver verfügbar ist [2]. {{{#!vorlage Befehl sudo cp -r /usr/share/trac/htdocs /var/www/trac-theme sudo chown -R www-data /var/www/trac-theme }}} Der Pfad muss im entsprechenden Abschnitt der '''/var/trac/wiki/conf/trac.ini''' bekannt gegeben werden [3]. {{{#!code ini [Trac] htdocs_location = http://localhost/trac-theme/htdocs }}} Designänderungen (CSS und Symbole) werden von nun an für dieses Projekt an den Dateien im Ordner '''/var/www/trac-theme''' bzw. dessen Unterordnern vorgenommen (ausgenommen Logo und Favicon). == Header und Footer == Auch Header und Footer, also die Anfangs- und Endbereiche, die bei allen Seiten gleich sind, können angepasst werden. Hierzu wird zunächst das Verzeichnis '''/usr/share/trac/templates''' mit den vorhandenen Vorlagen aus Trac in das Beispielprojekt kopiert [2]. {{{#!vorlage Befehl sudo cp -r /usr/share/trac/templates /var/www/trac-theme }}} Der Pfad muss im entsprechenden Abschnitt der '''/var/trac/wiki/conf/trac.ini''' bekannt gegeben werden [3]. {{{#!code ini [Trac] templates_dir = /var/www/trac-theme/templates }}} Ergänzungen an Header und Footer können nun an den Dateien '''site_header.cs''' und '''site_footer.cs''' vorgenommen werden. Änderungen an den bestehenden Inhalten werden in den Dateien '''header.cs''' und '''footer.cs''' gemacht. = Plugins = Trac ist über Plugins erweiterbar. Plugins können z.B. recht einfach über das ''"Admin"'' Menü installiert und danach in der Datei '''trac.ini''' aktiviert werden. Allgemeine Informationen findet man in [https://trac.edgewall.org/wiki/TracPlugins Trac plugins] {en}, eine Auswahlliste in [https://trac.edgewall.org/wiki/PluginList Trac Plugins List] {en}. Des Weiteren gibt es auf der Seite [https://trac-hacks.org/wiki/WikiStart Trac Hacks] {en} eine sehr große Auswahl von Plugins von nicht dem Projekt angehörigen Programmierern. {{{#!vorlage Hinweis Vor der Installation eines Plugins sollte man unbedingt darauf achten, ob das Plugin für die eigene Trac-Version geeignet ist, sonst kann es zu unerwarteten Resultaten kommen. Gerade auf der Seite Trac Hacks gibt es ein Vielzahl von Plugins, welche nur mit einer bestimmten Trac-Version laufen. }}} == Plugins bei Installation aus den Quellen == Hat man Trac über die Ubuntu-Paketquellen installiert, so sind darüber auch einige Plugins installierbar. Die Pakete haben alle das Namensschema '''trac-*'''. = Backup = Über das oben genannten '''trac-admin''' lassen sich auch Sicherungen des Projekts anlegen. Dies geschieht über den Befehl: {{{#!vorlage Befehl sudo trac-admin /Pfad/zum/Projekt/Projektname hotcopy /Pfad/zum/Sicherungsverzeichnis }}} Möchte man eine Sicherung zurückspielen, muss man zuerst Trac bzw. den Server stoppen und dann einfach alle Dateien aus dem Sicherungsverzeichnis ins Projektverzeichnis zurückkopieren. {{{#!vorlage Hinweis Dies funktioniert nur, wenn man SQLite als Datenbank benutzt. Beim Einsatz einer anderen Datenbank muss man diese separat sichern. Weitere Hinweise findet man in [https://trac.edgewall.org/wiki/TracBackup Trac Backup] {en}. }}} = Schwierigkeiten unter AMD64 = Falls Python den Fehler meldet, ClearSilver sei nicht installiert, kann folgendes [https://mathiasson.nu/debian/pool/main/c/clearsilver/python-clearsilver_0.10.4-1.0pm0_amd64.deb ClearSilver-Paket für AMD64] {dl} helfen. Es handelt sich bei der Fehlermeldung um einen [bug:86685:bekannten Fehler]. [[Vorlage(Fremd,Paket)]] = Links = ==Intern== * [:Apache:] * [:Git:] * [:Python:] ==Extern== * [wikipedia:Trac:] * [https://www.wikimatrix.org/show/TracWiki WikiMatrix] {en} #tag: Programmierung, Server, Python, Wikisoftware