Installer un serveur Subversion

De Wiki Dane (ex wikitice)
Aller à : navigation, rechercher

Installer un serveur Subversion sous Debian Etch

Fonctionnalités

  • Le serveur gérera plusieurs dépôts.
  • L'accès sera sécurisé en SSL
  • Les utilisateurs authentifiés sur l'annuaire Active Directory (cas particulier d'authentification LDAP) d'un serveur Windows 2003.
  • Lors de chaque « commit » les utilisateurs du dépôts reçoivent un courriel avec les « diff » entre les versions.

Paquets à installer

À partir d'une machine neuve :

  aptitude install subversion subversion-tools apache2 openssl libapache2-svn 

Création des répertoires lieu des dépôts

  • Afin de pouvoir facilement affiner les droits, l'organisation choisie est la suivante :


Arborescence de dépôts Subversion

Configuration Apache

  • Site
    • Il a été choisi de transférer à Subversion, la gestion des différents dépôts. Ainsi l'ajout ou la suppression d'un dépôt ne nécessite pas la relecture par Apache de ses fichiers de configuration. L'administrateur des dépôts Subversion peut donc être différent de celui d'Apache.
    • créer le fichier du site
 vi /etc/apache2/sites-available/svn
NameVirtualHost *:443
    <VirtualHost *:443>
         ServerAdmin nom@domaine
         ServerName nom_du_serveur_tel_que_noté_dans_le_DNS
         SSLEngine on 
    
        #Chemin vers le certificat
         SSLCertificateKeyFile /chemin_vers/certif.key
         SSLCertificateFile /chemin_vers/certif.crt 

        #Très important, ce répertoire ne doit pas être en aval des dépôts Subversion
        DocumentRoot /var/www/svn

         #Pour des logs spécifiques au svn 
        CustomLog /var/log/apache2/svn.access.log combined 
         [ ...]
     </VirtualHost>
  • SSL
    • Création du certicat. Un script a existé sous etch, mais il n'est plus disponible. La procédure est similaire à celle précédemment utilisée.
openssl req -x509 -nodes -days 7300 -subj '/C=FR/ST=_Département_/L=_Ville_/CN=_nom_public_de_la_machine' -newkey rsa:1024 -out /etc/apache2/certif.crt -keyout /etc/apache2/certif.key 
chmod 440 /etc/apache2/certif.key #Modification des droits pour que tout le monde ne puisse lire la clé
    • Quelques explications :
      • -days indique le nombre de jours de validité du certificat en jours
      • -subj permet de spécifier en particulier le CN de la machine et éviter des erreurs de certificat
  • Authentification LDAP (Active Directory)

Configuration du module Subversion de Apache

La configuration se trouve dans le fichier /etc/apache2/mods-available/dav_svn.conf. Mais ce fichier peut être modifié lors d'une mise à jour. Nous allons donc le copier dans un répertoire utilisé par Apache mais qui ne sera pas modifié lors de mises à jour éventuelles.

cat /etc/apache2/mods-available/dav_svn.conf > /etc/apache2/conf.d/svn

Éditons maintenant le fichier.

vi /etc/apache2/conf.d/svn
# dav_svn.conf - Example Subversion/Apache configuration 

[...] 

<Location /svn/depot1> 

        DAV svn
        SVNPath /home/svn/depot1
        AuthType Basic
        AuthBasicProvider ldap
        AuthName "Authentification Active Directory"
        AuthLDAPURL "ldap://ip_du_serveur_ldap:389/OU=ou_du_compte_utilisé,DC=domaine,DC=tld_du_domaine?sAMAccount
  Name?sub?(objectClass=*)" NONE
        AuthLDAPBindDN compte_à_utiliser_pour_lire_AD@domaine.tld_du_domaine
        AuthLDAPBindPassword mdp_du_compte_lecteur
        AuthzLDAPAuthoritative on
        Require ldap-group CN=groupe,OU=svn,DC=crdp,DC=local #nom du groupe qui peu accéder à ce dépôt


#À decommenter si l'accès à certaines fonctions (lecture, parcours...) est autorisé sans authentification
#<LimitExcept GET PROPFIND OPTIONS REPORT>
#Require valid-user
#<LimitExcept>

</Location> 

#Ajouter autant de parties <Location> </Location> qu'il y a de dépôts

Création des dépôts

Création du répertoire svn

mkdir /home/svn 

Création des dépots

svnadmin create /home/svn/depot1
svnadmin create /home/svn/depot2

Activation des dépôts

Dans un répertoire temporaire, créer une arborescence :

mkdir -p /var/www/temp/projet/branches
mkdir /var/www/temp/projet/tags
mkdir /var/www/temp/projet/trunk

Mettre un fichier fictif dans « trunk »

touch /var/www/temp/projet/trunk/foo.c

Activer le dépôt

svn import /var/www/temp/projet file:///home/svn/depot1 -m "initial import"
svn import /var/www/temp/projet file:///home/svn/depot2 -m "initial import"

Ou utiliser le script suivant :

vi /usr/bin/activer_svn
#!/bin/bash

source=$1
destination=$2

svnadmin create $destination
svn import $source "file://$destination" -m "initial import"

Donner les droits d'exécution au script

chmod u+x /usr/bin/activer_svn

Exécuter le script

activer_svn /var/www/temp/projet /home/svn/depot3

Configuration Subversion

Une fonctionnalité très pratique de Subversion, est d'envoyer un courriel de synthèse à tous les membres d'une liste de diffusion, lors de chaque « commit ».

Pour cela il suffit de :

Créer un fichier post_commit

cp /home/svn/depot1/hooks/post_commit.tmpl /home/svn/depot1/hooks/post_commit

Éditer le nouveau fichier

vi /home/svn/depot1/hooks/post_commit

Modifier la fin du fichier en :

[...]

REPOS="$1"
REV="$2"

/usr/share/subversion/hook-scripts/commit-email.pl "$REPOS" "$REV" --from expediteur@domaine.tld -s "[objet_du_message]" liste_destinataire@doamine.tld


Rendre le fichier exécutable

chmod u+x /home/svn/depot1/hooks/post_commit

Bien evidemment, cela suppose qu'un serveur smtp soit configuré sur la machine pour qu'il soit possible de poster. Vous pourrez également avoir à adapter le fichier /usr/share/subversion/hook-scripts/commit-email.pl. Par défaut, il est configuré pour poster sur 127.0.0.1.

Ressources


Divers

Contributeurs à cette page