Trac con SVN su Ubuntu 9.04

 
Interfaccia di Admin di Trac

Per la gestione di progetti, sopratutto quando ci si lavora in più di una persona, ma anche nel caso della singola personaquando si ha la necessità di tracciare quello che viene fatto non può mancare un meccanismo di tracking. Tra questi strumenti quello che preferisco utilizzare è Trac, strumento completo che comprende:

  • Wiki per la gestione della documentazione del progetto.
  • Gestione ticket per la segnalazione di eventuali problemi e attività da svolgere
  • Integrazione con sitemi VCS come possono essere SVN, CVS, Mercury, Git, ...
  • Gestione delle tempistiche (Milestone, Relase, ...)
  • Visualizzazione del codice da web con gestione delle differenze, ...

Oltre a questo si ha la possibilità di integrare diversi plugin (scritti in python) che permettono di aggiungere le funzionalità di più disparate.
Vediamo ora come installarlo e configurarlo.

Innanzitutto andremo ad utilizzare questo applicativo gestendo tutto sulla stessa macchina, anche se è possibile andare ad utilizzare erpository remoti o interfacciarsi con servizi tramite XmlRpc (usando appositi plugin). L'installazione è stata fatta su una macchina Ubuntu 9.04 correttamente installata e aggiornata, quindi come prima cosa diamo:

sudo apt-get update
sudo apt-get upgrade

in modo da aggiornare il sistema. Il passo successivo è di installare tutti i pacchetti che verranno utilizzati, quindi:

sudo apt-get install apache2 libapache2-mod-python trac

a questo punto il sistema caricherà tutto quello che serve al sistema. Al termine del caricamento dei file andiamo a creare, nell'ordine:

  1. repository SVN da usare
  2. installazione e configurazione di trac collegato al repository
  3. interfacciamento con apache per permettere la navigazione da web.

Ci sono alcune cose che possono sembrare "particolari" in trac, quindi ve le accenno subito.

Innanzitutto ogni progetto è una sua istanza autonoma, quindi se abbiamo più progetti sarà necessario creare più istanze di trac. Questo permette di tenere il tutto ben compartimentato, a fronte di uno spreco di risorse (spazio su disco) veramente minimo.
Un altra caratteristica è che l'amministrazione avviene tramite shell e non da pannello web, anche se è possibile attivare (e lo faremo) questa funzionalità.
La caratteristica "forse" più particolare è data dalla mancanza di un meccanismo di autenticazione interno, infatti basa tutto il suo processo sulle autenticazioni fornite da sistemi esterni (siano esse le utenze SVN, LDAP, fornite da Apache, ...). Questo normalmente viene vsto come "sconvolgente" ma permette di avere una centralizzazione del meccanismo di autenticazione che alla fine risulta essere conveniente.

Creazione e configurazione di SVN

La prima cosa da fare è creare un repository SVN (ma potrebbe essere CVS, GIT, ... solo che la configurazione è più macchinosa) su cui andare ad inserire il codice che svilupperemo, quindi come prima cosa andiamo a creare una directory (di solito utilizzo la /home/svn come radice) in cui andare a memorizzare il repository, e inizializzare SVN all'interno di questa:

mkdir /home/svn
mkdir /home/svn/test
svnadmin create /home/svn/test

a questo punto possiamo iniziare a lavorare sul nostro repository SVN usando lo strumentdo che preferiamo, personalmente uso RapidSVN e NetBeans (ma Tortoise SVN e simili vanno bene nello stesso modo). Controlliamo che il checkout, il commit e le classiche operazioni funzionino senza problemi facendo un pò di test.

Inizializzazione di Trac collegato a SVN

Per l'installazione di Trac, dato che poi deve essere disponibile in rete tramite WEB preferisco usare le direcotry /var/www ma potremmo usare altre direcory assicurandoci che Apache abbia permesso il lettura su queste, quindi procediamo con:

sudo mkdir /var/www/trac
sudo mkdir /var/www/trac/test
sudo trac-admin /var/www/trac/test initenv

ora ci verranno proposte alcune domande di base per la configuazione, quindi:

Creating a new Trac environment at /var/www/trac/test

Trac will first ask a few questions about your environment
in order to initialize and prepare the project database.

Please enter the name of your project.
This name will be used in page titles and descriptions.

Project Name [My Project]> Progetto Test
...
Database connection string [sqlite:db/trac.db]> ENTER
...
Repository type [svn]> ENTER
...
Path to repository [/path/to/repos]> /home/svn/test

Creating and Initializing Project
...
---------------------------------------------------------------------
Project environment for 'Progetto Test' created.
...
Congratulations!

Qui sopra ho estratto le parti più significative, quelle dove ci sono richiesta a cui dobbiamo rispondere, nel mio caso il progetto è stato chiamato Progetto Test, come database per Trac ho lasciato SQL Lite interno (sebbene sia possibile usare mysql attualmente non ve lo consiglio a causa di alcune piccole instabilità), per la creazione del repository ho prima confermato che si tratta di un repository SVN e quindi ho indicato in quale percorso andare a trovare il repository. Sarebeb possibile indicare anche un percorso remoto, in modo da tenere SVN e Trac su macchien diverse ma non dovrebbe essere necessario salvo esigenze particolari. Tutto è proseguito fino al termine senza problemi, quindi ora il nostro progetto Trac è attivo e funzionante.

Integrazione in Apache2

Ora si tratta di rendere il nostro progetto Trac disponibile anche da interfaccia web, quindi dobbiamo andare a interfacciarlo con Apache. Per fare questo andiamo a caricare in apache il modulo per la gestione di progetti in python (si, trac è scrtitto in python ;))

sudo a2enmod python
sudo apache2ctl restart

Creaimo il Virtual Host di apache:

