## 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 }}}