Installer Subversion sur Debian, accessible via Apache2

 •    •    •    •    •  

Je m'étais promis d'installer SVN sur mon serveur afin de me simplifier la vie de développeur et c'est enfin fait !

Finalement l'opération à été nettement plus simple que ce que j'avais imaginé, même si c'est toujours les petites touches finales qui sont pénibles... bref, je vais vous expliquer ici comment installer un serveur subversion, créer un dépôt (également appelé référentiel ou repository), le rendre accessible par le Web (via Apache2) et appliquer des règles d'accès.

Sommaire :

1. Subversion
    a. Installation
    b. Création d'un dépôt
2. Accès au dépôt via Apache2
    a. Installation du module
    b. Configuration d'Apache2
    c. Droits Apache2
3. Sécurisation et règles d'accès
    a. Sécuriser l'accès
    b. Définir les permissions
4. Tests
    a. Création des 3 branches de référence
    b. Accès à ces branches via votre navigateur


1. Subversion

a. Installation

apt-get install subversion subversion-tools

(subversion-tools est un package supplémentaire d'outils pour l'administration et la maintenance de Subversion)

b. Création d'un dépôt

Maintenant que Subversion est installé, il toute de suite possible de créer son premier dépôt :

mkdir --p /path/to/svn/repositories
cd /path/to/svn/repositories
svnadmin create myrepository

2. Accès au dépôt via Apache2

a. Installation du module

Afin de rendre accessible le dépôt créé (autrement qu'en local) nous allons installer le module WebDAV pour SVN pour Apache2. Ainsi, notre dépôt deviendra accessible depuis le Web via HTTP en passant par le protocole dav_svn.

apt-get install libapache2-svn
a2enmod dav_svn
/etc/init.d/apache2 reload

Facile non ?! ^^

b. Configuration d'Apache2

Le module est installé, passons maintenant à partie un peu plus délicate, la configuration d'Apache2.
Dans le cas présenté ici, j'ai modifié le fichier de configuration d'Apache2, à savoir apache2.conf auquel j'ai ajouté les lignes suivantes en fin de fichier :

<location>
DAV svn
SVNPath /path/to/svn/repositories/myrepository
# how to authenticate a user
AuthType Basic
AuthName &quot;SVN : My Repository&quot;
AuthUserFile /path/to/private/myrepository.htpasswd
# our access control policy
AuthzSVNAccessFile /path/to/private/myrepository.authz
<limitexcept>Require valid-user</limitexcept>
</location>

c. Droits Apache2

Afin qu'Apache2 puissent accéder aux fichiers de votre dépôt, il est nécessaire de modifier les droits qui leurs sont appliqués :

chown -R www-data:www-data /path/to/svn/repositories
chmod -R 775 /path/to/svn/repositories

On relance Apache2 pour valider notre configuration et on passe aux droits d'accès.

3. Sécurisation et règles d'accès

a. Sécuriser l'accès

Afin de protéger l'accès au dépôt que nous avons créé, nous allons créé un fichier d'utilisateurs (chacun étant associé à un mot de passe haché).

cd /path/to/private/
htpasswd -cm myrepository.htpasswd myuser

Note : -cm : c = création, m = hachage MD5

Il est également conseillé de créer un accès anonyme pour la consultation des sources :

htpasswd -m myrepository.htpasswd anonymous

b. Définir les permissions

Ce fichier d'utilisateurs n'est intéressant qu'une fois combiné à un fichier de permissions (authz) afin de définir des règles simple sur qui peut faire quoi et où.

touch /path/to/private/myrepository.authz

Exemple de règles appliqué à mon dépôt :

[groups]
dev = narno, engy
[/]
anonymous = r
@dev = rw
[/trunk]
@dev = rw
[/branches]
narno = rw
engy = r
[/tags]
narno = rw
engy = r

L'édition du fichier de permission s'effectue à la manière d'un fichier INI :

  • nous définissons d'abord un groupe dev comportant 2 utilisateurs, à savoir narno et engy (ces 2 utilisateurs doivent exister dans le fichier de d'utilisateur créé à l'étape précédente).
  • ensuite nous appliquons des droits pour chacun des niveaux de l'arborescence du dépôt

Encore une fois, rien de bien compliqué !

4. Tests

Afin de s'assurer que notre configuration est parfaitement opérationnelle, nous allons effectuer 2 tests rapide :

a. Création des 3 branches de référence

svn mkdir <a href="http://localhost/myrepository/svn/trunk" title="http://localhost/myrepository/svn/trunk">http://localhost/myrepository/svn/trunk</a> <a href="http://localhost/myrepository/svn/branches" title="http://localhost/myrepository/svn/branches">http://localhost/myrepository/svn/branches</a> <a href="http://localhost/myrepository/svn/tags" title="http://localhost/myrepository/svn/tags">http://localhost/myrepository/svn/tags</a> -m &quot;Cr&eacute;ation des 3 branches de r&eacute;f&eacute;rence.&quot;  --username=myuser

b. Accès à ces branches via votre navigateur

Tentez simplement de parcourir votre dépôt via votre navigateur préféré :
http://localhost/myrepository/svn

Voilà, vous êtes paré pour développer en toute tranquillité ! ^^

Dès que possible, je compléterais ce tutorial par un billet dédié à l'installation de Trac, à suivre ! ;-)