sudo nano /etc/apache2/sites-available/trac

e dentro scriviamoci (modificando il nome del sito):

<VirtualHost *:80>
  ServerAdmin webmaster@localhost
  ServerName  trac.miosito.tpl
 
  DocumentRoot /var/www/trac
  <Directory />
    Options FollowSymLinks
    AllowOverride All
  </Directory>
 
  ErrorLog /var/log/apache2/error.trac.log
 
  # Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
  LogLevel warn
 
  CustomLog /var/log/apache2/access.trac.log combined
 
  <LocationMatch "/[^/]+/login">
    AuthType Basic
    AuthName "Trac"
    AuthUserFile /var/www/trac/.htpasswd
    Require valid-user
  </LocationMatch>
 
  <Location />
    SetHandler mod_python
    PythonInterpreter main_interpreter
    PythonHandler trac.web.modpython_frontend
    PythonOption TracEnvParentDir /var/www/trac
    PythonOption TracUriRoot /
  </Location>
</VirtualHost>

Assegnamo i corretti permessi alla directory del trac e aggiungiamo il stito e ricarichiamo i dati di apache.

sudo chown -R www-data:www-data /var/www/trac
sudo a2ensite trac
sudo /etc/init.d/apache2 reload

A questo punto andando a visitare il sito http://trac.miosito.tpl/ vedremo l'lenco dei progetti trac attivati, accedendo al nostro Progetto Test possiamo andare a vedere il nostro trac per il progetto. Ora vediamo di gestire l'autenticazione, la strada più semplice è di ricorrere all'utilizzo dell'autenticazioend i apache (l'abbiamo anche già configurata precedentemente nel file del virtual host), quindi creaimo il file di autenticazione tramite:

sudo htpasswd -c /var/www/trac NOMEUTENTE

e inseriamo la password che ci viene richiesta. Per l'aggounta di utenti successivi omettiamo il parametro -c che indica la cerazione del file nuovo:

sudo htpasswd /var/www/trac ALTRO_NOMEUTENTE

a questo punto possiamo andare ad aggiungere tutti gli utenti che vogliamo avere nei nostri progetti. Per semplificare ora abbiamo fatto in modo che tutti i progetti utilizzino la stessa autenticazione, ovviamente è possibile avere autenticazioni differenti per progetti differenti, nel caso ciò sia necessario.

Configuarzione dei permessi di Trac

Abbiamo detto che i permessi delle operazioni che gli utenti (anonimi ed autenticati) possono fare sul trac sono configurabili da shell, quindi andiamo a impostare i permessi che desideriamo, e prima di tutto abilitiamo l'interfaccai di amministrazione da WEB (comoda per il setup iniziale, dopo la prima configurazione possiamo disabilitarla).

Iniziamo a vedere che permessi sono attualmente impostati:

sudo trac-admin /var/www/trac/test/ permission list

ed ora aggiungiamo i permessi che riteniamo opportuni (in questo caso gli utenti autenticati possono amministrare il trac da interfaccai web):

sudo trac-admin /var/www/trac/test/ permission add autenticated TRAC_ADMIN

e rimuoviamo i permessi che riteniamo troppo aperti (tolgo tutto per gli utenti anonimi):

permission remove anonymous BROWSER_VIEW CHANGESET_VIEW FILE_VIEW LOG_VIEW
permission remove anonymous MILESTONE_VIEW REPORT_SQL_VIEW REPORT_VIEW
permission remove anonymous ROADMAP_VIEW SEARCH_VIEW TICKET_VIEW
permission remove anonymous TIMELINE_VIEW WIKI_VIEW

Ora possiamo andare ad affinare le diverse caratteristiche da panenllo Web, aggiungendo i permessi e gli elementi nel trac.

Vedremo prossimamente come estendere il nostro Trac con altre funzionalità e come configurarlo in maniera produttiva per la gestione del processo.

Altri contenuti che potrebbero interessarti

  • FailToBan
    Ebbene sì, capita... non sono un sistemista, ma capita di dover mettere on-line dei server, un server on-line dopo pochi giorni di presenza on-line, e senza ancora essere stato pubblicato (in pratica era una macchina fantasma) inizia a subire attacchi. Boot sparsi in giro per la rete scansionano le...
  • Il sistema che andremo ad utilizare per effettuare il backup della nostra infrastruttura (che sia il nostro PC locale, un server o più di una macchina) si basa sull'utilizzo del tool duplicity. Questo strumento si integra con sistemi di storage quali FTP, SSH, ma -motivo per cui l'ho scelto, Amazon...
  • Questa breve guida si prefigge lo scopo di installare un mailserver per l'invio di posta all'interno di un organizzazione con una serie di utenti che possono accedere sia tramite un qualsiasi client di posta (Outlook, Outlook Express, Thunderbird, Evince, ...) che tramite una webmail ospitata sul...
  • Redmine e Ubuntu
    Quando si lavora (come sviluppatori, ma anche in altre occasioni) in un team è quasi fondamentale avere un sistema per la gestione del codice oltre ad un sistema per la gestione del progetto. Inizialmente avevo utilizzato trac, strumento ottimo, ma con alcuni vincoli, il più evidente: essere...

Commenti

Ritratto di Alessandro

Complimenti per la tua

Complimenti per la tua guida!
Chiarissima e completa. :-)

Invia nuovo commento





  • Elementi HTML permessi: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img> <h2> <h3> <h4> <table> <thead> <tbody> <tr> <th> <td>
  • You may post code using <code>...</code> (generic) or <?php ... ?> (highlighted PHP) tags.
  • Linee e paragrafi vanno a capo automaticamente.
  • Indirizzi web o e-mail vengono trasformati in link automaticamente

Maggiori informazioni sulle opzioni di formattazione.



Condividi contenuti