====== Utilisation de Trac ====== [[http://trac.edgewall.org/|Trac]] est un système complet de gestion de projet. Il est développé en Python tout comme Bazaar et intègre un wiki, une gestion des feuilles de route, un historique, un outil de rapport de bugs et un explorateur de code source. Trac est généralement utilisé en couple avec SVN mais des plugins existent pour le faire cohabiter avec d'autres gestionnaires de versions. Note : Les commandes de cette page doivent être exécutées en **root**. Cet article est aussi intimement lié à celui concernant l'[[gnu_linux_server:code_versioning:bazaar:bzr_ssh_server|installation de Bazaar]]. ===== Installation ===== Par défaut, Trac ne supporte pas les dépôts de code au format Bazaar, il va donc falloir installer un plugin pour que tout fonctionne. De plus, Trac est livré avec le démon **tracd** qui permet d'accéder via un navigateur web à l'interface. Cependant, si l'on fait tourner un serveur web sur la machine hébergeant le Trac (ce qui est souvent le cas), on ne peut donc pas lancer le démon sur le port 80. Il peut alors être utile de configurer le serveur web pour accéder au contenu de Trac sans passer par **tracd**. Ici, nous utiliserons Apache 2 comme serveur web. On installe donc les paquets nécessaires avec la commande suivante. aptitude install trac trac-bzr trac-spamfilter libapache2-mod-python Le paquet **trac-bzr** correspond au plugin Bazaar, **trac-spamfilter** permet d'éviter les spams sur les rapports de bugs et **libapache2-mod-python** est un module Apache pour pouvoir gérer les sites web codés en Python. ===== Configuration ===== Une fois installé, on va crée un répertoire qui va contenir dans le futur toutes les instances de Trac. mkdir /var/trac On peut ensuite initialiser une instance pour le projet Bazaar. trac-admin /var/trac/mon_projet initenv Une suite de questions est posée. Il faut y répondre correctement pour indiquer le chemin du projet, le type de dépôt, etc. Voici un exemple (limité au strict minimum) de ce qui doit s'afficher dans le terminal. #Le nom du projet Project Name [My Project]> Mon Projet # Valider sans rien répondre Database connection string [sqlite:db/trac.db]> # Entrer "bzr" pour Bazaar Repository type [svn]> bzr # Chemin vers la racine de la branche Path to repository [/path/to/repos]> /var/bzr/mon_projet/ma_branche Après ceci, l'instance de Trac n'est ni fonctionnelle ni accessible. En effet, il faut d'abord activer les plugins installés afin que Trac ouisse prendre en compte le projet Bazaar. Pour cela, il faut éditer le fichier ///var/trac/mon_projet/conf/trac.ini// et ajouter à la fin les lignes suivantes. [components] tracbzr.* = enabled tracspamfilter.* = enabled Pour prendre en compte cette nouvelle configuration, il faut mettre à jour l'instance Trac. trac-admin /var/trac/mon_projet upgrade À ce stade, l'instance est fonctionnelle mais elle n'est pas encore accessible au travers du serveur web. De plus, aucun compte n'a été créé et donc Trac ne peut savoir si le visiteur est un administrateur, un développeur ou une personne anonyme. Pour y remédier, il faut créer un fichier qui va contenir toutes les personnes autorisées à se connecter sur l'instance de Trac. htpasswd -c /var/trac/mon_projet/trac.htpasswd mon_utilisateur L'option **-c** permet de créer le fichier. Après avoir validé, le mot de passe de l'utilisateur sera demandé. Il suffit de l'entrer et l'utilisateur sera ajouté. Pour en ajouter un autre par la suite, il faut veiller à ne pas utiliser l'option **-c**. Trac a sa propre gestion des groupes et des utilisateurs. La liste de ces derniers est enregistrée dans le fichier ///var/trac/mon_projet/trac.htpasswd// que nous avons créé précédemment. Pour davantage de sécurité, il est conseillé de retirer certaines permissions au personnes non autorisées et non connectées. Les anonymes ne doivent pas pouvoir modifier le wiki ni les tickets déjà créés. trac-admin /var/trac/mon_projet permission remove anonymous WIKI_CREATE WIKI_MODIFY TICKET_MODIFY En revanche, les développeurs doivent être capables de faire toutes ces actions. Il est alors possible de créer un groupe **developer** avec les droits qui vont bien et en y ajoutant les personnes concernées. trac-admin /var/trac/mon_projet permission add developer WIKI_CREATE WIKI_MODIFY TICKET_MODIFY trac-admin /var/trac/mon_projet permission add mon_utilisateur developer Enfin, le mainteneur du projet doit obtenir tous les droits, y compris ceux qui lui permettront d'administrer le système pour modifier les types de rapport de bug, les feuilles de route, etc. trac-admin /var/trac/mon_projet permission add mon_utilisateur TRAC_ADMIN Une fois que l'instance Trac sera mise en ligne, les personnes enregistrées auparavant pourront se connecter et celles désignées comme administrateurs auront accès au bouton **ADMIN** pour configurer Trac plus facilement. ===== Accès par HTTP ===== L'instance Trac étant fonctionnelle, il faut désormais la rendre disponible via le web par le serveur Apache. Pour commencer au s'assure d'avoir activé le **mod_python** précédemment installé. a2enmod python Ensuite, il faut créer un nouveau site qui va pointer vers l'instance de Trac et qui va utiliser le bon fichier pour pouvoir se connecter avec un utilisateur enregistré. Pour cela, il faut éditer un fichier de **VirtualHost** comme ///etc/apache2/sites-available/mon_projet// et y mettre un code similaire à celui qui suit. SetHandler mod_python PythonHandler trac.web.modpython_frontend PythonInterpreter main PythonOption TracEnv /var/trac/mon_projet PythonOption TracUriRoot /mon_projet SetEnv PYTHON_EGG_CACHE /tmp AuthType Basic AuthName "mon_projet login" AuthUserFile /var/trac/mon_projet/trac.htpasswd Require valid-user Il faut également penser à donner l'accès à Apache pour qu'il puisse accéder au contenu de l'instance Trac. chown -R www-data:www-data /var/trac/mon_projet Pour finir, le site doit être activé et la configuration de Apache rechargée. a2ensite mon_projet /etc/init.d/apache2 restart Il est également conseillé de penser au [[gnu_linux_server:webserver_apache_2:mod_macro|mod_macro]] si les instances de Trac à gérer se multiplient et également au [[gnu_linux_server:webserver_apache_2:mod_ssl|mod_ssl]] pour mieux sécuriser la connexion des utilisateurs.