Ce article décrit comment installer et configurer le gestionnaire de sources et de contrôle de versions Apache Subversion sur Linux Ubuntu Server 14.04 LTS. Ce type de programme présente plus fonctions, notamment :
garder un historique des différentes versions des fichiers d’un projet ;
permettre le retour à une version antérieure quelconque ;
garder un historique des modifications avec leur nature, leur date, leur auteur ;
permettre un accès souple à ces fichiers, en local ou via un réseau ;
permettre à des utilisateurs distincts et souvent distants de travailler ensemble sur les mêmes fichiers.
Toutes installations de SVN nécessiteront l’installation du paquet subversion. Pour les futurs repository, une base de dépôts va être créer dans le répertoire /var via la commande :
sudo apt-get install subversion
sudo mkdir /var/svn
L’adresse du serveur sera Votre_Adresse_Locale et le port sera 80. Le répertoire principale du serveur subversion est /var/svn. Nous considérerons cette base pour la suite de l’article.
SVN peut être installé en plusieurs méthodes :
Seul en local, l’accès au dépôt se faisant par file://var/svn/projet
Seul en mode serveur, c’est-à-dire que l’accès au dépôt SVN sera sous la forme svn://Votre_Adresse_Locale/projet1, avec des utilisateurs SVN créés à cet effet ;
ou administré via un module d’Apache (dav_svn), c’est à dire que l’accès au dépôt SVN sera sous la forme http://Votre_Adresse_Locale:80/projet1, avec des utilisateurs crées pour le module dav_svn pour l’authentification.
Dans notre cas, nous utiliserons la troisième option (SVN + Apache).
Pour installer un serveur SVN utilisant le serveur web Apache, nous aurons besoin d’Apache et de la bibliothèque de Subversion pour Apache. Il faut donc installer les paquets apache2, libapache2svn via la commande :
sudo apt-get install apache2 libapache2-svn apache2-utils
Suivez notre article sur la mise en place d’un LAMP sur Linux Ubuntu Server
La configuration principale du serveur SVN se situe dans le fichier /etc/apache2/mods-enabled/dav_svn.conf
Il y a deux orientations de configuration :
Configurer tous les dépôts un par un, ce qui permet de gérer les autorisations dépôt par dépôt mais qui oblige à modifier la configuration d’Apache (et donc de le relancer ensuite) à chaque ajout de dépôt ;
Configurer un répertoire parent de tous les dépôts, ce qui n’oblige pas à reconfigurer Apache à chaque ajout mais qui ne permet de gérer les autorisations finement.
La deuxième option de configuration ne sera pas développée dans cet article. Ici nous considérons que le nom du dépôt à créer est « projet_1 » et qu’il doit se situer dans le répertoire « /var/svn » et que l’on veut y accéder par l’url Votre_Adresse_Locale:80/svn (le nom et l’url sont ici volontairement différents pour voir la différence).
Ouvrir le fichier /etc/apache2/mods-available/dav_svn.conf
Décommenter la ligne d’ouverture de l’environnement. Ensuite modifier le nom par l’url que vous voulez utiliser :
<location /svn>
Retirer le commentaire sur la ligne pour activer le module
DAV svn
Retirer le commentaire et faire pointer vers votre répertoire SVN la ligne suivante vers l’adresse du dépôt sur votre disque dur.
SVNParentPath /var/svn
Retirer le commentaire devant la ligne de fermeture de l’environnement ouvert précédemment
</location>
Votre fichier doit ressembler à ceci :
<location /svn>
DAV svn
SVNParentPath /var/svn
</location>
Redémarrer Apache via la commande :
sudo service apache2 restart
Créer le dépôt projet_1 et donner les droits d’accès au dépôt uniquement à Apache
sudo svnadmin create /var/svn/projet_1
sudo chown -R www-data:www-data /var/svn/projet_1
Vérifier à l’aide d’un navigateur que Votre_Adresse_Locale:80/svn/projet_1 répond
Pour activer l’authentification, vous devez modifier le fichier /etc/apache2/mods-available/dav_svn.conf
Retirer le commentaire sur la ligne
AuthType Basic
Retirer le commentaire sur la ligne
AuthName "Subversion Repository"
Retirer le commentaire sur la ligne
AuthUserFile /etc/apache2/dav_svn.passwd
Retirer le commentaire sur la ligne
Require valid-user
Votre fichier doit ressembler à ceci :
<location /svn>
DAV svn
SVNParentPath /var/svn
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
</location>
Puis avec la commande htpasswd, créer le fichier /etc/apache2/dav_svn.passwd contenant tous les utilisateurs et les mots de passe.
Pour le premier utilisateur à créer, utiliser cette commande
sudo htpasswd -cs /etc/apache2/dav_svn.passwd bob
Nous utiliserons par contre cette commande pour les autres utilisateurs :
sudo htpasswd -cs /etc/apache2/dav_svn.passwd bill
Faire appartenir ce fichier à l’utilisateur d’Apache via cette commande :
sudo chown www-data:www-data /etc/apache2/dav_svn.passwd
Redémarrer à nouveau Apache
sudo service apache2 restart
Votre dépôt doit maintenant être accessible via les commandes SVN de base sous l’URL :
Votre_Adresse_Locale:80/svn/projet_1. Si vous avez suivi la procédure d’authentification à la lettre, un nom utilisateur et mot de passe (précédemment créés) seront demandés.