Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
sysadmin:install_svn [2010/09/30 11:44]
james ajout stockage
sysadmin:install_svn [2012/10/03 11:09] (Version actuelle)
james ajout tags
Ligne 1: Ligne 1:
 +{{tag>​installation serveur SVN subversion}}
 ====== Installation d'un dépôt subversion (SVN) ====== ====== Installation d'un dépôt subversion (SVN) ======
  
Ligne 9: Ligne 10:
 L'​authentification se fera sous deux formes : L'​authentification se fera sous deux formes :
   * Autorisations d'​accès via un fichier pour les comptes spécifiques   * Autorisations d'​accès via un fichier pour les comptes spécifiques
-  * Autorisation ​d'​accès pour les comptes systèmes de la machine (via PAM)+  * Autorisations ​d'​accès pour les comptes systèmes de la machine (via PAM)
  
 ===== Prérequis ===== ===== Prérequis =====
Ligne 65: Ligne 66:
                 Require valid-user                 Require valid-user
  
-                SVNIndexXSLT "/​repos-web/​view/​repos.xsl"​+                ​# pour aller plus loin, si vous voulez donner un look plus sympa , allez regarder sur http://​reposstyle.com/​ 
 +                #SVNIndexXSLT "/​repos-web/​view/​repos.xsl"​
                 ​                 ​
                 # fichier contenant les ACL pour les depots SVN                 # fichier contenant les ACL pour les depots SVN
Ligne 97: Ligne 99:
 </​code>​ </​code>​
 === Activation du virtualhost === === Activation du virtualhost ===
-  * Il faut créer un lien symbolique comme suit :<​code>​ +  * J'ai pris l'​habitude de prefixer (s pour SSL) et numeroter (sur 3 digits) les vhosts apache pour être sur de l'​ordre d'​inclusion si cet ordre est nécessaire c'est pourquoi je n'​utilise pas la commande a2ensite. Vous pouvez donc créer un lien symbolique comme suit :<​code>​ 
-ln -s /​etc/​apache2/​sites-available/​svn.mondomaine.com /​etc/​apache2/​sites-enabled/</​code>​+ln -s /​etc/​apache2/​sites-available/​svn.mondomaine.com /​etc/​apache2/​sites-enabled/​s010_svn.mondomaine.com</​code>​ si vous souhaitez changer le nom, ou la simple commande sinon :<​code>​a2ensite svn.mondomaine.com</​code>​
   * Activation des modules apache nécessaires :<​code>​a2enmod auth_pam dav_svn auth_basic</​code>​   * Activation des modules apache nécessaires :<​code>​a2enmod auth_pam dav_svn auth_basic</​code>​
   * Il ne reste plus qu'a faire recharger cette configuration à apache :<​code>/​etc/​init.d/​apache2 reload</​code>​   * Il ne reste plus qu'a faire recharger cette configuration à apache :<​code>/​etc/​init.d/​apache2 reload</​code>​
