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:33]
james ajout modules apache
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 =====
   * Un serveur sous debian lenny hébergeant un serveur web (apache 2.2)   * Un serveur sous debian lenny hébergeant un serveur web (apache 2.2)
 +  * De l'​espace disque, ou mieux une partition (éventuellement LVM) dédiée dans /​var/​lib/​svn pour héberger les fichiers
  
 ===== Installation ===== ===== Installation =====
Ligne 30: Ligne 32:
         ServerAdmin webmaster@localhost         ServerAdmin webmaster@localhost
         SSLEngine on         SSLEngine on
 +        # certificats SSL: adapter a votre cas
 +        SSLCertificateFile ​   /​etc/​ssl/​certs/​svn.mondomaine.com.crt
 +        SSLCertificateKeyFile /​etc/​ssl/​private/​svn.mondomaine.com.key
 +
  
         DocumentRoot /​var/​www/​svn.mondomaine.com/​htdocs/​         DocumentRoot /​var/​www/​svn.mondomaine.com/​htdocs/​
Ligne 60: 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 92: 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>​
 <​note>​ Si vous avez des erreurs comme "​Invalid command '​AuthPAM_Enabled',​ perhaps misspelled or defined by a module not included in the server configuration"​ il vous manque surement des modules apache chargés. Dans le cas present le module auth_pam</​note>​ <​note>​ Si vous avez des erreurs comme "​Invalid command '​AuthPAM_Enabled',​ perhaps misspelled or defined by a module not included in the server configuration"​ il vous manque surement des modules apache chargés. Dans le cas present le module auth_pam</​note>​
-  * vous pouvez vérifier en allant sur la page [[http://​svn.mondomaine.com|http://​svn.mondomaine.com]] que cela fonctionne+  * vous pouvez vérifier en allant sur la page [[http://​svn.mondomaine.com|http://​svn.mondomaine.com]] que cela fonctionne ​(oupa) 
 + 
 +=== Creation de la page d'​accueil === 
 +Nous allons créer une page d'​accueil pour lister les projets du subversion :<​code>​ 
 +cat << EOF > /​var/​www/​svn.mondomaine.com/​htdocs/​index.php 
 +<?php 
 +// Filtrage pour interdire acces depuis exterieur a la liste des projets 
 +// remplacer x.y.z.t par votre adresse IP , ajouter au besoin d'​autres adresses 
 +if ($_SERVER['​REMOTE_ADDR'​] == '​x.y.z.t'​) { 
 +    // On construit la liste des projets 
 +    echo "<​html><​h1>​Liste des projets du Subversion</​h1><​ul>​\n";​ 
 +    $repo_root="/​var/​lib/​svn";​ 
 +    $repo_base_url="​https://​svn.mondomaine.com/​svn";​ 
 +    foreach (glob($repo_root."/​*"​) as $file) { 
 +        $repo=str_replace($repo_root."/",​ "",​ $file); 
 +        if (is_dir($file) && $repo != '​lost+found'​) { 
 +             echo "<​li><​a href=\"​$repo_base_url/​$repo\">​$repo</​a></​li>​\n";​ 
 +        } 
 +    } 
 +    echo"</​ul></​html>";​ 
 +} else { 
 +    echo "Acces NON autorise";​ 
 +
 + 
 +?> 
 +EOF 
 +</​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.1285839224.txt.gz · Dernière modification: 2010/09/30 11:33 par james
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0