1. Page d'accueil
  2. Tutoriaux

Installation de subversion et de trac sur debian et ubuntu

Installation de subversion et de trac sur debian et ubuntu

Le 15-07-2006 à 14:37 par Nicolas L.. Dans Configurations et Tutoriaux

Nombre de commentaires : 13

Voici un article qui décrit l’installation d’un dépôt subversion accessible en http grâce à apache. La configuration comprend un controle d’accès par utilisateur aux différentes dossiers du référentiel. J’explique également comment installer l’application web trac. Les outils utilisés sont les suivants : subversion, apache 2 et trac.

Mise en place du système

Installer subversion

La première étape est d’installer et de configurer subversion. Lancer simplement la commande suivante :

aptitude install subversion subversion-tools
Création du dépot

Une fois installé, on peut directement créer notre premier dépôt subversion. J’ai choisit de le créer dans ~/svn/perso/luxbum . Lancer les commandes suivantes :

mkdir -p ~/svn/perso/
cd ~/svn/perso/
svnadmin create luxbum
Installation du module subversion pour apache2

Voilà, nous avons désormais un dépôt subversion vide qui ne contient aucune donnée. Ce dépôt n’est actuellement accessible qu’en local. Nous alons donc y remédier en configurant apache afin de le rendre accessible en http via le protocole dav_svn :

aptitude install libapache2-svn
cd /etc/apache2/
a2enmod dav_svn
/etc/init.d/apache2 reload
Configuration d’apache2 pour le dépôt créé

Désormais le protocole dav_svn est installé, il reste juste à configurer notre virtualhost. Editer le fichier de votre virtualhost et y rajouter ceci :

   <location /luxbum/svn>
       # Chargement du module subversion
       DAV svn
       # On indique le chemin complet vers le dépôt subversion
       SVNPath /home/nicolas/svn/perso/luxbum

       #Ici on demande une identification avec mot de passe
       #utilisez htpasswd2 pour créer le fichier
       AuthType Basic
       AuthName "Galerie photo : Luxbum"
       AuthUserFile /var/www/private/luxbumsvn.htpasswd
       Require valid-user

       # On indique ici le fichier de configuration des permissions d'accès au dépot subversion
       AuthzSVNAccessFile /var/www/private/luxbumperm
   </location>
Créer le fichier des utilisateurs pour l’identification apache :
cd /var/www/private/
htpasswd -cm luxbumsvn.htpasswd nicolas
New password:********
Re-type new password:********
Adding password for user nicolas

Pour ajouter un utilisateur anonyme :

htpasswd -m luxbumsvn.htpasswd anonymous
New password:
Re-type new password:
Adding password for user anonymous
Créer le fichier de configuration des permissions d’accès
touch /var/www/private/luxbumperm

Voici le contenu de mon fichier :

[groups]
dev = nicolas, dark

[/]
anonymous = r
nicolas = rw

[/trunk]
@dev = rw

[/branches]
dark = r

[/tags]
dark = r

La première ligne permet de définir des groupes. J’ai un groupe dev qui contient deux utilisateurs : nicolas et dark. Ensuite pour chacune des parties du dépôt je crée des règles d’accès en lecture ou en lecture/écriture. Anonymous peut lire tout le dépôt. Le dossier /trunk est accessible en lecture/écriture par le groupe dev. Par contre il n’y a que l’utilisateur nicolas qui puisse écrire dans les dossiers tags et branches.

Modification des droits du dépôt

Pour qu’apache ait le droit d’accéder aux fichiers du dépôt, il faut modifier les droits des fichiers du dépôt créé. Je voulais que l’utilisateur nicolas puisse continuer d’accéder à ses fichiers, je n’ai donc modifié que le groupe :

chown -R nicolas:www-data ~/svn/
chmod -R 775 ~/svn

Ainsi, nicolas et tous les membres du groupe www-data ont un accès complet au dépôt.

Il ne reste plus qu’à relancer apache2 :

/etc/init.d/apache2 reload

et effectuer un premier test en créant les 3 branches principales d’un dépôt subversion :

