Installare Trac su uWSGI

Attualmente (Settembre 2009), Trac puo' essere utilizzato in 2 modi:

tramite l'istallazione di sistema (versione 0.10.4 di ubuntu hardy) in modalita' CGI

tramite uWSGI istallando la versione che si preferisce

La prima modalita' e' deprecata e il suo howto si puo' ancora trovare qui

I requisiti minimi sono almeno un processo da 64MB libero

fase1: scaricare gli egg

uWSGI permette di caricare dinamicamente gli egg da qualsiasi directory, inizieremo quindi con lo scaricare i 2 egg necessari, Trac e Genshi (il suo sistema di templating)

Gli egg di trac possono essere scaricati da qui:

http://pypi.python.org/pypi/Trac

mentre quelli di Genshi sono disponibili sul sito ufficiale:

http://genshi.edgewall.org/wiki/Download

fase2: lo script wsgi

Uno dei problemi di Trac in ambienti dove non si dispone di accesso ssh e' che per creare una istanza e' necessario lanciare il comando trac-admin. Nel corso degli anni abbiamo fornito varie soluzioni (tra cui un plugin per la Console), ma di sicuro l'approccio migliore e' sfruttare l'ambiente WSGI e rendere completamente dinamiche le istallazioni.

Lo script wsgi sara' quindi modificato per verificare in fase di avvio che l'istanza richiesta sia gia' configurata, e in caso negativo la inizializza con dei valori di default.

Lo script wsgi e' il seguente (chiamatelo trac_wsgi.py, siete liberi di modificarlo come ritenete opportuno)

import os
import trac.web.main

trac_project = '/www/mytrac/project'

os.environ['TRAC_ENV'] = os.environ['HOME'] + trac_project

if not os.path.exists(os.environ['TRAC_ENV'] + '/VERSION' ):
        from trac.admin import console

        tc = console.TracAdmin()
        tc.envname = os.environ['TRAC_ENV']
        tc.do_initenv("'Unnamed Project' 'sqlite:db/trac.db' '' ''")

application = trac.web.main.dispatch_request

e' sufficiente modificare la variabile trac_projects per aggiungere nuovi progetti

fase3: configurare il dominio

Dal pannello di controllo accedete alle opzioni del dominio su cui volete istallare trac. Abilitate il flag wsgi e specificate il nome dello script wsgi (senza estensione .py) nel campo wsgi_scriptname

Ora dobbiamo specificare quali egg caricare all'avvio. Nel campo wsgi_pythonpath elenchiamo (uno per linea) i path (relativi alla home) degli egg scaricati. Ex:

/www/mytrac/Genshi-0.5.1-py2.5-linux-i686.egg
/www/mytrac/Trac-0.11.4-py2.5.egg

Salvate le impostazioni, attendete 30 secondi e la vostra istanza di Trac sara' avviata al primo accesso del browser.

"Montare" Trac in una uri specifica

E' facile che abbiate la necessita' di avere trac in una uri diversa dalla radice (ex. /trac).

In tal caso cancellate il campo wsgi_scriptname e impostate il parametro wsgi_mountpoints in questo modo

/trac trac_wsgi

Processi e stderr_log

Ovviamente, in caso di modifiche ai moduli o alla configurazione di trac e' necessario riavviare uWSGI. Nel pannello di controllo accedete alla sezione Processi e inviate il segnale di TERM (o KILL) al processo (o ai processi) di Trac.

Tenete sempre d'occhio anche il file stderr_log nella vostra home. Vi vengono loggate tutte le informazioni di uWSGI compreso l'output della generazione delle istanze di trac.

Se ricevete degli errori il file stderr_log e' il primo posto dove guardare.

HowtoTrac (l'ultima modifica รจ del 2009-11-16 15:25:56, fatta da RobertoDeIoris)