## page was renamed from ZAO/Configuration/Trac
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 [[http://trac.edgewall.org/wiki/WebAdmin|webadmin pour trac]]
''A ajouter ici'' : la doc de la configuration de base de tout cela...
= Ajouter un projet =
1. 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/*
}}}
1. 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
}}}
1. 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
}}}
1. 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.
1. Configurer les droits sur le Trac.
a. 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
}}}
a. 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
}}}
a. 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 !
1. 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
SetEnv TRAC_ENV "/srv/trac/nom-du-projet"
AuthType Basic
AuthName "Trac Nom du Projet"
AuthUserFile /etc/trac/nom-du-projet.htpasswd
Require valid-user
# 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').
Require valid-user
}}}
. Pour la configuration complète, voir [[attachment:fichier-complet-apache2-default.txt]]
Vérifications et finitions :
1. Aller sur `http://trac.sn.auf.org/nom-du-projet` et vérifier qu'on peut naviguer
1. Se loger sur le site Trac et aller dans l'interface d'administration (bouton Admin en haut à droite), modifier des détails si besoin
1. Tenter des ''checkout'', ''update'' puis des ''commit'' sur le dépot svn
1. 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 :
1. au niveau du déport SVN de GUAI, on a un script `hooks/post-commit` : {{{
#!/bin/sh
# Mise a jour de la demo live sur demo-guia.sn.auf.org
/usr/local/bin/guia-update
}}}
2. 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
}}}