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.

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:

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.