Configuration du serveur Trac http://trac.sn.auf.org/
Installation du système de base
- Instance Xen Debian 4.0 (Etch), accessible également en IPv6 pour frimer.
Paquets : apache2, trac, subversion, subversion-tools, libapache2-svn
Plugin webadmin pour trac
A ajouter ici : la doc de la configuration de base de tout cela...
Ajouter un projet
Ajouter un dépot SVN :
# svnadmin create /srv/subversion/nom-du-projet # chgrp -R subversion /srv/subversion/nom-du-projet/* # note : www-data est dans le groupe subversion # chmod -R g+w /srv/subversion/nom-du-projet/*
Ajouter un site trac associé :
# mkdir /srv/trac/nom-du-projet # trac-admin /srv/trac/nom-du-projet initenv ... et répondre aux questions : Project Name [My Project]> Nom Du Projet Database connection string [sqlite:db/trac.db]> Repository type [svn]> Path to repository [/path/to/repos]> /srv/subversion/nom-du-projet Templates directory [/usr/share/trac/templates]> # chown -R www-data:www-data /srv/trac/nom-du-projet
Configurer le site trac dans /srv/trac/nom-du-projet/conf/trac.ini :
# # extraits de /srv/trac/nom-du-projet/conf/trac.ini # (...) [header_logo] alt = height = -1 link = http://trac.sn.auf.org/nom-du-projet src = common/trac_banner.png width = -1 (...) [project] descr = La description du projet footer = Un petit texte affiché en bas des pages du Trac icon = common/trac.ico name = nom-du-projet url = http://trac.sn.auf.org/nom-du-projet (...) # à ajouter à la fin pour activer le plugin webadmin : [components] webadmin.* = enabled
Créer le fichier htpasswd pour trac et subversion :
# htpasswd -c /etc/trac/projet.htpasswd thomas New password: Re-type new password: Adding password for user thomas # htpasswd /etc/trac/projet.htpasswd tini ... etc ...
Note : on peut parfaitement copier des lignes de /etc/shadow ou d'un autre fichier /etc/trac/xxx.htpasswd déjà existant.
- Configurer les droits sur le Trac.
D'abord on met les utilisateurs dans un groupe admin :
# trac-admin /srv/trac/nom-du-projet permission add thomas admins # trac-admin /srv/trac/nom-du-projet permission add tini admins
Ensuite on donne les droits à ce groupe :
trac-admin /srv/trac/nom-du-projet permission add admins MILESTONE_ADMIN REPORT_ADMIN ROADMAP_ADMIN TICKET_MODIFY TRAC_ADMIN WIKI_ADMIN
Et on peut même vérifier si tout semble ok :
# trac-admin /srv/trac/nom-du-projet permission list # pour vérifier
Note : avec les droits ci-dessus le site Trac reste très ouvert, notamment la partie wiki où tout le monde peut écrire. C'est un wiki, quoi !
Et enfin ajouter l'accès via Apache :
# extrait de /etc/apache2/sites-available/trac-svn # trac "nom-du-projet" ScriptAlias /nom-du-projet /usr/share/trac/cgi-bin/trac.cgi <Location /nom-du-projet> SetEnv TRAC_ENV "/srv/trac/nom-du-projet" </Location> <Location "/nom-du-projet/login"> AuthType Basic AuthName "Trac Nom du Projet" AuthUserFile /etc/trac/nom-du-projet.htpasswd Require valid-user </Location> # svn "nom-du-projet" <Location "/svn/nom-du-projet"> DAV svn SVNPath /srv/subversion/nom-du-projet AuthType Basic AuthName "Nom du Projet Subversion Repository" AuthUserFile /etc/trac/nom-du-projet.htpasswd # The following three lines allow anonymous read, but make # committers authenticate themselves. It requires the 'authz_user' # module (enable it with 'a2enmod'). <LimitExcept GET PROPFIND OPTIONS REPORT> Require valid-user </LimitExcept> </Location>
Pour la configuration complète, voir fichier-complet-apache2-default.txt
Vérifications et finitions :
Aller sur http://trac.sn.auf.org/nom-du-projet et vérifier qu'on peut naviguer
- Se loger sur le site Trac et aller dans l'interface d'administration (bouton Admin en haut à droite), modifier des détails si besoin
Tenter des checkout, update puis des commit sur le dépot svn
Eventuellement, modifier /var/www/index.html pour référencer ce nouveau projet sur http://trac.sn.auf.org/
Ouf ! Fini !
A faire
authentification apache via libapache2-mod-auth-pam
Ajouter mod_python le jour où trac deviendra lent, ou bien en tracd
CNAME svn.sn.auf.org pour que les URL svn soient encore plus courtes (svn.sn.auf.org/guai au lieu de trac.sn.auf.org/svn/guai)
Lancer un "vrai" serveur svnserver ?
Mise à jour automatique de demo-guia
Sur un serveur en virtualhost nommé demo-guia.sn.auf.org on fait tourner une démo "live" de GUIA. A chaque commit SVN l'application est mise à jour. Le principe est assez simple :
au niveau du déport SVN de GUAI, on a un script hooks/post-commit :
# Mise a jour de la demo live sur demo-guia.sn.auf.org /usr/local/bin/guia-update
- le script guia-update : {{{#!/bin/sh
PATH=/bin:/usr/bin cd /home/wilane/guia
# On backupe la base de donnée de démo cp -f schema.db /tmp
# On met à jour le soft svn update -q
# si la base a été mis à zéro par SVN, on met la nouvelle version de coté (.new) # et on remet la base précédement sauvegardé dans /tmp if ! cmp -s /tmp/schema.db schema.db then
- cp -f schema.db schema.db.new cp -f /tmp/schema.db .
fi
# NOTE : ceci posera des soucis en cas de changement dans le format de la base !!! # C'est pour cela qu'on garde tout de même le schema.db.new au cas où...
# On efface le backup rm -f /tmp/schema.db
# On relance apache pour prendre en compte la nouvelle version du soft # Note : www-data a les autorisation sudo pour lancer apache-graceful # sans mot de passe, ce script effectuant un simple apache2ctl graceful sudo /usr/local/bin/apache-graceful }}}