Trac
Auf dieser Seite findet man meine Erfahrungsberichte im Umgang mit Trac.


Trac Migration auf Windows Server 2012 R2

Aufgabenstellung

Ich hatte Trac in der Version 0.11.7 bisher auf einem Windows Server 2003 laufen. Jetzt war es an der Zeit die Applikation auf einen Windows Server 2012 R2 zu migrieren und dabei auch die Trac Version auf 1.0.8 zu aktualisieren.

Beim Umzug auf den neuen Server ging ich wie folgt vor:

SVN Migration

Damit ich das Subversion Repository auf den neuen Server hosten konnte, musste ich zunächst den Subversion Server installieren.
  • Auf http://alagazam.net/ kann man sich die Datei Setup-Subversion-1.8.13.msi herunterladen. (Von der Seite des Subversion Projekts werden leider keine Installationsdateien zur Verfügung gestellt.)
  • Nach dem Installieren von Subversion auf dem Server, habe ich das SVN Service auf dem Windows Server 2003 gestoppt, das SVN Repository gezippt und dann auf den Windows Server 2012 kopiert.
  • Nach dem Entpacken des SVN Repositories auf dem neuen Server habe ich das SVN Service mit folgendem Befehl installiert:

    sc create svn binpath= "\"C:\Subversion\bin\svnserve.exe\" --service -r C:\SVN" displayname= "Subversion Server" depend= Tcpip start= auto

    Dabei ist C:\Subversion das Installationsverzeichnis von Subversion und C:\SVN das Verzeichnis des SVN Repositories. (Mit dem Befehl sc delete svn kann man das Service wieder deinstallieren.)
  • Anschließend musste ich noch das Sevice im Programm services.msc starten.
Die Working Copies konnte ich dann mit Tortoise SVN und dem Relocate Menü-Eintrag im Kontextmenü auf den neuen Server umstellen. Dabei musste nur svn://<Neuer Servername> eingegeben werden. Der restliche Pfad im Repository wurde automatisch übernommen.

Installation von Trac auf Windows Server 2012 R2

Im Prinzip bin ich nach dieser Anleitung von Jochen Hebbrecht vorgegangen.

Wichtig dabei war, dass ich 32-Bit Versionen der Installationsdateien verwendet habe, obwohl ich einen 64-Bit Server habe. Für manche Installationsdateien, die ich benötigte gab es nämlich keine 64-Bit Version, was dann zu Problemen hätte führen können.

Außerdem kann man vom Server aus nicht ins Internet, weshalb eine Installation mit Hilfe von Easy-Install für mich nicht möglich war. Ich habe daher die Installationsdateien für die einzelnen Komponenten heruntergeladen.

Das war meine Vorgangsweise: Danach waren die Komponenten für das Starten von Trac installiert.

Upgrade des Trac Projekts von 0.11.7 auf 1.0.8

Ich habe das Verzeichnis des Trac Projekts gezippt und auf den neuen Server kopiert und dort entpackt. Danach habe ich das Startskript an die neuen Pfade angepasst und Trac gestartet. Wenn in C:\Python Python installiert wurde und das Trac-Projekt im Verzeichnis C:\trac\myProject liegt kann mit folgenden Befehl Trac gestartet werden. (Mit der .htdigest Datei wurde zusätzlich eine Zugriffskontrolle realisiert. Dabei muss man auch den Realm angeben, mit dem die Passwörter der Benutzer verschlüsselt wurden.)

"C:\Python\Scripts\tracd" --port 8000 --auth="*",c:\trac\myProject\.htdigest,<:Realm> c:\trac\myProject

Trac war danach unter http://<ServerName>:8000/myProject erreichbar, hat aber folgenden Fehler angezeigt:

TracError: The Trac Environment needs to be upgraded.

Mit dem Befehlen

"C:\Python\Scripts\trac-admin" c:\trac\myProject upgrade
"C:\Python\Scripts\trac-admin" c:\trac\myProject wiki upgrade


habe ich zunächst das Trac-Projekt und danach die Wiki-Dokumentation aktualisiert.

Anbindung des SVN Repositories

Zunächst waren die Python 2.7 Bindings für das SVN zu installieren, damit Trac das Repository einlesen konnte. Dafür habe ich die Datei svn-win32-1.8.13_py27.zip von http://alagazam.net/ heruntergeladen. Die Zip-Datei habe ich dann im Python-Verzeichnis (C:\Python\Lib\site-packages) entpackt, so dass es dann die beiden folgenden Verzeichnisse gibt:
  • C:\Python\Lib\site-packages\svn
  • C:\Python\Lib\site-packages\libsvn
Da jetzt mit Trac 1.0.8 mehrere Repositories verwaltet werden können, habe ich in der Administration das Repository nochmals neu angelegt und den Namen Repository vergeben. Danach habe ich mit dem Befehl
"C:\Python\Scripts\trac-admin" c:\trac\myProject repository resync "Repository"
das Repository neu mit Trac synchronisiert.

Zusätzlich wird empfohlen eine Post-Commit Aktion im Repository einzutragen, damit die Information eines Commits automatisch an Trac weitergegeben wird. Dafür bin ich in das Verzeichnis des Repository gewechselt und habe im Ordner hooks die Datei post-commit.tmpl kopiert und auf post-commit.bat umbenannt. In der letzten Zeile dieser Datei habe ich den Befehl

"C:\Python\Scripts\trac-admin" c:\trac\myProject changeset added "Repository" $REV

hinzufügt. Die Perl- und Python-Skripte, die im Template aufgerufen wurden, habe ich auskommentiert.

Installation von Trac als Service

Zum Abschluss wollte ich noch erreichen, dass Trac automatisch auf dem Server läuft, ohne eine Befehl in der Commandline abzusetzen. Hierfür habe ich mir folgende Alternativen ausgesucht.
  • Trac via IIS:
    Da ich auf dem Server den IIS sowieso installiert hatte, hätte man ja Trac als Website darin laufen lassen können. Allerdings gibt es Probleme mit der CGI Implementierung von Microsoft (siehe hier), weshalb eine einfache Integration nicht ohne weiteres möglich ist. Außerdem habe ich diese Anleitung gefunden, wie man Trac auf IIS 7 optimal zum Laufen bringen könnte, was mir aber zu komplex erschienen ist, und eventuell auch Auswirkungen auf Standard IIS Funktionalitäten haben könnte.
  • srvany:
    Auf dem Windows Server 2003 habe ich srvany verwendet, um Trac als Service laufen zu lassen. Weil dafür aber die Installation vom Windows 2003 Resource Kit benötigt worden ist, und ich das für einen Windows 2012 Server nicht mehr für passend halte, habe ich nach einer anderen Möglichkeit gesucht.
  • NSSM - the Non-Sucking Service Manager:
    Letzten Endes habe ich auf http://trac.edgewall.org/wiki/TracOnWindowsStandalone eine Lösung mit NSSM - the Non-Sucking Service Manager gefunden:
    • nssm downloaden: ​http://nssm.cc/download.
    • 64-bit Version mit dem Befehl nss install tracd ausführen.
    • Path: C:\Python\python.exe
    • Startup Directory: C:\Python\
    • Arguments: "C:\Python\Scripts\tracd-script.py" --port 8000 --auth="*",c:\trac\myProject.htdigest,<:Realm> c:\trac\myProject
    • Install service
    • Dann unter services.msc das Service tracd starten.