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
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
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.