Accueil > Développement > Installation d’un serveur subversion sur Ubuntu

Installation d’un serveur subversion sur Ubuntu

Certes, on trouve plein de doc sur le sujet un peu partout, que ce soit sur le site de subversion, sur les sites de Ubuntu, ou des forums alternatifs. Et pourtant, j’ai quand même eu du mal à rassembler toutes les billes, car il existe plusieurs solutions (apache, svnserve), basées ou non sur SSL, avec différents moyens d’authentification, avec des procédures plus ou moins différentes suivant les OS, gérées en vhost ou non, …

Mon besoin: avoir un virtual host (https://svn.domaine.fr) dans lequel je peux y gérer plusieurs repository svn (https://svn.domaine.fr/projet1, etc…). Le tout hébergé sur un serveur Ubuntu 8.04 (Hardy).

J’ai finalement adopté la solution basée sur apache2, et ce fut plus simple que certaines manips que j’ai vu sur certains forums.

J’utiliserai l’arborescence suivante pour mes dépots svn:

/var---svn         ; répertoire de base contenant tous les dépots
        +-projet1  ; repository du projet 1
        +-projet2  ; repository du projet 2
                   ; etc...

Création des repositories subversion

Installer svn:

sudo apt-get install subversion

Création d’un répertoire qui contiendra tous les repositories:

mkdir /var/svn

Puis création d’un repository pour chaque projet:

svnadmin create /var/svn/projet1

Installation d’apache et SSL

sudo apt-get install apache2 openssl

Activer le mod ssl et créer un certificat (validité 1 an dans l’exemple ci-dessous):

sudo a2enmod ssl
sudo openssl req -x509 -nodes -days 365 -newkey rsa:1024 \
                   -out /etc/apache2/server.crt -keyout /etc/apache2/server.key

Répondre aux questions posées, voici un exemple de réponses:

FR
FRANCE
Bordeaux
Ma compagnie fictive
Idem
svn.domaine.fr
nom@mail.fr

Puis modifier les droits du certificat:

sudo chmod go-rwx /etc/apache2/server.key

Lien entre apache et svn

Il faut installer le mod dav_svn:

sudo apt-get install libapache2-svn

On n’éditera pas /etc/apache2/mods-available/dav_svn.conf, on mettra les réglages directement dans le fichier vhost afin de bénéficier de la clause ServerName (sinon les réglages svn seraient appliqués pour tous les vhosts).

Si on veut un accès protégé, il faut créer un utilisateur svn ‘toto’:

sudo htpasswd -cs /etc/apache2/dav_svn.passwd toto

Puis pour ajouter d’autres utilisateurs, remplacer ‘-cs’ par ‘-s’.

Modifier l’appartenance de certains répertoires pour qu’apache puisse y accéder:

sudo chown www-data:www-data /etc/apache2/dav_svn.passwd
sudo chown -R www-data:www-data /var/svn

Activer si ce n’est déjà fait le module dav_svn:

sudo a2enmod dav_svn

Créer ensuite un virtual host, dans mon exemple il s’agit de https://svn.domaine.fr. Editer le fichier /etc/apache2/sites-available/svn, puis y coller:

NameVirtualHost *:443

<VirtualHost *:443>

    ServerName svn.domaine.fr
    SSLEngine on
    SSLCertificateFile /etc/apache2/server.crt
    SSLCertificateKeyFile /etc/apache2/server.key

    <Location / >
      DAV svn
      SVNParentPath /var/svn
      AuthType Basic
      AuthName "Subversion Repository"
      AuthUserFile /etc/apache2/dav_svn.passwd
      Require valid-user
    </Location>
</VirtualHost>

(Les 4 dernieres directives servent à protéger l’accès. Les enlever pour un accès public).

Puis l’activer:

sudo a2ensite svn

Puis redémarrer apache:

sudo /etc/init.d/apache2 reload

Ignorer les warnings « Could not reliably determine etc… ». Par contre, si un message d’erreur concernant les ports apparait, éditer alors le fichier /etc/apache2/sites-enabled/000-default, et remplacer les ‘*’ par ‘*:80′ (2 occurences). S’il y a d’autres fichiers dans ce meme répertoire, appliquer la meme modif.

Et voilà !

Vous pouvez maintenant vous rendre avec votre navigateur à l’adresse suivante: https://svn.domaine.fr/projet1

Et pour créer de nouveaux repositories, il suffira juste de taper:

sudo svnadmin create /var/svn/nouveauprojet
sudo chown -R www-data:www-data /var/svn/nouveauprojet

Le navigateur vous proposera d’ajouter une exception pour le certificat de ce site.

Tristan Développement , , , ,

  1. 14/01/2009 à 07:52 | #1

    Sur svn & co, tu trouveras des choses par là : http://www.unelectronlibre.info/tutoriels/#d-veloppement ;-)

  1. Pas encore de trackbacks