Installer et configurer Apache2, Trac et Subversion sur Ubuntu
Par NiKo le mardi 5 septembre 2006, 00:01 - Ubuntu
- Lien permanent -
37 commentaires -
Tags :
J'avais besoin d'un outil simple et complet pour gérer mes projets de développement hébergés sur ma nouvelle Dédibouate flambant neuve et fraîchement équipée d'une distribution linux Ubuntu Dapper Drake LTS. Naturellement, Trac et son copain Subversion se sont imposés comme une évidence, d'autant que je les utilisent déjà au quotidien dans mon travail.
Je me mis alors en quête d'informations sur la procédure d'installation de ces outils sur Ubuntu avec mon copain Google. Je suis tombé sur moult liens interessants mais pas toujours tout à fait complets ni exhaustifs ; aussi je décidai humblement de rédiger le présent billet faisant la synthèse de la procédure que j'ai utilisée et qui marche chez moi [1] 
Prérequis
Avant toute chose, il est bien entendu impératif de disposer d'une distribution Ubuntu 6.06 LTS Dapper Drake et d'un accès root sur la machine.
Installation
Tout d'abord, activez les dépôts universe d'Ubuntu. Ceci fait, voici la liste des paquets à installer :
$ sudo apt-get update $ sudo apt-get install subversion libapache2-svn libapache2-mod-python2.4 trac
La version de Trac fournie par les dépôts Ubuntu est la 0.9.3 [2]. On crée le répertoire système pour les instances de Trac, par exemple dans /var/trac [3] sans oublier le de rendre accessible en écriture par apache:
$ sudo mkdir /var/trac $ sudo chown www-data:www-data /var/trac
Création d'une instance Trac pour votre projet
Il nous faut maintenant importer un projet dans Subversion. Pour l'exemple, nous créerons un projet nommé monzouliprojet. Pour cela, rien de plus simple... sauf pour les feignants. En étant moi-même un des plus féroces, j'ai pensé à mes compatriotes et leur ai créé un script qui leur permettra d'importer automatiquement leurs projets dans Subversion et de les rendre ainsi facilement accessibles à l'instance de Trac que nous créerons par la suite. Vous trouverez le code ici (certainement très perfectible, contributions bienvenues.)
Vous pouvez sauvegarder ce script dans un fichier create_svn_repo.sh par exemple, sans oublier de le rendre executable :
$ chmod +x create_svn_repo.sh
Il faudra bien sûr le lancer au moyen de sudo afin d'avoir les droits d'écritures dans les répertoires système concernés. Pour importer un nouveau projet Subversion à partir de vos sources existantes, il suffit de lancer le script et de répondre aux questions posées :
niko@nikobox:~$ sudo create_svn_repo.sh ####################################### Création d'un nouveau projet Subversion ####################################### Tapez le nom du nouveau projet : monzouliprojet Tapez maintenant le chemin du répertoire source : (Note: les répertoires trunk, branches et tags seront créés automatiquement) /home/niko/monzouliprojet/ Création du projet monzouliprojet depuis /home/niko/monzouliprojet/... Adding /tmp/svn/monzouliprojet/trunk Adding /tmp/svn/monzouliprojet/trunk/test Adding /tmp/svn/monzouliprojet/trunk/test/main ... Committed revision 1. Projet subversion monzouliprojet créé avec succès !
Note : Vous pouvez éditer le fichier du script pour y spécifier notament le chemin de la racine subversion [4] :
SVN_ROOT="/var/svn"
Ensuite, il faut initialiser l'environnement trac pour notre projet recemment importé dans Subversion, ce que l'on fait au moyen de la série de commande suivante [5] :
sudo mkdir /var/trac sudo trac-admin /var/trac/monzouliprojet initenv sudo chown -R www-data /var/trac/monzouliprojet
Notez encore une fois que je crée la racine trac dans /var/trac mais vous pouvez tout à fait utiliser un autre emplacement.
Créer un ou plusieurs utilisateurs Trac et Subversion, gérer les autorisations
Par défaut, une instance Trac permet à tous les visiteurs anonymes d'en modifier les contenus ; bien évidemment, c'est un comportement de l'application particulièrement risqué, ne serait-ce qu'en regard du spam potentiel que vous pourriez récolter. Nous allons donc successivement créer un utilisateur subversion, puis désactiver les contributions anonymes pour Trac et ajouter un utilisateur possédant les droits d'administration Trac. Notez que nous utiliserons le même fichier de stockage des noms d'utilisateurs et de mots de passe pour Trac et Subversion ; ce fichier sera appelé au niveau de notre fichier de configuration Apache - défini un peu plus bas dans ce tutoriel.
Créons tout d'abord le fichier de stockage des mots de passe Trac/Subversion [6] et ajoutons un utilisateur maintener :
$ sudo htpasswd2 -c /etc/apache2/dav_svn.passwd maintener
Attribuez-lui un mot de passe. Bien, cet utilisateur aura par la suite officiellement accès à notre dépôt Subversion. Donnons-lui maintenant les droits d'administration totale de Trac :
$ sudo trac-admin /var/trac/monzouliprojet permission add maintener TRAC_ADMIN
On peut également imaginer la création d'un compte utilisateur développeur, qui peut créer des tickets, en fermer et maintenir le wiki :
$ sudo htpasswd2 -c /etc/apache2/dav_svn.passwd dev $ sudo trac-admin /var/trac/monzouliprojet permission add dev WIKI_CREATE WIKI_MODIFY TICKET_CREATE TICKET_MODIFY
Il nous reste à desactiver les contributions anonymes :
$ sudo trac-admin /var/trac/monzouliprojet permission remove anonymous WIKI_CREATE WIKI_MODIFY TICKET_CREATE TICKET_MODIFY
Par la suite, vous pourrez effectuer la plupart de ces opérations par le biais du plugin WebAdmin dont nous détaillerons l'installation dans la partie suivante.
Vous trouverez plus d'informations sur les privilèges de Trac sur la page qui lui est consacrée.
Côté Subversion, il nous faut autoriser les checkouts anonymes mais s'assurer que'un utilisateur est authentifié avant d'accepter ses commits. Cela se configure très facilement dans le fichier /var/svn/monzouliprojet/conf/svnserve.conf, dans lequel vous pouvez saisir :
[general] anon-access = read auth-access = write password-db = passwd # authz-db = authz realm = MonZouliProjet Subversion Repository
Installer Trac WebAdmin
Trac WebAdmin est une interface web d'administration de votre ou vos instance(s) Trac offrant un confort appréciable pour administrer vos projets et en gérer les paramètres. Même si nous n'avons pas encore défini de vhost apache, rien ne nous empêche d'installer le plugin, qui passe d'abord par l'installation des setuptools :
$ wget http://peak.telecommunity.com/dist/ez_setup.py $ sudo python ez_setup.py
Ceci fait, téléchargez le fichier de plugin TracWebAdmin sur le site de Trac, supprimez son extension .zip et installez-le au moyen du programme easy_install précédemment installé, comme suit :
$ wget http://trac.edgewall.org/attachment/wiki/WebAdmin/TracWebAdmin-0.1.1dev_r2765-py2.4.egg.zip?format=raw $ mv TracWebAdmin-0.1.1dev_r2765-py2.4.egg.zip\?format\=raw TracWebAdmin.egg $ sudo easy_install TracWebAdmin.egg
Éditez votre fichier de configuration d'instance Trac :
$ sudo vi /var/trac/monzouliprojet/conf/trac.ini
Et ajoutez-y la section suivante (si elle n'existe pas) :
[components] webadmin.* = enabled
Enregistrez le fichier et quittez.
Créer un hôte virtuel Apache
Nous devons rendre accessible par le web notre instance de Trac ainsi que le dépôt Subversion associé, par le biais d'un hôte virtuel apache dédié :
$ sudo vi /etc/apache2/sites-available/trac.mondomaine.org
On y écrit les paramètres de notre hôte dédié, en admettant que nous disposons du domaine mondomaine.org nanti d'un sous-domaine trac :
<VirtualHost *>
ServerAdmin webmaster@mondomaine.org
ServerName trac.mondomaine.org
DocumentRoot /var/trac/monzouliprojet
<Location />
SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonOption TracEnv /var/trac/monzouliprojet
PythonOption TracUriRoot /
PythonPath "sys.path + ['/var/trac/monzouliprojet']"
</Location>
ErrorLog /var/log/apache2/error.trac.domaine.org.log
CustomLog /var/log/apache2/access.trac.domaine.org.log combined
<Location /svn>
DAV svn
SVNPath /var/svn/monzouliprojet
AuthType Basic
AuthName "Monzouliprojet Subversion repository"
AuthUserFile /etc/apache2/dav_svn.passwd
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>
<Location "/login">
AuthType Basic
AuthName "Trac login"
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
</Location>
</VirtualHost>
Vous devrez bien entendu enregistrer le domaine et le sous domaine dans votre fichier de configuration DNS, voire simplement dans votre fichier /etc/hosts si vous disposez d'un service de gestion DNS décentralisé comme celui que propose la société Gandi. Par exemple :
## Fichier /etc/hosts 127.0.0.1 localhost localhost.localdomain mamachine 123.124.125.126 trac.mondomaine.org
Nous utilisons mod_python (précédemment installé), n'oublions pas de l'activer :
$ sudo a2enmod mod_python
Ceci fait, il nous reste à activer le nouvel hôte apache et à relancer ce dernier :
$ sudo a2ensite trac.mondomaine.org $ sudo /etc/init.d/apache2 restart
Pour vérifier que tout s'est déroulé correctement, faites pointer votre navigateur préféré vers l'adresse trac.mondomaine.org, vous devriez accéder sans encombres à votre instance nouvellement créée. Vous pouvez vous logguer en cliquant sur le lien Login [7] et en fournissant les paramètres d'accès utilisateur que vous avez définis précédemment. Si vous vous logguez en administrateur Trac, vous devriez disposer du menu Admin donnant accès à l'extension WebAdmin où vous pourrez ajuster les paramètres de votre instance aux petits oignons.
Côté subversion, vous pouvez effectuer un checkout de votre projet de cette façon :
$ svn co http://trac.mondomaine.org/svn/trunk/ .
Un commit nécessitera cependant l'authentification ; vous pourrez forcer le nom d'utilisateur à utiliser :
$ svn commit -m "test de commit" main/test/toto.txt --username mainteneur
Sources et références
- Installer Subversion et Trac
- Trac : définition des politiques d’accès et de contribution
- Installer un dépôt Subversion sous Ubuntu
- TracOnUbuntu
Notes
[1] Y'a sans doûte mieux, plus simple, plus rapide, plus puissant, blah blah blah... le formulaire d'ajout de commentaire vous attend avec fébrilité.
[2] Ceux qui lorgnent sur la version 0.10 devront l'installer à la main. That's life.
[3] Pensez à remplacer ce chemin par celui que vous préférez dans le reste des exemples de ce tutoriel 
[4] Notez que si ce répertoire n'existe pas, le script tentera de le créer pour vous.
[5] Notez également que mon script vous proposera de lancer le script adéquat une fois le projet subversion correctement créé.
[6] Vous pouvez stocker ce fichier sensible où bon vous semble mais par pitié, pas derrière votre racine web et de préférence le rendre accessible en écriture par le seul utilisateur root.
[7] Wow !
37 commentaires (Ajouter un commentaire)
Bravo !!!
Seule amléioration à apporter : il faut utiliser htdigest2 pour un serveur tracd (et htpasswd2 pour un serveur Apache)
(issue de la page http://se.bioinfo.ulaval.ca/linux/t...)
Grand merci, je pars à Trac ... fbab !
/etc/hostsen regard de l'IP de ton serveur sur ton réseau ? Sinon, il faut que tu fasses pointer ton domaine vers l'IP publique de ton serveur. Des registrars comme Gandi le permettent gratuitement.Merci pour le tuto, je suis presque arrivé.
En bon débutologue, je n'arrive pas à créer un virtualhost accessible directement sur mon lan.
Que faut-il faire docteur ?
Je trouve que trac est super
... sauf le syntaxe wiki 
Pour info, Trac 0.10 vient de sortir: http://trac.edgewall.org/wiki/TracD...
C'est le métier qui rentre
J'avais oublie de faire un sudo apt-get update après la modif du sources.list
Yoh! Je débute hein! Alors pas de foutage de gueule ok?
:green:
Et pourtant...
Vérifies que tu as bel et bien les dépôts Universe activés.
Je pensais avoir trouvé ZEU HowTo et je vais pas plus loin que la deuxième ligne de commande MDR
Impossible de trouver le paquet trac
Mon sources.list est celui donné en exemple sur http://doc.ubuntu-fr.org/applications/apt/depots mais no way
Detected
Sinon un prochain billet illustrera l'utilisation de authz. Mais là, j'ai encore quelques milliers de JSP à tomber. Misère.
mat : merci aussi pour ce complément d'info - je me demandais d'où Niko pouvait sortir ces infos...
Niko : à quand la mise à jour du tutoriel ? (ou le billet complémentaire ?)
Mat> Merci pour l'info
2 petits détails si tu comptes faire du multi utilisateurs:
Ah, et puisqu'on parle de multi truc: trac gere le multi projets avec une conf globale en option. Ca evite de modifier les .ini de chaque projet quand on veut rajouter un truc.
Voila, sinon, chapeau, c'est un billet qui me donnerait envie d'utiliser trac si je ne le faisais pas déjà
Booooouuuh !
Snif, c'est pô gentil ce que tu dis...
:(
N'écoutez pas cet homme, il a bu.
oué !!
Enfin, je dis ça mais je dis rien hein...
je pourrais bien dire un dépot en troll.*******.net avec des projets très hype et très web 2.0 et pour lesquelles Google se bat déjà à corps et à cris...
Mais bon, ce serait dévoiler trop de choses...
En tous cas, celui qui trouve, il est balaise...
A vos marques, prêt, partez !
Oups, j'ai gaffé
Il est temps de mettre un point dans tout ça...
Le premier billet où les commentateurs teasent plus que l'auteur du billet...
/me a des infos mais n'a pas le droit de les dire...
la vie est trop injuste
kNo'> Stay tuned.
maaaaais-euh... j'y pense... elle a une adresse, ta dédiboîte ? on pourrait pas faire un truc du genre :
svn co http://dedibox.prendreuncafe.com/leprojetquidechire/me est curieux
Oups en effet
La conf initiale (avec le LimitExcept) est bonne en fait - a priori un bug de session chez eclipse ou svn
NiCoS> Mais avec ta manip les anonymes ne peuvent plus checkouter...
Tristan> Very great news !
NiCoS> Je checke ça !
Cool le truc pour easy_install - j'en avais entendu parler mais l'avait pas vu à l'oeuvre
Par contre, j'ai modifié :
<LimitExcept GET PROPFIND OPTIONS REPORT> Require valid-user </LimitExcept>en :
car sinon j'arrivais à commiter en anonyme sur mon chaudron
Encore un excellent billet
Merci
Promis je release les sources dès que j'ai un peu de temps (je vais essayer de faire ça pour la 0.2)
Tristan> J'étais sûr que tu dirais ça
Mais heuu c'est un projet opensource d'abord, Trac, et j'ai pas du tout copié ton script (puisqu'il est en python et que le mien est en bash - et que je capte rien à Python)
Quel copieeeeeeeeeeeeeeeeeeeeeeeeeeeeeeur celui-là !
elle est pas bien ma cleverbox ?
kNo'> Arf, désolé, mais si ton script est mieux gaulé que le miens (c'est pas dur) ça m'interesse quand même ! Et puis deux informations valent mieux qu'une, surtout si elles peuvent être complémentaires...
Private remark: Pis te plains pas pour ton net qui marche pas, ça fera des éléments à charge supplémentaires pour traîner ta deuxième télé dans la boue.
Jerem> Oops, c'est corrigé, merci
Bonjour,
Je n'y connais rien, mais n'y aurai-t'il pas une erreur sur la ligne pour mettre les permissions de l'utilisateur développeur ?
Actuellement :
$ sudo trac-admin ... add maintener ...Ce ne serai pas plutôt :
$ sudo trac-admin ... add dev ...(Ou alors j'ai rien compris, et je m'excuse du dérangement)
Elghinn : mais apparament l'implémentation de la chose va être pas mal boulversée dans les release post 1.0.
En-foi-ré.
Devine sur quoi je travaillais justement... Un article sur Trac / SVN... Et avec un script exactement comme le tien, bordel ! qui faisait tags, branches, et trunk, et tout... je vais même te dire : il paramétrait l'environnement Trac (oui, les components et les milestones par défaut, c'est crétin, personne n'a de composant à son projet qui s'appelle "composant1").
Et meeeeeerde, y'a tout à jeter maintenant... Putain d'Internet qui marche pas chez moi !
tigris fournit un script qui permet l'import d'une repository CVS vers une repository subversion. http://cvs2svn.tigris.org/
Cela peut surement interesser les gens qui ont déja un historique de code sous CVS et qui ne souhaient pas le perdre. Cela dit je n'ai jamais testé le script en question ( pas eu le temps
Sébastien : mais Trac le fait déjà ça....
Il suffit juste de se donner la peine de chercher (cf la doc sur le site officiel)
Super cet article, ça risque de servir.
Merci pour cette procédure d'installation !
En plus avec le script qui va bien et tout !
Trac est vraiment un superbe outil. LA seule chose qui m'empêche de l'utiliser quotidiennement (les supérieurs, roalala !), c'est l'impossibilité de gérer plusieurs projets avec une instance de Trac. J'espère que ça viendra bientôt !
La discussion continue ailleurs
Gestion de Projet
Un petit guide pour ubuntu : gestion SVN + TRAC......
développement Python
J'ai récemment eu envie de me remettre au développement, ayant 2-3 projets dans le coin de ma tête. Et je me suis dit que j'allais me mettre à Python, langage interprété, multiplateforme et libre bien évidemment. C'est un peu le langage à la......