Trac to połączenie wiki, kontroli błędów oraz systemu zarządzania projektami. Jest to open source aplikacja napisana w Pythonie, działająca jako witryna sieci web.

Jako web developer, lubiÄ™ mieć porzÄ…dek w projektach – notatki, pomysÅ‚y listÄ™ błędów i todo. To wszystko plus interfejs webowy do repozytorium SVN danego projektu daje mi Trac. Dlatego kilka dni temu postanowiÅ‚em zainstalować ten software na swoim komputerze, który biega pod kontrolÄ… Ubuntu 8.10.

Trafiłem na bardzo przejrzysty tutorial, który krok po kroku przeprowadzi nas przez proces instalacji. Jako że owy przewodnik jest w wersji angielskojęzycznej, postanowiłem się z grubsza zaprezentować howto w wersji polskiej.

UWAGA! Przewodnik w wersji polskiej przygotowano na bazie oryginaÅ‚u. Przetestowano z powodzeniem dziaÅ‚anie na Ubuntu 8.10. Autor bloga nie gwarantuje dziaÅ‚ania aplikacji Trac w każdej wersji systemu – zależy to w głównej mierze od aktualnej konfiguracji systemu. Przewodnik przygotowany dla Å›rednio zaawansowanych użytkowników systemu Linux.

W Ubuntu jest o tyle łatwo, że wystarczy wywołać komendę

% sudo apt-get install trac

aby zainstalować Trac’a wraz z zależnymi pakietami.

Oczywiście do działania potrzebujemy serwer Apache, ale on jest instalowany domyślnie z Ubuntu.

Ważne teraz, aby zainstalować moduł Pythona dla Apache. W tym celu wykonujemy

% sudo apt-get install libapache2-mod-python2.4

W kolejnym kroku, zakładamy katalog w którym będą trzymane pliki naszych projektów:

% sudo mkdir /var/lib/trac
% sudo chown www-data:www-data /var/lib/trac

W pierwszej linii załozono katalog, w grugiej nadano prawa własności oraz grupy dla użytkownika www-data (Apache).

Następnie edytujemy <virtualhost> w Apache (prawdopodobnie będzie to plik dostępny /etc/apache2/sites-enabled/ (nazwa zależna od konfiguracji Apache, u mnie plikiem tym jest /etc/apache2/sites-enabled/default)). Wpis powinien mieć postać:

<Location /projects>
    SetHandler mod_python
    PythonHandler trac.web.modpython_frontend
    PythonOption TracEnvParentDir /var/lib/trac
    PythonOption TracUriRoot /projects
</Location>

Godne uwagi – /projects – bÄ™dzie to URI pod jakim bÄ™dzie dostÄ™pna lista wszystkich hostowanych projektów. NazwÄ™ można zmienić na dowolnÄ… (np. /trac) w dwóch miejscach, linii pierwszej oraz piÄ…tej powyższego wpisu.

Do zakładanego projektu możemy (opcjonalnie) podpiąć repozytorium SVN. Jeśli nie mamy repozytorium, możemy je bardzo prosto utworzyć wykonując poniższy kod:

% sudo mkdir /var/lib/svn
% sudo mkdir /var/lib/svn/[NAZWA PROJEKTU]
% sudo svnadmin create /var/lib/svn/[NAZWA PROJEKTU]

gdzie zamieniamy [NAZWA PROJEKTU] na dowolny ciąg znaków alfanumerycznych.

Następnie zmieniamy prawa własności z root na www-data i restartujemy serwer Apache:

% sudo chown -R www-data /var/lib/svn/[NAZWA PROJEKTU]
% sudo chown -R www-data /usr/share/trac
% sudo /etc/init.d/apache2 restart

Projekt Trac zakładamy poprzez wywołanie komendy:

% sudo trac-admin /var/lib/trac/[NAZWA PROJEKTU] initenv

Aplikacja trac-admin zada nam kilka pytań i zdefiniuje środowisko naszego projektu. Niestety robi wszystko jako użytkownik root, dlatego musimy jeszcze raz skorygować prawa własności z root na www-data:

% sudo chown -R www-data /var/lib/trac/[NAZWA PROJEKTU]

Teraz po otwarciu w przeglądarce adresu http://localhost/projects (w zależności co zdefiniowaliśmy w konfiguracji Apache) powinna ukazać się nam lista dostępnych projektów wraz z linkami do nich.

Ostatnim krokiem, chociaż wcale nie wymaganym, jest włączenie uwierzytelnienia.
W tym celu tworzymy plik haseł za pomocą dostępnego wraz z Apache htpasswd:

% sudo htpasswd -c /var/lib/trac/[NAZWA PROJEKTU]/.htpasswd [NAZWA UZYTKOWNIKA]

np.:

% sudo htpasswd -c /var/lib/trac/WebitPl/.htpasswd dominik

Po wywołaniu komendy htpasswd zostaniemy poproszeni o podanie oraz powtórzenie hasła. Jeśli oba będą takie same, do pliku /var/lib/trac/WebitPl/.htpasswd zostanie dodane hasło dla użytkownika dominik.

Na koniec informujemy serwer o możliwości uwierzytelniania użytkowników. Dokonujemy zatem prostej aktualizacji pliku z konfiguracją naszego serwera webowego:

<Location /projects>
    SetHandler mod_python
    PythonHandler trac.web.modpython_frontend
    PythonOption TracEnvParentDir /var/lib/trac
    PythonOption TracUriRoot /projects
    
    #dodajemy informacje o uwierzytelnieniu
    AuthType Basic
    AuthName "Trac Projects"
    AuthUserFile /var/lib/trac/[NAZWA PROJEKTU]/.htpasswd
    Require valid-user
</Location>

To wszystko. Uwierzytelnienie powinno dziaÅ‚ać – w prawym górnym rogu projektu Trac widoczny jest link Login. Po klikniÄ™ciu na niego, pojawi siÄ™ okienko do podania loginu i hasÅ‚a.