Ceci est une ancienne révision du document !
Table des matières
Installation d'un dépôt subversion (SVN)
Subversion est l'un des logiciels de gestion de configuration les plus utilisés.
Nous allons voir ici comment créer un dépôt subversion permettant d'héberger plusieurs projets, le tout accessible en web.
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
- Autorisation d'accès pour les comptes systèmes de la machine (via PAM)
Prérequis
- 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
- L'installation est relativement simple :
apt-get install subversion libapache2-svn libapache2-mod-auth-pam
Configuration
Virtualhost apache
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) :
cat << EOF > /etc/apache2/svn.mondomaine.com ####################################### # VirtualHost pour le svn ###################################### <VirtualHost *:443> ServerName svn.mondomaine.com ServerAdmin webmaster@localhost 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/ ErrorLog /var/log/apache2/svn_mondomaine_com_error.log CustomLog /var/log/apache2/svn_mondomaine_com_access.log combined #RedirectMatch ^/$ /svn/ RedirectMatch ^svn$ / <Location /svn> DAV svn # use SVNParentPath if you have multiple repositories under # under a single directory (/var/lib/svn/repo1, /var/lib/svn/repo2, ...). # You need either SVNPath and SVNParentPath, but not both. SVNParentPath /var/lib/svn #SVNPath /var/lib/svn AuthType Basic AuthName "Subversion Repository" #Fichier d'authentification des utilisateurs AuthBasicProvider file AuthUserFile /etc/apache2/dav_svn.passwd # Puis authentification PAM AuthPAM_Enabled on AuthPAM_FallThrough off AuthBasicAuthoritative off Satisfy Any Require valid-user SVNIndexXSLT "/repos-web/view/repos.xsl" # fichier contenant les ACL pour les depots SVN AuthzSVNAccessFile /etc/apache2/dav_svn.authz </Location> <Directory "/var/www/svn.mondomaine.com/htdocs"> Options Indexes MultiViews AuthType Basic AuthName "Subversion Repository" AuthBasicProvider file AuthUserFile /etc/apache2/dav_svn.passwd AuthPAM_Enabled on AuthPAM_FallThrough off AuthBasicAuthoritative off Satisfy Any Require valid-user </Directory> # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn ServerSignature Off </VirtualHost> EOF
Activation du virtualhost
- Il faut créer un lien symbolique comme suit :
ln -s /etc/apache2/sites-available/svn.mondomaine.com /etc/apache2/sites-enabled/
- Activation des modules apache nécessaires :
a2enmod auth_pam dav_svn auth_basic
- Il ne reste plus qu'a faire recharger cette configuration à apache :
/etc/init.d/apache2 reload
- vous pouvez vérifier en allant sur la page 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 :
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
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.
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