svn mkdir http://localhost/luxbum/svn/trunk http://localhost/luxbum/svn/branches http://localhost/luxbum/svn/tags -m "Création des répertoires d'archivage Subversion."  --username=nicolas

Voir le résultat final du dépôt subversion de luxbum

Installer trac

Vient maintenant l’installation de trac qui est assez aisée :

aptitude install trac
Création du trac du projet

Je place mes différents trac dans ~/trac . Lancer les commandes suivantes afin de créer le trac :

mkdir ~/trac
cd trac
trac-admin luxbum initenv

Et répondre aux quelques questions posées :

  • Project Name [My Project]> Luxbum
  • Database connection string [sqlite:db/trac.db]> valider en appuyant sur entrée
  • Path to repository [/var/svn/test]> /home/nicolas/svn/perso/luxbum
  • Templates directory [/usr/share/trac/templates]> valider en appuyant sur entrée
Configuration d’apache

La création du trac du projet est effectuée, il faut configurer apache afin de le rendre accessible. Editer le fichier de votre virtualhost et y rajouter ceci :

   Alias /trac "/usr/share/trac/htdocs"
   ScriptAlias /luxbum /usr/share/trac/cgi-bin/trac.cgi
   <location /luxbum>
       SetEnv TRAC_ENV "/home/nicolas/trac/luxbum"
   </location>
Modifications des droits des fichiers

Pour rendre accessibles les fichiers par apache, il faut comme pour le dépôt subversion modifier les droits :

cd ~/trac
chown nicolas:www-data luxbum -R
chmod 775 luxbum -R
Création des utilisateurs trac

Pour se connecter au trac, il faut créer des utilisateurs trac. Comme pour les utilisateurs subversion, on utilise la commande htpasswd2 :

cd /var/www/private/
htpasswd -cm luxbumstrac.htpasswd nicolas
New password:********
Re-type new password:********
Adding password for user nicolas

Et pour rajouter un autre utilisateur :

htpasswd -m luxbumstrac.htpasswd dark
New password:********
Re-type new password:********
Adding password for user dark

Il faut à nouveau éditer le fichier de votre virtualhost et rajouter les lignes suivantes :

   <location /luxbum/login>
       AuthType Basic
       AuthName "Trac : login"
       AuthUserFile /var/www/private/luxbumtrac.htpasswd
       Require valid-user
   </location>

Finalisation

Et pour finir, un peu de sécurité au niveau des fichiers contenants les mots de passe :

cd /var/www/private
chown www-data:www-data *
chmod go-rwx *

Je vous ai également mis mon fichier contenant mon virtualhost

eric 

Avec ton explication j'essaie de créer les branches , trunks, etc...

