apche2-svn-debian : créer plusieurs repositories svn

apche2-svn-debian : créer plusieurs repositories svn - Logiciels - Linux et OS Alternatifs

Marsh Posté le 02-07-2007 à 11:47:29    

Salut
 
J'ai lu quelques sites (en fait j'ai l'impression d'en avoir lu trop, et de m'etre embrouillé l'esprit...), donc j'aurais besoin de conseils : disons que je vais exposer ce que je veux faire, et j'aimerais que vous m'orientiez vers la bonne solution :)
 
Je veux hoster sur mon apache2 (debian etch) un serveur SVN qui pourra heberger plusieurs projets.  
J'aimerais que ces projets soient accessibles par http (et non https), lisibles pour tous, mais modifiables que par des users "reconnus" par htaccess.
J'aimerais que l'utilisateur se connecte sur http://svn.mondns.fr, et qu'il arrive (par exemple a l'aide d'un simple navigateur, juste pour voir les fichiers...) sur une première page qui liste les differents projets, et en un clic il va dans le projet qui l'interesse.
 
1 - Si j'ai bien compris, dans cette configuration, de toute facons, l'authentification de l'user n'aura que lorsqu'il voudra commiter de nouveaux fichiers, non ? (donc en ligne de commande par exemple)
 
Jusqu'a present, j'ai modifié /etc/apache2/mods-available/dav_svn.conf  (ca vient d'ici):  

Code :
  1. <Location /svn_project1>
  2.     DAV svn
  3.     SVNPath /home/svn-repos/project1
  4.     AuthType Basic
  5.     AuthName "Subversion Repository"
  6.     AuthUserFile /etc/apache2/dav_svn.passwd
  7.     Require valid-user
  8. </Location>
  9. <Location /svn_project2>
  10.     DAV svn
  11.     SVNPath /home/svn-repos/project2
  12.     AuthType Basic
  13.     AuthName "Subversion Repository"
  14.     AuthUserFile /etc/apache2/dav_svn.passwd
  15.     Require valid-user
  16. </Location>


 
La question suivante est : qu'est-ce que je dois mettre dan mon virtualhost (dans le fichier qui gere le svn dans /etc/apache2/sites-available) ?
 
 
Merci de votre attention
 
PS : si j'ai fait des conneries jusqu'ici, n'hesitez pas a me le dire : je l'ai deja refait 15 000 fois, alors une de + ou de -....

Reply

Marsh Posté le 02-07-2007 à 11:47:29   

Reply

Marsh Posté le 02-07-2007 à 15:22:48    

vu ce que tu nous dis, et vu le début de conf que tu postes, déjà ça va "coincer". J'explique :
 
le "Require valid-user" va impliquer que tes utilisateurs devront s'identifier pour TOUT accès à tes dépôts subversion, et ce pour la moindre opération, y compris parcours, export, checkout, commit ...
 
Il faut mettre ceci pour restreindre l'authentification uniquement aux commits :

Code :
  1. <LimitExcept GET PROPFIND OPTIONS REPORT>
  2.           Require user xx
  3.    </LimitExcept>


 
 
Ensuite, puisque tu es parti sur des dépôts accessibles via Apache, il y a deux façon de les voir ... soit via une interface web (que ce soit celle native de subversion, soit via un site plus élaboré : websvn par exemple), soit via vraiment un accès SVN.
L'interface web ne te permettra que de parcourir / télécharger les fichiers, et dans ce cas où ta page d'accueil avec redirection fonctionne
L'accès vraiment SVN nécessite lui par contre d'arriver de suite dans le dépôt donc là plus question de redirection ...
 
 
Et donc pour finir, sur ta page d'accueil, une bête liste avec des liens suffit !!

Reply

Marsh Posté le 02-07-2007 à 16:34:48    

donc :  
En fait, je voudrais bien les 2, si possible : j'avais prevu d'utiliser websvn, pour visualiser, et eventuellement DL les fichiers, mais j'aimerais "vraiment un acces SVN" (j'avoue que c'est un protocole que je maitrise pas..) : Ce qu'il me faut, c'est que mes dev puissent poser et recupérer leur code en ligne de commande. Hors, d'apres ce que j'ai vu, a la ligne de commande tu lui dis d'utiliser le protocole de ton choix (http, svn, svn+ssh) : limite peu m'importe, du moment que ca marche dans les 2 sens :)
--> Je fais ca ou ?
 
Sinon, j'ai modifié mon fichier dav_svn.conf : j'ai juste ? :  

Code :
  1. <Location /svn_project1>
  2.     DAV svn
  3.     SVNPath /home/svn-repos/project1
  4.     AuthType Basic
  5.     AuthName "Subversion Repository"
  6.     AuthUserFile /etc/apache2/dav_svn.passwd
  7.     <LimitExcept GET PROPFIND OPTIONS REPORT>
  8.       Require valid-user
  9.     </LimitExcept>
  10. </Location>
  11. <Location /svn_project2>
  12.     DAV svn
  13.     SVNPath /home/svn-repos/project2
  14.     AuthType Basic
  15.     AuthName "Subversion Repository"
  16.     AuthUserFile /etc/apache2/dav_svn.passwd
  17.     <LimitExcept GET PROPFIND OPTIONS REPORT>
  18.        Require valid-user
  19.     </LimitExcept>
  20. </Location>


Message édité par Burps le 03-07-2007 à 16:41:58
Reply

Marsh Posté le 02-07-2007 à 17:38:36    

Citation :

j'ai modifié mon fichier dav_svn.conf : j'ai juste ?


 
après le problème d'affichage ;), oui tu as bon
 
 

Citation :

a la ligne de commande tu lui dis d'utiliser le protocole de ton choix (http, svn, svn+ssh) : limite peu m'importe, du moment que ca marche dans les 2 sens :)
--> Je fais ca ou ?


 
Si tu regardes cette image :
http://svnbook.red-bean.com/nightly/en/svn-book.html#svn.intro.architecture.dia-1
 
