« Installation et mise en place d'un dépôt subversion » : différence entre les versions

Aller à la navigation Aller à la recherche
aucun résumé des modifications
Aucun résumé des modifications
Aucun résumé des modifications
 
(6 versions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
[[Category:serveur]]
[[Category:debian]]
[[Category:debian]]
'''<span style="color: red;">Tuto plus vraiment à jour</span>'''
[[Category:toupdate]]
Ce howto a été écrit au départ pour debian etch puis a été adapté pour debian lenny. Il reste cependant valable la plupart du temps pour ces deux versions de debian.
Ce howto a été écrit au départ pour debian etch puis a été adapté pour debian lenny. Il reste cependant valable la plupart du temps pour ces deux versions de debian.


Ce howto va vous montrer comment mettre en place un dépot subversion.
Ce howto va vous montrer comment mettre en place un dépot subversion.
Le domaine utilisé est <code>svn.pfoo.csnu.org</code> qui est un alias pour <code>core.csnu.org</code>.
Le domaine utilisé est <code>svn.pfoo.domain.tld</code> qui est un alias pour <code>srv.domain.tld</code>.
<code>core.csnu.org</code> est le domaine identifiant le serveur sur lequel se trouvera le dépôt subversion. Il possède l'adresse ipv4 <code>213.186.47.110</code> et l'adresse ipv6 <code>2001:41d0:1:d6e::110</code>.
<code>srv.domain.tld</code> est le domaine identifiant le serveur sur lequel se trouvera le dépôt subversion. Il possède l'adresse ipv4 <code>213.186.47.110</code> et l'adresse ipv6 <code>2001:41d0:1:d6e::110</code>.


Ce howto est construit de manière à respecter mon howto sur apache2. Les changements de permissions effectués dans ce howto supposent que vous êtes en umask 0027
Ce howto est construit de manière à respecter mon howto sur apache2. Les changements de permissions effectués dans ce howto supposent que vous êtes en umask 0027
Ligne 13 : Ligne 18 :
<pre>aptitude install subversion subversion-tools</pre>
<pre>aptitude install subversion subversion-tools</pre>


On peut maintenant créer le dépôt subversion. Dans mon cas, je vais le créer dans <cod>/srv/http/csnu.org/pfoo.csnu.org/svn/</code>
On peut maintenant créer le dépôt subversion. Dans mon cas, je vais le créer dans <code>/srv/http/domain.tld/pfoo.domain.tld/svn/</code>
<pre>svnadmin create /srv/http/csnu.org/pfoo.csnu.org/svn/</pre>
<pre>svnadmin create /srv/http/domain.tld/pfoo.domain.tld/svn/</pre>


Le dépôt ne devra être accessible par apache en lecture mais aussi en écriture :
Le dépôt devra être accessible par apache en lecture ainsi qu'en écriture :
<pre>
<pre>
chown -R root:www-data /srv/http/csnu.org/pfoo.csnu.org/svn/
chmod -R g+w /srv/http/domain.tld/pfoo.domain.tld/svn/db/
chmod -R g+w /srv/http/csnu.org/pfoo.csnu.org/svn/
mkdir -p /srv/http/domain.tld/pfoo.domain.tld/svn/dav/activities.d
chmod -R g+w /srv/http/domain.tld/pfoo.domain.tld/svn/dav/
chown -R root:www-data /srv/http/domain.tld/pfoo.domain.tld/svn/
</pre>
</pre>


Gardez à l'esprit que apache doit pouvoir exécuter (permission +x) tous les dossiers en amont de <code>/srv/http/csnu.org/pfoo.csnu.org/svn/</code>.
Gardez à l'esprit que apache doit pouvoir exécuter (permission +x) tous les dossiers en amont de <code>/srv/http/domain.tld/pfoo.domain.tld/svn/</code>.


=Ajout de la redirection dans la zone dns de bind=
=Ajout de la redirection dans la zone dns de bind=


Éditez le fichier de la zone dns de votre domaine (<code>/srv/bind/csnu.org.hosts</code> dans mon cas) et ajoutez les lignes suivantes :
Éditez le fichier de la zone dns de votre domaine (<code>/srv/bind/domain.tld.hosts</code> dans mon cas) et ajoutez les lignes suivantes :
<pre>
<pre>
core.csnu.org.  IN      A      213.186.47.110
srv.domain.tld.  IN      A      213.186.47.110
core.csnu.org.  IN      AAAA    2001:41d0:1:d6e::110
srv.domain.tld.  IN      AAAA    2001:41d0:1:d6e::110
svn.pfoo        IN      CNAME  core.csnu.org.
svn.pfoo        IN      CNAME  srv.domain.tld.
</pre>
</pre>


Ligne 60 : Ligne 67 :
==Configuration d'une vhost==
==Configuration d'une vhost==


Éditez le fichier <code>/etc/apache2/vhosts/svn.pfoo.csnu.org.conf</code> et ajoutez y les lignes suivantes:
Éditez le fichier <code>/etc/apache2/vhosts/svn.pfoo.domain.tld.conf</code> et ajoutez y les lignes suivantes:
<pre><nowiki>
<pre><nowiki>
<VirtualHost 213.186.47.110:80>
<VirtualHost 213.186.47.110:80>
         ServerName svn.pfoo.csnu.org
         ServerName svn.pfoo.domain.tld
         Include sites/svn.pfoo.csnu.org.conf
         Include sites/svn.pfoo.domain.tld.conf
</VirtualHost>
</VirtualHost>
<VirtualHost [2001:41d0:1:d6e::110]:80>
<VirtualHost [2001:41d0:1:d6e::110]:80>
         ServerName svn.pfoo.csnu.org
         ServerName svn.pfoo.domain.tld
         Include sites/svn.pfoo.csnu.org.conf
         Include sites/svn.pfoo.domain.tld.conf
</VirtualHost>
</VirtualHost>
</nowiki></pre>
</nowiki></pre>
Ligne 75 : Ligne 82 :


On peut maintenant créer le fichier de configuration du virtualhost.
On peut maintenant créer le fichier de configuration du virtualhost.
Ouvrez le fichier <code>/etc/apache2/sites/svn.pfoo.csnu.org.conf</code> avez votre éditeur de texte et ajoutez les lignes suivantes:
Ouvrez le fichier <code>/etc/apache2/sites/svn.pfoo.domain.tld.conf</code> avez votre éditeur de texte et ajoutez les lignes suivantes:
<pre>
<pre>
#Cette ligne est a décommenter si vous n'arrivez pas à utiliser les commandes copy et move de subversion en vous connectant en https:
#Cette ligne est a décommenter si vous n'arrivez pas à utiliser les commandes copy et move de subversion en vous connectant en https:
Ligne 83 : Ligne 90 :
       DAV svn
       DAV svn
       # chemin complet vers le dépôt SVN
       # chemin complet vers le dépôt SVN
       SVNPath /srv/http/csnu.org/pfoo.csnu.org/svn/
       SVNPath /srv/http/domain.tld/pfoo.domain.tld/svn/
       #On sécurise le tout par mot de passe.
       #On sécurise le tout par mot de passe.
       # htpasswd permettra de créer facilement le fichier
       # htpasswd permettra de créer facilement le fichier
       AuthType Basic
       AuthType Basic
       AuthName "pfoo's SVN"
       AuthName "pfoo's SVN"
       AuthUserFile /srv/http/csnu.org/pfoo.csnu.org/svn.htpasswd
       AuthUserFile /srv/http/domain.tld/pfoo.domain.tld/svn.htpasswd
       Require valid-user
       Require valid-user


       # fichier de configuration des permissions du dépot
       # fichier de configuration des permissions du dépot
       AuthzSVNAccessFile /srv/http/csnu.org/pfoo.csnu.org/svn.perm
       AuthzSVNAccessFile /srv/http/domain.tld/pfoo.domain.tld/svn.perm
   </location>
   </location>
</nowiki></pre>
</nowiki></pre>
Ligne 100 : Ligne 107 :
Nous allons créer un utilisateur pfoo ayant tous les droits sur le dépôt, et un utilisateur jonass n'ayant que des droits limités. Comme d'habitude, on préfèrera crypter les mots-de-passes en SHA (option -s)
Nous allons créer un utilisateur pfoo ayant tous les droits sur le dépôt, et un utilisateur jonass n'ayant que des droits limités. Comme d'habitude, on préfèrera crypter les mots-de-passes en SHA (option -s)
<pre>
<pre>
htpasswd -cs /srv/http/csnu.org/pfoo.csnu.org/svn.htpasswd pfoo
htpasswd -cs /srv/http/domain.tld/pfoo.domain.tld/svn.htpasswd pfoo
htpasswd -s /srv/http/csnu.org/pfoo.csnu.org/svn.htpasswd jonass
htpasswd -s /srv/http/domain.tld/pfoo.domain.tld/svn.htpasswd jonass
</pre>
</pre>


On donne les bonnes permissions au fichier contenant les utilisateurs:
On donne les bonnes permissions au fichier contenant les utilisateurs:
<pre>chown root:www-data /srv/http/csnu.org/pfoo.csnu.org/svn.htpasswd</pre>
<pre>chown root:www-data /srv/http/domain.tld/pfoo.domain.tld/svn.htpasswd</pre>


On peut maintenant créer le fichier contenant les accès des deux utilisateurs. Ouvrez le fichier <code>/srv/http/csnu.org/pfoo.csnu.org/svn.perm</code> et entrez y les lignes suivantes:
On peut maintenant créer le fichier contenant les accès des deux utilisateurs. Ouvrez le fichier <code>/srv/http/domain.tld/pfoo.domain.tld/svn.perm</code> et entrez y les lignes suivantes:
<pre>
<pre>
[groups]
[groups]
Ligne 122 : Ligne 129 :


Comme d'habitude, changer l'appartenance du fichier:
Comme d'habitude, changer l'appartenance du fichier:
<pre>chown root:www-data /srv/http/csnu.org/pfoo.csnu.org/svn.perm</pre>
<pre>chown root:www-data /srv/http/domain.tld/pfoo.domain.tld/svn.perm</pre>


=Le moment de vérité=
=Le moment de vérité=
Ligne 141 : Ligne 148 :


Pour réaliser votre backup avec <code>svn-backup-dumps</code> :
Pour réaliser votre backup avec <code>svn-backup-dumps</code> :
<pre>svn-backup-dumps /srv/http/csnu.org/pfoo.csnu.org/svn/ /root/backup/</pre>
<pre>svn-backup-dumps /srv/http/domain.tld/pfoo.domain.tld/svn/ /root/backup/</pre>


Pour restaurer un backup, il faut utiliser <code>svnadmin</code> :
Pour restaurer un backup, il faut utiliser <code>svnadmin</code> :
<pre>svnadmin load /srv/http/csnu.org/pfoo.csnu.org/svn/ < /root/backup/sauvegarde.svndmp</pre>
<pre>svnadmin load /srv/http/domain.tld/pfoo.domain.tld/svn/ < /root/backup/sauvegarde.svndmp</pre>


=Supprimer les anciennes révisions=
=Supprimer les anciennes révisions=
Ligne 152 : Ligne 159 :
Dans mon cas, je ne souhaite conserver que les 10 dernières révisions et je suis à la révision 453 :
Dans mon cas, je ne souhaite conserver que les 10 dernières révisions et je suis à la révision 453 :
<pre>
<pre>
svnadmin dump /srv/http/csnu.org/pfoo.csnu.org/svn/ -r 443:head > repository-443-head.dump
svnadmin dump /srv/http/domain.tld/pfoo.domain.tld/svn/ -r 443:head > repository-443-head.dump
rm -rf /srv/http/csnu.org/pfoo.csnu.org/svn/
rm -rf /srv/http/domain.tld/pfoo.domain.tld/svn/
svnadmin create /srv/http/csnu.org/pfoo.csnu.org/svn/
svnadmin create /srv/http/domain.tld/pfoo.domain.tld/svn/
svnadmin load /srv/http/csnu.org/pfoo.csnu.org/svn/ < repository-443-head.dump
svnadmin load /srv/http/domain.tld/pfoo.domain.tld/svn/ < repository-443-head.dump
------ Nouvelle révision 11 propagée (commit), basée sur révision 453
------ Nouvelle révision 11 propagée (commit), basée sur révision 453
</pre>
</pre>
4 203

modifications

Menu de navigation