Come configurare l'accesso a SVN su DAV e l'uso di Trac per repository multipli
Attenzione: il materiale qui presente è assolutamente preliminare e in fase di elaborazione, se ne eviti l'uso fin tanto che questo avviso non sarà rimosso.
Il primo passo è eseguire la configurarazione per l'uso di Subversion su DAV, per questo occorre usare Apache 2.0, ed utilizzare il modulo specifico, che nel caso di Debian viene installato con il pacchetto libapache2-svn. Per poterlo utilizzare basta aver cura di abilitarlo in /etc/apache2/mods-enabled.
Nel nostro caso si userà un virtual host dedicato, che è svn.truelite.it sotto cui compariranno tutti i repository; si suppone inoltre che i dati (quelli di Subversion) ad essi relativi stiano al di sotto di una sola directory (nel caso /var/svn/truelite), la configurazione da usare è:
<VirtualHost *:80>
ServerName svn.truelite.it
ServerAlias svn.truelite.bz
DocumentRoot /var/www/svn.truelite.it
Redirect / https://svn.truelite.it/
</VirtualHost>
<VirtualHost *:443>
DocumentRoot /var/www/svn.truelite.it
Servername svn.truelite.it
ServerAlias svn.truelite.bz
ErrorLog /var/log/apache2/svn.truelite.it-error.log
CustomLog /var/log/apache2/svn.truelite.it-access.log combined
Alias /trac "/usr/share/trac/htdocs/"
<IfModule mod_ssl.c>
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/ssl.crt/server.crt
SSLCertificateKeyFile /etc/apache2/ssl/ssl.key/server.key
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
</IfModule>
<Location /svn>
DAV svn
SVNParentPath /var/svn/truelite
#SVNIndexXSLT /svnindex.xsl
<LimitExcept GET PROPFIND OPTIONS REPORT>
AuthName "Truelite SVN"
AuthType Basic
AuthLDAPURL ldap://127.0.0.1/ou=People,dc=truelite,dc=it
Require valid-user
</LimitExcept>
</Location>
# configurazione di Trac
...
</VirtualHost>
A questo punto occorrerà creare l'ambiente di Trac, per questo si usa il comando trac-admin, in genere i relativi dati si memorizzano sotto /var/trac, nel nostro caso metteremo tutto sotto /var/trac/truelite. Per ciascun repository si dovrà creare l'ambiente iniziale con qualcosa del tipo:
trac-admin /var/trac/truelite/migr-manager initenv
questo creerà la directory con tutti i dati di Trac, ma essendo eseguito da root in genere i permessi non sono corretti per l'accesso da parte di Apache, pertanto occorrerà modificarli con:
chown -R www-data.www-data /var/trac/truelite/packages
Inoltre in genere i permessi degli utenti Trac sono impostati al default (che ad esempio prevede la scrittura anonima del wiki), è pertanto il caso di assegnarli adeguatamente con:
trac-admin /var/trac/truelite/packages permission remove anonymous WIKI_CREATE WIKI_MODIFY trac-admin /var/trac/truelite/packages permission add authenticated MILESTONE_CREATE trac-admin /var/trac/truelite/packages permission add authenticated MILESTONE_DELETE trac-admin /var/trac/truelite/packages permission add authenticated MILESTONE_MODIFY trac-admin /var/trac/truelite/packages permission add authenticated REPORT_ADMIN trac-admin /var/trac/truelite/packages permission add authenticated REPORT_DELETE trac-admin /var/trac/truelite/packages permission add authenticated ROADMAP_ADMIN trac-admin /var/trac/truelite/packages permission add authenticated TICKET_ADMIN trac-admin /var/trac/truelite/packages permission add authenticated WIKI_ADMIN trac-admin /var/trac/truelite/packages permission add authenticated WIKI_CREATE trac-admin /var/trac/truelite/packages permission add authenticated WIKI_DELETE trac-admin /var/trac/truelite/packages permission add authenticated WIKI_MODIFY
Infine si potranno rendere disponibili le pagine di Trac in maniera automatica utilizzando le rewrite rules di Apache, in questo modo all'accesso ad una URL sotto /trac/progetto, verrà invocato automaticamente lo script CGI di Trac con il corretto environment:
# configurazione di Trac
<LocationMatch (.*)/login>
AuthName "Truelite-Trac"
AuthType Basic
AuthLDAPURL ldap://127.0.0.1/ou=People,dc=truelite,dc=it
Require valid-user
</LocationMatch>
RewriteEngine on
RewriteRule ^/trac/+$ /index.cgi [L]
RewriteCond /var/trac/truelite/$1 -d
RewriteRule ^/trac/([-[:alnum:]]+)(/?.*) /trac.cgi$2 [S=1,E=TRAC_ENV:/var/trac/truelite/$1]
ErrorDocument 404 /index.cgi
