Installer Subversion sur Debian, accessible via Apache2
Développement ·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.
Subversion
Installation
apt-get install subversion subversion-tools
(subversion-tools est un package supplémentaire d'outils pour l'administration et la maintenance de Subversion)
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
Accès au dépôt via Apache2
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 ?! ^^
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 /myrepository/svn>
DAV svn
SVNPath /path/to/svn/repositories/myrepository
# how to authenticate a user
AuthType Basic
AuthName "SVN : My Repository"
AuthUserFile /path/to/private/myrepository.htpasswd
# our access control policy
AuthzSVNAccessFile /path/to/private/myrepository.authz
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</location>
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.
Sécurisation et règles d'accès
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
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é !
Tests
Afin de s'assurer que notre configuration est parfaitement opérationnelle, nous allons effectuer 2 tests rapide :
Création des 3 branches de référence
svn mkdir http://localhost/myrepository/svn/trunk \
http://localhost/myrepository/svn/branches \
http://localhost/myrepository/svn/tags -m "Création des 3 branches de référence." --username=myuser
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é ! ^^
Dans le courant de la semaine, je compléterais ce tutorial par un billet dédié à l'installation de Trac. A suivre ! ;-)