= Trac oraz mod_python =
Trac obsługuje [http://www.modpython.org/ mod_python'a], który odpowiednio przyśpiesza czas odpowiedzi Traca i pozwala na użycie wielu własności Apacha które są niedostępne przy użyciu jedynie [wiki:TracStandalone tracd]/mod_proxy.
== Prosta konfiguracja ==
Jeśli tylko zainstalowałeś mod_pythona, będziesz musiał dodać linijkę w konfiguracji Apacha żeby ładować moduł:
{{{
LoadModule python_module modules/mod_python.so
}}}
Proste ustawienie Traca do użycia mod_pythona wygląda tak:
{{{
SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonOption TracEnv /var/trac/myproject
PythonOption TracUriRoot /projects/myproject
}}}
Zauważ że opcja `TracUriRoot` może lecz nie musi być konieczna podczas uruchamiania. Najpierw spróbuj bez i jeśli URL wygenerowany przez Traca wygląda źle lub Trac nie rozpoznaje dobrze adresów URL, dodaj opcję `TracUriRoot`.
Configuracja autoryzacji działa tak samo jak dla [wiki:TracCgi#DodawanieAutoryzacji CGI]:
{{{
AuthType Basic
AuthName "myproject"
AuthUserFile /var/trac/myproject/.htaccess
Require valid-user
}}}
Jeśli Trac nie jest zainstalowany w ścieżce Pythona, będziesz musiał powiedzieć Apache'owi gdzie znaleźć uchwyt mod_pythona dla Traca, używając polecenia `PythonPath`:
{{{
...
PythonPath "sys.path + ['/path/to/trac']"
...
}}}
== Tworzenie wielu projektów ==
Uchwyt mod_python dla Traca obsługuje opcje konfiguracji podobne jak `SvnParentPath` w Subversion. Nazywa się je `TracEnvParentDir`:
{{{
SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonOption TracEnvParentDir /var/trac
PythonOption TracUriRoot /projects
}}}
Jeśli zażądasz URL `/projects`, dostaniesz listę wszystkich podkatalogów katalogu ustawionego w `TracEnvParentDir`. Wybierając którykolwiek projekt z listy, zostaniesz przeniesiony do odpowiedniego środowiska Traca.
Jeśli nie chcesz listy podkatalogów jako strony projektów, użyj:
{{{
}}}
To powie Apache'owi żeby użył mod_pythona dla wszystkich lokacji innych niż root, przy zachowaniu możliwości umieszczenia własnej strony głównej w twoim katalogu !DocumentRoot.
Możesz też użyć tych samych zasad autoryzacji dla wszystkich projektów, używając polecenia ``:
{{{
AuthType Basic
AuthName "Trac"
AuthUserFile /var/trac/.htaccess
Require valid-user
}}}
== Konfiguracja Hostów Virtualnych ==
Poniżej znajduje się przykład wymagany do postawienia Traca jako wirtualnego serwera (np. Gdy dostajesz się do neigo przy użyciu URLa takiego jak http://www.linuxacademy.wroc.pl):
{{{
DocumentRoot /var/trac/myproject
ServerName trac.mycompany.com
SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonOption TracEnv /var/trac/myproject
PythonOption TracUriRoot /
AuthType Basic
AuthName "MyCompany Trac Server"
AuthUserFile /var/trac/myproject/.htusers
Require valid-user
}}}
== Troubleshooting ==
=== Problemy przy zatwierdzaniu formularzy ===
Jeśli doświadczasz problemów podczas zatwierdzania niektórych formularzy w Tracu (powszechnym problemem jest przeniesienie do strony startowej zaraz po zatwierdzeniu), sprawdź czy {{{DocumentRoot}}} zawiera katalog lub plik z taką samą ścieżką jak ta zmapowana uchwytem mod_pythona. Z pewnych powodów, mod_python szamota się jeśli jest mapowany do lokacji która zawiera również statyczne źródła.
=== Używanie .htaccess ===
Mimo iż przepisanie konfiguracji powyżej do pliku .htaccess jest trywialne, niestety nie działa. Apache doda znak "/" na końcu każdego URLa w Tracu, który będzie oddziaływał ze swoją odpowiednią operacją.
Możliwe jest obejście tego przy użyciu mod_rewrite, lecz mi się nie udało tego dokonać. Co więcej, jest to trudniejsze niż mogłoby się wydawać więc trzymaj się ściśle informacji poniżej. :)
=== Wskazówki dla Win32 ===
Jeśli działasz na Tracu z mod_pythonem (3.1.3 lub 3.1.4) na Windows, uploadowanie załączników '''nie''' będzie działać. Jest to znany problem, który nie może być rozwiązany na poziomie samego Traca.
Jakkolwiek, istnieje obejście na poziomie mod_pythona, które polega na zaaplikowaniu patcha [http://projects.edgewall.com/trac/attachment/ticket/554/util_py.patch attachment:ticket:554:util_py.patch] na pliku (Lib/site-packages)/modpython/util.py.
Jeśli nie dysponujesz poleceniem `patch`, to możesz podmienić twój plik z [http://svn.apache.org/viewcvs.cgi/httpd/mod_python/trunk/lib/python/mod_python/util.py?rev=103562&view=markup fixed util.py] (poprawione w stosunku do wersji 3.1.4).
=== Wskazówki dla OS X ===
Jeśli używasz mod_pythona na OS X, możesz nie być w stanie zrestartować Apacha przy użyciu `apachectl restart`. Zostało to poprawione w mod_pythonie 3.2, ale istnieje również [http://www.dscpl.com.au/projects/vampire/patches.html poprawka] dla starszych wersji.
----
Zobacz również TracGuide, TracInstall, TracCgi, TracFastCgi