<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>CoolCoyote.net &#187; subversion</title>
	<atom:link href="http://www.coolcoyote.net/tag/subversion/feed" rel="self" type="application/rss+xml" />
	<link>http://www.coolcoyote.net</link>
	<description>Coding - Linux</description>
	<lastBuildDate>Sun, 07 Nov 2010 15:27:34 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>fr</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Installer un serveur SVN sur Debian</title>
		<link>http://www.coolcoyote.net/linux-debian/installer-un-serveur-svn-sur-debian</link>
		<comments>http://www.coolcoyote.net/linux-debian/installer-un-serveur-svn-sur-debian#comments</comments>
		<pubDate>Sat, 11 Apr 2009 11:54:44 +0000</pubDate>
		<dc:creator>Denis S.</dc:creator>
				<category><![CDATA[Linux Debian]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://www.coolcoyote.net/?p=86</guid>
		<description><![CDATA[Ce pense-bête a été fait à partir des deux articles suivants:
http://blog.fabroce.info/post/2006/11/19/Installer-un-depot-subversion-sur-une-Debian
http://blog.utopiaz.org/2008/04/mise-en-place-svn-et-virtual-hosts-apache/
Son but est de mettre en place un serveur subversion sur une Debian permettant la gestion de plusieurs dépôts avec une gestion des droits différente selon les dépôts.
Installation des packages:
&#62; apt-get install subversion subversion-tools libapache2-svn
Création du répertoire subversion:
&#62; mkdir /home/svn
&#62; chmod 770 /home/svn
Création des différents [...]]]></description>
			<content:encoded><![CDATA[<p>Ce pense-bête a été fait à partir des deux articles suivants:</p>
<p><a href="http://blog.fabroce.info/post/2006/11/19/Installer-un-depot-subversion-sur-une-Debian" target="_blank">http://blog.fabroce.info/post/2006/11/19/Installer-un-depot-subversion-sur-une-Debian</a><br />
<a href="http://blog.utopiaz.org/2008/04/mise-en-place-svn-et-virtual-hosts-apache/" target="_blank">http://blog.utopiaz.org/2008/04/mise-en-place-svn-et-virtual-hosts-apache/</a></p>
<p>Son but est de mettre en place un serveur subversion sur une Debian permettant la gestion de plusieurs dépôts avec une gestion des droits différente selon les dépôts.<span id="more-86"></span></p>
<h3>Installation des packages:</h3>
<pre class="code">&gt; apt-get install subversion subversion-tools libapache2-svn</pre>
<p>Création du répertoire subversion:</p>
<pre class="code">&gt; mkdir /home/svn
&gt; chmod 770 /home/svn</pre>
<h3>Création des différents dépôts (gestion multi-projets)</h3>
<pre class="code">&gt; svnadmin create /home/svn/projet_1
&gt; svnadmin create /home/svn/projet_2</pre>
<p>On crée un fichier qui contient les utilisateurs / mots de passe qui auront accès au dépôt.</p>
<pre class="code">&gt; touch /home/svn/.passwd</pre>
<p>Ce fichier fonctionne pour la sécurisation d&#8217;un répertoire par htaccess. Par exemple:</p>
<pre class="code">toto:$1$uH5.fe0.$4aTxZL9kZTHrjyemyJCBL1
hubert:$1$6I5.VG5.$rOl1m.o6bcZLhkKUZStWf/</pre>
<p>On crée un fichier qui va contenir tous les droits d&#8217;accès des utilisateurs aux différents projets</p>
<pre class="code">&gt; vi /home/svn/.authz</pre>
<p>La syntaxe de ce fichier n&#8217;est pas extrêment compliquée. Elle va ressembler à cela:</p>
<pre class="code">[nom_du_depot:/répertoire/dans/depot]
nom_utilisateur = droits_accès</pre>
<p>Soyons bien clairs sur la syntaxe entre crochet: le nom du dépôt correspond au nom du répertoire créé grâce à <strong>svnadmin create</strong>. Donc pour nous ce sera soit <strong>projet_1</strong>, soit <strong>projet_2</strong>. Le répertoire qui suit les deux points est le répertoire relatif au dépôt. Voici quelques exemples expliquant ce point:</p>
<pre class="code"># correspond au répertoire /home/svn/projet_1/
[projet_1:/]</pre>
<pre class="code">#correspond au répertoire /home/svn/projet_1/images/
[projet_1:/images]</pre>
<p>Prenons un exemple avec ce que nous avons fait plus haut:</p>
<pre class="code">[projet_1:/]
toto = rw
hubert = r</pre>
<p>Dans cet exemple, l&#8217;utilisateur <em>toto</em> peut lire et écrire dans le dépôt <strong>projet_1</strong>. Par contre <em>hubert</em> ne peut que lire ce dépôt. Voici d&#8217;autres exemples:</p>
<pre class="code">[projet_1:/]
toto = rw
hubert = r

[projet_1:/readonly]
toto = r

[projet_2:/]
toto = r
hubert =</pre>
<p>Dans cet exemple, on a rajouté des paramètres importants:</p>
<ul>
<li> <em>toto</em> peut lire et écrire dans le dépôt <strong>projet_1</strong> mais ne peut que lire le répertoire <strong>readonly</strong> du <strong>projet_1</strong></li>
<li> <em>hubert</em> ne peut que lire le <strong>projet_1</strong></li>
<li> <em>toto</em> peut seulement lire le <strong>projet_2</strong></li>
<li> <em>hubert</em> n&#8217;a pas accès au <strong>projet_2</strong></li>
</ul>
<p>Il est possible d&#8217;aller plus loin et de traiter les droits d&#8217;accès pour plusieurs utilisateurs en même temps:</p>
<pre class="code">[/]
* = r</pre>
<p>Donne droit de lecture à tous les utilisateurs sur tous les dépôts. On peut également créer des groupes d&#8217;utilisateurs:</p>
<pre class="code">[groups]
mon-groupe-1 = toto, hubert
mon-groupe-2 = pierre, paul, jacques

[projet_1:/home/svn/projet_1]
@mon-groupe-1 = r
@mon-groupe-2 =</pre>
<p>On voir que l&#8217;on fait appel à un groupe et non à un utilisateur à l&#8217;aide du <strong>@</strong> devant le nom du groupe. Il est également possible de faire appel aux groupes à l&#8217;intérieur de la définition des groupes:</p>
<pre class="code">[groups]
mon-groupe-1 = toto, hubert
mon-groupe-2 = pierre, paul, jacques
tous-les-groupes = @mon-groupe-1, @mon-groupe-2</pre>
<p>Enfin, à titre informatif, on peut également utiliser des références à des utilisateurs LDAP ou des certificats SSL et utiliser des alias. Personnellement je n&#8217;en ai pas eu besoin, donc je vais me contenter de copier bêtement les exemples que j&#8217;ai vu ici: <a href="http://svnbook.red-bean.com/nightly/en/svn.serverconfig.pathbasedauthz.html" target="_blank">http://svnbook.red-bean.com/nightly/en/svn.serverconfig.pathbasedauthz.html</a>. Si vous avez des infos complémentaires à ajouter, n&#8217;hésitez pas.</p>
<pre class="code">[aliases]
harry = CN=Harold Hacker,OU=Engineers,DC=red-bean,DC=com
sally = CN=Sally Swatterbug,OU=Engineers,DC=red-bean,DC=com
joe = CN=Gerald I. Joseph,OU=Engineers,DC=red-bean,DC=com

[groups]
calc-developers = &amp;harry, &amp;sally, &amp;joe
paint-developers = &amp;frank, &amp;sally, &amp;jane
everyone = @calc-developers, @paint-developers</pre>
<p>On crée un répertoire pour les logs</p>
<pre class="code">&gt; mkdir /home/svn/logs</pre>
<p>On donne ensuite les droits à Apache</p>
<pre class="code">&gt; chown -R www-data:www-data /home/svn</pre>
<h3>Configuration d&#8217;Apache</h3>
<p>La solution classique consiste à configurer le fichier <strong>/etc/apache2/mods-available/dav_svn.conf</strong>. Par défaut tout est commenté dans ce fichier. Il va falloir décommenter, et configurer pour activer l&#8217;accès au dépôt SVN. Voici une configuration standard qui permet d&#8217;accéder au dépôt configuré plus haut:</p>
<pre class="code">&lt;Location /svn&gt;
    DAV svn
    SVNParentPath /home/svn
    AuthType Basic
    AuthName "Subversion Repository"
    AuthUserFile /home/svn/.passwd
    AuthzSVNAccessFile /home/svn/.authz
    Require valid-user
&lt;/Location&gt;</pre>
<p>Sauvegarder et relancer Apache.</p>
<p>Pour vérifier que tout fonctionne bien, il suffit d&#8217;aller avec votre navigateur à l&#8217;adresse:</p>
<pre class="code">http://IP_serveur/svn/projet_1</pre>
<p>Si tout se passe bien, une identification vous est demandée, puis vous devriez voir une page avec marqué &laquo;&nbsp;Revision 0&#8243;.</p>
<p>Cette méthode fonctionne parfaitement, mais on peut faire mieux. Si vous gérez des noms de domaine sur votre serveur, vous pouvez tout à fait utiliser les VirtualHost pour gérer les adresses d&#8217;accès aux dépôts:</p>
<pre class="code">&lt;VirtualHost *&gt;
  ServerName svn.mondomaine.com

  &lt;Location /&gt;
    DAV svn
    SVNParentPath /home/svn
    AuthType Basic
    AuthName "Subversion Repository"
    AuthUserFile /home/svn/.passwd
    AuthzSVNAccessFile /home/svn/.authz
    Require valid-user
  &lt;/Location&gt;

  CustomLog /home/svn/logs/access.log combined
  ErrorLog /home/svn/logs/error.log
&lt;/VirtualHost&gt;</pre>
<p>Cette méthode présente plusieurs avantages:</p>
<ul>
<li>Utilisation d&#8217;un sous-domaine, ce qui simplifie l&#8217;url</li>
<li>Possibilité d&#8217;utiliser plusieurs noms de domaine pour le même dépôt</li>
<li>Customisation des logs</li>
<li>Possibilité de créer un VirtualHost sécurisé par SSL</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.coolcoyote.net/linux-debian/installer-un-serveur-svn-sur-debian/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

