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:17]
james modif vhost
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 6: Ligne 7:
  
 Comme toujours l'​installation se fera sur une debian stable (lenny actuellement). Comme toujours l'​installation se fera sur une debian stable (lenny actuellement).
 +
 +L'​authentification se fera sous deux formes :
 +  * Autorisations d'​accès via un fichier pour les comptes spécifiques
 +  * 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 =====
-  * L'​installation est relativement simple :<​code>​apt-get install subversion libapache2-svn</​code>​+  * L'​installation est relativement simple :<​code>​apt-get install subversion libapache2-svn ​libapache2-mod-auth-pam</​code>​
  
 ===== Configuration ===== ===== Configuration =====
  
 ==== Virtualhost apache ==== ==== Virtualhost apache ====
-<​code>​cat << EOF > /​etc/​apache2/​svn.mondomaine.com+=== Création du virtualhost === 
 +Elle se fait en ajoutant un fichier /​etc/​apache2/​svn.mondomaine.com (je vous laisse adapter le nom a votre cas) :<​code>​ 
 +cat << EOF > /​etc/​apache2/​svn.mondomaine.com
 #######################################​ #######################################​
 # VirtualHost pour le svn # VirtualHost pour le svn
Ligne 24: 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 54: 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 85: Ligne 98:
 EOF EOF
 </​code>​ </​code>​
 +=== Activation du virtualhost ===
 +  * 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/​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>​
 +  * 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>​
 +  * 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.1285838233.txt.gz · Dernière modification: 2010/09/30 11:17 par james
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0