eric@eric-desktop:/var/www/private$ sudo svn mkdir http://localhost/elitost/svn/trunk http://localhost/elitost/svn/branches http://localhost/elitost/svn/tags -m "Création des répertoires d'archivage Subversion." --username=eric Domaine d'authentification : <http://localhost:80> Galerie photo : elitost
Mot de passe pour 'eric' :
svn: Échec de la requête OPTIONS sur '/elitost/svn'
svn: OPTIONS de '/elitost/svn': 403 Forbidden (http://localhost)

Et comme tu peux le voir, j'ai une erreur , saurais tu pourquoi ?

Peut être un indice , j'ai eu ce message au redemérrage d'apache :
eric@eric-desktop:/var/www/private$ sudo /etc/init.d/apache2 reload
* Reloading apache 2.0 configuration... apache2: Could not determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
[ ok ]

Merci d'avance pour ton aide.

Thor http://sme-60.homelinux.net

Il faudrait donner un nom à ServerName dans ton fichier apache2.conf, car pour l'instant il n'est reconnu que comme localhost.

Kevin Campion 

J'ai eu le même problème :
svn: Échec de la requête OPTIONS sur '/elitost/svn'
svn: OPTIONS de '/elitost/svn': 403 Forbidden (http://localhost)

J'ai trouvé une somution :
dans /etc/apache2/sites-available/default
j'ai mis en commentaire "#AuthzSVNAccessFile /var/www/private/luxbumperm"

Et j'ai généré le mot de passe avec htpasswd2 :
htpasswd2 -c /var/www/private/luxbumsvn.htpasswd nicolas

Ca marche maintenant...

Rod 

Hello
Lors de la création des répertoires trunk, branches, tags j'obtiens ceci :

svn: OPTIONS request failed on '/svn'
svn: The OPTIONS request returned invalid XML in the response: XML parse error at line 1: no element found (/svn)

Merci pour votre aide

Vins 

Bonjour j'obtiens la meme erreur que toi Rod.
Quelqu'un a une solution?

Rod 

J'ai essayé de mettre

[global]
http-compression = no

dans le fichier /etc/subversion/servers comme je l'ai vu à quelque part, mais ça n'a rien changé.
Je commence à m'arracher les cheveux. Je voulais passer de CVS à Subversion, mais je crois que je vois devoir abandonner si je j'arrive pas à résoudre ce problème.
En tout cas fais moi signe Vins si t'as une solution

yvon 

Je te cite :

"Pour qu’apache ait le droit d’accéder aux fichiers du dépôt, il faut modifier les droits des fichiers du dépôt créé. Je voulais que l’utilisateur nicolas puisse continuer d’accéder à ses fichiers, je n’ai donc modifié que le groupe :

chown -R nicolas:www-data ~/svn/
chmod -R 775 ~/svn"

A cette methode j'ai prefere celle ci :

chgrp -R www-data ~/svn
# find ~/svn -type d -exec chmod 2770 {} +
# find ~/svn -type f -exec chmod 660 {} +

Elle me permet de differencier les fichiers et les dossiers et m'assure de placer les droits adequates.

Jahis 

Pour tout ceux qui obtiennent la ligne suivante
svn: OPTIONS de '/elitost/svn': 403 Forbidden (http://localhost)

J'ai palié au problème en rajoutant l'utilisateur nicolas sous [/]

[groups]
dev = nicolas, dark

[/]
anonymous = r
nicolas = rw <=====

[/trunk]
@dev = rw

[/branches]
nicolas = rw
dark = r

[/tags]
nicolas = rw
dark = r

En tout cas un grand merci à Nicolas pour le tuto

soleares 

J'ai une erreur lors du rédémarrage d'apache2, après l'installation de la libapache2-svn.

Syntax error on line 2 of /etc/apache2/mods-enabled/dav_svn.load:
Cannot load /usr/lib/apache2/modules/mod_dav_svn.so into server: /usr/lib/apache2/modules/mod_dav_svn.so: undefined symbol: dav_xml_get_cdata

Une idée ?
Merci.

soleares 

-> Problème réglé.
Pour ceux que ça intéresse : il faut aussi ajouter le module dav
a2enmod dav

Dean http://www.progs.fr

Merci beaucoup, je viens juste de réussir une install subversion/trac grâce à toi.

Tommy 

Un grand merci à toi et à ce tutoriel grâce auquel j'ai pu installer Trac et Subversion !

Merci !

Marmotte 

ce problème peut aussi arriver :
dans le error_log d'Apache :
[Fri Oct 17 00:11:13 2008] [error] [client 127.0.0.1] (20014)Internal error: Can't open file '/var/svn/format': No such file or directory
[Fri Oct 17 00:11:13 2008] [error] [client 127.0.0.1] Could not fetch resource information. [500, #0]
[Fri Oct 17 00:11:13 2008] [error] [client 127.0.0.1] Could not open the requested SVN filesystem [500, #2]
[Fri Oct 17 00:11:13 2008] [error] [client 127.0.0.1] Could not open the requested SVN filesystem [500, #2]

à corriger en remplaçant SVNPath par SVNParentPath dans la configuration d'Apache, si on veut accéder à plusieurs repository SVN à travers Apache, sinon ajouter le nom du repository SVN sur la ligne SVNPath

Ajouter un commentaire

 *

* Nécessaire mais ni communiqué, ni affiché.