en fait tu vois que tes dépôts sont accessibles de différences façons ...
* Soit par du XML + DAV encapsulé dans du HTTP, il te faut alors un serveur web
* Soit via le protocole propriétaire SVN, il te faut alors le serveur svnserve
* Soit directement en local, via la commande svn. Dans ce cas, tu as sur ta machine tes dépôts (pas ton cas a priori)
 
Le SSH / SSL se rajoute éventuellement ensuite pour des raisons de sécurité.
 
Dans ton cas, tu es parti sur Apache donc tes utilisateurs feront obligatoirement :
svn checkout http://svn.mondns.fr/ton_depot/ton_projet
 
Via les clients subversion (tortoise pour Windows, subclipse pour Eclipse, ...), tes utilisateurs pourront donc se balader dans tout ton dépôt à partir de l'URL http://svn.mondns.fr/ton_depot
(les restrictions d'accès à certains chemins sont bien sur configurables)
 
Maintenant, l'url http://svn.mondns.fr/ ne donnera rien ...
à moins de mettre dans ton le dossier pointer par la directive DocumentRoot de ton virtual host un index.html avec une liste des projets dispo avec un lien vers l'url qui va bien (http://svn.mondns.fr/ton_projet)
ou sinon y mettre carrément l'appli websvn
 
 
 
Au final, tu te retrouves donc avec cette arborescence :
/var/www/svn/
 |
 +-> index.php
 +-> includes ... (tous les fichiers de websvn)
 +-> ton_projet1 qui est un répertoire virtuel d'apache permettant l'accès via subversion au dépôt ton_projet1
 +-> ton_projet2 qui est un répertoire virtuel d'apache permettant l'accès via subversion au dépôt ton_projet2
 
 
Et donc la conf correspondante dans Apache, ressemble à :

Code :
  1. <VirtualHost *:80>
  2.         ServerName svn.mondns.fr
  3.         ServerAdmin svn_admin@svn.mondns.fr
  4.         ServerAlias mamachine
  5.         DocumentRoot /var/www/svn/
  6.         CustomLog "/var/log/apache2/svn_access.log" combined
  7.         ErrorLog "/var/log/apache2/svn_error.log"
  8.         <Directory /var/www/svn>
  9.                 Options -All -Multiviews
  10.                 AllowOverride None
  11.                 Order deny,allow
  12.                 Allow from all
  13.         </Directory>
  14.         <Location /svn_project1>
  15.                 DAV svn
  16.                 SVNPath /home/svn-repos/project1
  17.                 # Authentification selon les URL
  18.                 AuthzSVNAccessFile /home/svn/Products/conf/authz
  19.                 AuthType Basic
  20.                 AuthName "Subversion Repository"
  21.                 AuthUserFile /etc/apache2/dav_svn.passwd
  22.                 <LimitExcept GET PROPFIND OPTIONS REPORT>
  23.                        Require user xx
  24.                 </LimitExcept>
  25.         </Location>
  26.         DirectoryIndex index.php
  27. </VirtualHost>

Reply

Marsh Posté le 02-07-2007 à 17:47:27    

Royales toutes ces explications : claires, concises, avec exemple.. Merci beaucoup : je teste ca apres avoir passé une vraie nuit :)
 
