Kiedy VisualSVN Server zainstalowałem tak, jak chciałem, zachciało mi się systemu do zarządzania błędami. Padło na Trac. Do instalacji postanowiłem wykorzystać Apache VisualSVN Servera. Wiem, że mógłbym wziąć sobie paczkę z Trac dla VisualSVN Server, ale nie zrobiłem tego, bo po pierwsze, nie zawiera najnowszej, stabilnej wersji Trac, a po drugie – niezależna instalacja Trac uprości aktualizację narzędzia w przyszłości.

Przygotowanie środowiska

Zainstalowałem po kolei używając defaultowych ścieżek:

Niestety najnowsze bindingi SVN dla Pythona 2.5 nie pomogą w integracji Trac z VisualSVN Server (gdzieś znalazłem informację, że winne są zmodyfikowane biblioteki SVN w VisualSVN Server). Ale poradziłem sobie z tym pobierając wspomnianą paczkę Trac dla VisualSVN Server i kopiując z archiwum katalogi trac\python\Lib\site-packages\libsvn oraz trac\python\Lib\site-packages\svn do c:\Python25\Lib\site-packages.

Konfiguracja Trac

Z wiersza poleceń wykonujemy:

c:\Python25\Scripts\trac-admin.exe c:\trac initenv

Na pytania instalatora odpowiadamy następująco:

Project Name: Moja_nazwa
Database connection string [sqlite:db/trac.db]: <enter>

Do katalogu c:\trac dajemy prawa do odczytu i zapisu użytkownikowi, na którym uruchomiona jest usługa.

Na tym etapie można już uruchomić webserwer Traca poleceniem:

tracd --port 8000 c:\trac

My chcemy jednak, żeby Trac serwowany był przez Apache. W związku z tym trzeba doinstalować mod_python dla Apache 2.2 i Python 2.5. Instalator zapyta nas, gdzie jest zainstalowany Apache. Chcemy wykorzystać serwer dostarczany razem z VisualSVN Server. W związku z tym tworzymy katalog modules w C:\Program Files\VisualSVN Server\bin i wskazujemy instalatorowi katalog C:\Program Files\VisualSVN Server\bin, a w konfiguracji Apache C:\Program Files\VisualSVN Server\conf\httpd.conf dodajemy linie:

LoadModule python_module bin/modules/mod_python.so

Dodajemy do konfiguracji Apache katalog Trac:

<Location /trac>
    SetHandler mod_python
    PythonInterpreter main_interpreter
    PythonHandler trac.web.modpython_frontend 
    PythonOption TracEnv "C:/trac"
    PythonOption TracUriRoot /trac
</Location>

Chcemy, aby w Trac mogli się zalogować użytkownicy domenowi. W związku z tym w konfiguracji dodajemy jeszcze poniższy fragment:

<Location /trac/login>
    AuthType SSPI
    AuthName "Trac"
    SSPIAuth On
    SSPIAuthoritative On
    SSPIDomain NAZWA_DOMENY
    SSPIOfferBasic Off
    Require valid-user
</Location>

Pod adresem http://nazwa_hosta/trac mamy dostęp do Trac.