Ceci est une ancienne révision du document !


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
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

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
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