Merci encore

Reply

Marsh Posté le 02-07-2007 à 19:16:11    

bonne nuit ;)

Reply

Marsh Posté le 03-07-2007 à 16:47:18    

Petite precision :  
 
La partie <Location /svn_project>, tu l'as mise dans la conf apache. Moi, dans mon post, je l'avais mise dans le fichier dav_svn.conf : est-ce que je dois la mettre dans les 2 endroits ? uniquement dans la conf apache ? du coup, je laise le dav_svn.conf vide ?
 
merci d'avance

Reply

Marsh Posté le 03-07-2007 à 17:10:52    

j'avais vu oui ...
 
la mettre aux deux endroits, surtout pas, sinon tu aurai un doublon de config
 
après, tu fais bien comme tu veux, mais selon la "philosophie" de la conf apache par debian, le dav_svn.conf ne contient que la conf lié au module dav_svn à proprement parlé ... ( comme tous les fichiers dans /etc/apache2/modules-enabled/, ils ne contiennent que les confs particulières de chaque module)
 
perso je mettrai donc tout dans la conf du virtual host, histoire de tout avoir sous les yeux en même temps

Reply

Marsh Posté le 09-07-2007 à 17:09:33    

Bon, j'ai mis le temps, mais j'ai avancé :  
 
Desormais, j'arrive avec un navigateur a lire mes projets :  
 
http://svn.mn.dns/project1 me donne la liste des fichiers du project1
 
Pareil pour le project2.
 
Mais j'aimerais bien avoir un interface sur http://svn.mn.dns qui soit une espece de page d'accueil, et qui me permette d'aller voir tous mes projets.
 
J'ai installé websvn, car je pense que c'est ce que je recherche, mais quand je vais dessus, j'ai l'erreur suivante :  
 

Code :
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <D:error xmlns:D="DAV:" xmlns:m="http://apache.org/dav/xmlns" xmlns:C="svn:">
  3. <C:error/>
  4. <m:human-readable errcode="2">
  5. Could not open the requested SVN filesystem
  6. </m:human-readable>
  7. </D:error>


 
Qu'ai-je raté cette fois-ci ?
 
Merci d'avance

Reply

Marsh Posté le 09-07-2007 à 19:45:16    

on est d'accord que les fichiers de WebSvn tu les as posés dans le dossier pointé par la direction DocumentRoot de ton virtualhost ou de ton apache direct ?
 
ensuite, bah il faut juste configurer websvn ...
fichier include/distconfig.php à renommer en include/config.php et à renseigner

Reply

Marsh Posté le 09-07-2007 à 19:45:16   

Reply

Marsh Posté le 10-07-2007 à 10:36:40    

On est d'accord : DocumentRoot pointe sur "/var/www/www-svn", et dans ce repertoire, j'ai le fichier (fourni pas debian, que j'ai deplacé) wsvn.php.
 
Dans ce fichier wsvn.php, j'ai configuré la variable suivante :  

Code :
  1. // Note that wsvn.php need not be in the /websvn directory (and normally isn't).
  2. //$locwebsvnhttp = "/websvn";
  3. $locwebsvnhttp = "/";


puisque cette page est, selon moi, a la racine du VH.
 
Ensuite, le fichier distconfig.php/config/php : Je ne trouve rien de cela sur mon system en rapport avec websvn. Le seul fichier que j'ai trouve qui y ressemble est le suivant : "/etc/websvn/config.inc", qui est principalement commenté (c'est un fichier d'options, si j'ai bien compris) : si c'est celui dont tu parles : ou dois-je le placer ?
 