Ligne 129: Ligne 131:
 EOF EOF
 </​code>​ </​code>​
 +C'est bien gentil tout ca, mais cette liste de dépôt est pour l'​instant désespérément vide, nous allons remédier à ça, mais tout d'​abord il faut remplir le fichier d'ACL pour permettre la creation de dépôts.
 +
 +==== Fichier ACLs ====
 +Les accès au dépôts et sous dépôts sont à autoriser dans le fichier /​etc/​apache2/​dav_svn.authz mentionné ci dessus.
 +<​code>​cat << EOF > /​etc/​apache2/​dav_svn.authz
 +#################################################​
 +# groupes
 +# definition des groupes utilisateurs,​ a adapter a vos besoins
 +#################################################​
 +[groups]
 +alldev = john, bang, bob
 +maindev = alice, claudy
 +devRead = luke, georges
 +
 +#################################################​
 +# droits d'​acces aux depots
 +#################################################​
 +
 +# utilisateur qui a accès à tous les depots
 +# Utilise pour la création d'un depot via le script /​usr/​local/​sbin/​createRepoSvn.sh
 +[/]
 +usersvncreate = rw
 +
 +# exemple de droits
 +#​[mondepot1:/​]
 +#@maindev = rw
 +#georges = rw
 +#@devRead = r
 +# on peu limiter les droits a une sous arborescence du projet :
 +#​[mondepot1:/​trunk]
 +#alice = rw
 +
 +EOF</​code>​
 +
 +Restrictions d'​acces a ce fichier :<​code>​
 +chown root:​www-data /​etc/​apache2/​dav_svn.authz
 +chmod 640 /​etc/​apache2/​dav_svn.authz
 +</​code>​
 +
 +===== Création du premier dépôt =====
 +
 +La création de dépôt est une opération courante, que nous allons donc automatiser grâce a un petit script qui-va-bien.
 +Ce script va donc créer le dépot SVN avec un nom passé en parametre. Il crée aussi une arborescence indispensable a tout dépot :
 +  * depot
 +  * depot/trunk
 +  * depot/​branches
 +  * depot/tags
 +
 +qui vous permettra d'​héberger respectivement le trunk, les branches et les tag de ce projet.
 +
 +<​code>​cat << EOF > /​usr/​local/​sbin/​createRepoSvn.sh
 +#!/bin/bash
 +# création de projets svn
 +#
 +# 31/08/2009 Script initial
 +# jerome drouet - jerome -at- drouet.eu
 +#
 +PATHREPOSVN='/​var/​lib/​svn';​
 +
 +echo -n "nom du projet :"
 +read projet;
 +
 +# adapter l'URL suivant vos besoins
 +site="​https://​svn.mondomaine.com/​svn/​$projet";​
 +
 +while true; do
 +    echo -n "​Confirmez : $site ? (y/​n)";​
 +    read yn;
 +    case $yn in
 +        [nN]* ) echo "​Abandon";​echo;​exit;;​
 +        [yY]* ) echo;​break;;​
 +    esac
 +done
 +
 +if test -d "​$PATHREPOSVN/​$projet"​
 +then
 +    echo "Le Projet $projet existe déjà, Abandon";​
 +    exit
 +fi
 +
 +svnadmin create $PATHREPOSVN/​$projet --fs-type fsfs
 +# les fichiers doivent etre en acces lecture/​ecriture pour l'​utilisateur qui fait tourner apache
 +chgrp -R www-data $PATHREPOSVN/​$projet
 +chmod -R 770 $PATHREPOSVN/​$projet"​
 +
 +# creation des repertoires SVN
 +echo "svn mkdir $site/trunk $site/​branches $site/tags -m \"​Création des répertoires d'​archivage Subversion.\"";​
 +svn mkdir  --username usersvncreate $site/trunk $site/​branches $site/tags -m "​Création des répertoires d'​archivage Subversion."​
 +
 +echo "
 +################################################​
 +Pour les autorisation d'​accès,​
 +Editez ce fichier:
 +        /​etc/​apache2/​dav_svn.authz
 +Pour les Login hors LDAP:
 +        htpasswd -m /​etc/​apache2/​dav_svn.passwd [MyUser]
 +
 +#################################################​
 +";
 +
 +echo "​Fin";​
 +EOF
 +</​code>​
 +Rendons maintenant ce script exécutable : <​code>​
 +chmod +x /​usr/​local/​sbin/​createRepoSvn.sh</​code>​
 +
 +Vous avez surement vu que ce script utilise un utilisateur "​usersvncreate"​ pour créer les dépots.
 +Cet utilisateur n'​existe pas encore, nous allons le créer dans le fichier texte d'​authentification,​ en utilisant un mot de passe généré grâce la encore a la commande //pwgen//.
 +
 +  * Exécuter : <​code>​htpasswd -m /​etc/​apache2/​dav_svn.passwd usersvncreate</​code>​
 +  * Entrez le mot de passe de votre choix (il servira a toutes les futures créations de dépôt SVN)
 +  * Restreindre les acces a ce fichier :<​code>​
 +chown root:​www-data /​etc/​apache2/​dav_svn.passwd
 +chmod 640 /​etc/​apache2/​dav_svn.passwd
 +</​code>​
 +
 +Pour créer effectivement le dépôt "​mondepot"​ il faut utiliser la commande suivante : <​code>/​usr/​local/​sbin/​createRepoSvn.sh</​code>​et entrer ensuite le nom du depot souhaité.
 +
 +Une fois le dépôt créé il faut ajouter dans le fichier /​etc/​apache2/​dav_svn.authz les groupes éventuels et les droits correspondants.
 +
 +Le dépôt sera accessible via l'URL https://​svn.mondomaine.com/​svn/​mondepot
sysadmin/install_svn.1285839878.txt.gz · Dernière modification: 2010/09/30 11:44 par james
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0