= 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