D'autre part, voici les logs que j'ai actuellement dans apache :  

Code :
  1. ==> /var/log/apache2/svn-lbt.ibpc.fr-error.log <==
  2. [Tue Jul 10 10:35:58 2007] [error] [client 172.27.0.127] (20014)Internal error: Can't open file '/home/svn-repos/wsvn.php/format': No such file or directory
  3. [Tue Jul 10 10:35:58 2007] [error] [client 172.27.0.127] Could not fetch resource information.  [500, #0]
  4. [Tue Jul 10 10:35:58 2007] [error] [client 172.27.0.127] Could not open the requested SVN filesystem  [500, #2]
  5. [Tue Jul 10 10:35:58 2007] [error] [client 172.27.0.127] Could not open the requested SVN filesystem  [500, #2]
  6. 172.27.0.127 - - [10/Jul/2007:10:35:58 +0200] "GET /wsvn.php HTTP/1.1" 500 234


Message édité par Burps le 10-07-2007 à 10:37:20
Reply

Marsh Posté le 10-07-2007 à 17:02:50    

oula ... perso j'ai fais un checkout de la dernière version de websvn, je ne suis pas passé par le paquet debian
 
mais sinon oui, c'est bien ton fichier /etc/websvn/config.inc qui est très largement commenté dont je parle
 
tu peux le laisser dans /etc/websvn si ton script wsvn.php peut y accéder (directive "php_value include_path" dans ton VH)
 
ensuite, il suffit de le configurer comme suit :
$config->addRepository('project1', 'file:///home/svn-repos/project1');
$config->addRepository('project2', 'file:///home/svn-repos/project2');

Reply

Marsh Posté le 08-09-2007 à 14:52:02    

Bonjour,
 
J'ai suivi avec intérêt tout ce que vous avez dit car je souhaite quasiment faire la même chose :)
Pour ma part j'utilise plusieurs dépots SVN et au lieu de me compliqué la vie à créer une location pour chaque dépot SVN j'ai utiliser ce qui est fournit dans dav_svn :

Citation :

SVNParentPath /home/svn


 
SVNParentPath au lieu de SVNPath :)
 
Ensuite, j'ai créé un sous-dommaine : svn.mondomaine.com pour accéder à mon répertoire /home/svn qui contient tous mes dépots pour pouvoir accéder à mes dépots via svn.mondomaine.com/mon_depot
 
J'ai configuré un virtualhost comme ceci :

Citation :

<VirtualHost *:80>
DocumentRoot "/home/svn"
ServerName svn.pc-shows.com
ServerAdmin webmaster@pc-shows.com
<Directory /home/svn>
Options FollowSymLinks -All -MultiViews
AllowOverride None
Order deny,allow
Allow from all
</Directory>
</VirtualHost>


 
Et j'ai reboot Apache :)
 
Seulement voilà, quand je veux accéder à svn.mondomaine.com/mon_depot j'ai le droit à une belle erreur 403 qui m'interdit l'accès ...
 
Si par contre je vais sur svn.mondomaine.com/svn/mon_depot ça fonctionne nickel :|
En gros j'ai l'impression que mon DocumentRoot fonctionne pas :s
 
Apparemment Burps a réussi à faire ce que je veux faire alors qu'avant ça fonctionnait pas, j'aimerais donc savoir comment il a fait ;)
 
Merci d'avance !

Reply

Marsh Posté le 03-01-2008 à 13:57:37    

K2X > poste l'intégralité de la conf de ton virtual host pour SVN, tu dois avoir une erreur là dedans ...

Reply

Marsh Posté le 07-01-2008 à 11:29:55    

Depuis le mois de septembre j'ai résolu mon problème :p
 
Mais merci quand même ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed