Recherche de site Web

Le guide ultime pour configurer Apache Subversion SVN et TortoiseSVN pour le contrôle de version


Si votre travail nécessite la gestion de documents, de pages Web et d'autres types de fichiers régulièrement mis à jour, vous souhaiterez peut-être utiliser un mécanisme de contrôle de version si vous ne le faites pas déjà.

Entre autres choses, cela vous permet (ainsi qu'à un groupe de collaborateurs potentiels) de suivre les modifications apportées à un fichier donné et de revenir à une version précédente si un problème est rencontré ou lorsqu'une mise à jour n'a pas produit le résultat attendu. .

Dans l'écosystème du logiciel libre, le système de contrôle de version le plus utilisé s'appelle Apache Subversion (ou SVN en abrégé). Avec l'aide de mod_dav_svn (le module Apache pour Subversion), vous pouvez accéder à un référentiel Subversion en utilisant HTTP et un serveur Web.

Cela dit, retroussons nos manches et installons ces outils sur un RHEL/CentOS 7, Fedora 22-24, Debian 8/7 et Serveur Ubuntu 16.04-15.04. Pour nos tests nous utiliserons un serveur CentOS 7 avec l'IP 192.168.0.100.

Côté client (une machine Windows 7), nous installerons et utiliserons TortoiseSVN (qui est basé sur Apache Subversion) comme interface avec SVN.

Notre environnement de test


Server - CentOS 7
IP Address - 192.168.0.100
Client - Windows 7

Étape 1 – Installation et configuration de SVN sous Linux

Comme nous venons de le mentionner, nous nous appuierons sur Apache afin d'accéder au référentiel SVN via une interface web. S'il n'est pas déjà installé, assurez-vous de l'ajouter à la liste des packages comme indiqué ci-dessous :


------------------ On CentOS / RHEL / Fedora ------------------ 
yum update && yum install mod_dav_svn subversion httpd -y

------------------ On Debian / Ubuntu ------------------ 
apt-get update && apt-get install libapache2-svn subversion apache2 -y 

Lors de l'installation sur CentOS 7, un fichier de configuration Apache pour SVN sera créé sous la forme /etc/httpd/conf.modules.d/10-subversion.conf. Ouvrez le fichier et ajoutez le bloc de configuration suivant :


<Location /svn>
    DAV svn
    SVNParentPath /websrv/svn
    AuthType Basic
    AuthName "Welcome to SVN"
    AuthUserFile /etc/httpd/subversion-auth
    Require valid-user
</Location>

Remarque : Sur Debian/Ubuntu, vous devez ajouter les lignes ci-dessous à /etc/apache2/mods-enabled/dav_svn.conf fichier.


<Location /svn>
    DAV svn
    SVNParentPath /websrv/svn
    AuthType Basic
    AuthName "Welcome to SVN"
    AuthUserFile /etc/apache2/subversion-auth
    Require valid-user
</Location>

Sur Debian/Ubuntu, vous devez activer le module dav_svn Apache :


a2enmod dav_svn

Quelques précisions :

  1. La directive SVNParentPath indique le répertoire dans lequel nos référentiels seront créés ultérieurement. Si ce répertoire n'existe pas (ce qui est très probablement le cas), créez-le avec :

    
    mkdir -p /websrv/svn
    

    Il est important de noter que ce répertoire ne doit PAS être situé à l'intérieur, ni chevaucher, le DocumentRoot d'un hôte virtuel actuellement servi par Apache. C'est un véritable succès !

  2. La directive AuthUserFile indique le fichier dans lequel les informations d'identification d'un utilisateur valide seront stockées. Si vous souhaitez autoriser tout le monde à accéder à SVN sans authentification, supprimez les quatre dernières lignes du bloc Emplacement. Si tel est le cas, sautez l'étape 2 et passez directement à l'étape 3.
  3. Même si vous pourriez être tenté de redémarrer Apache afin d'appliquer ces récentes modifications, ne le faites pas encore car nous devons encore créer le fichier d'authentification avec les utilisateurs valides pour SVN, ainsi que le référentiel lui-même.

Étape 2 – Ajouter des utilisateurs autorisés à accéder à SVN

Nous allons maintenant utiliser htpasswd pour créer un mot de passe pour les comptes qui seront autorisés à accéder à SVN. Pour le premier utilisateur uniquement, nous aurons besoin de l'option -c.

Les comptes autorisés et les mots de passe cryptés par bcrypt (-B) seront stockés dans /etc/httpd/subversion-auth dans des paires clé-valeur. Notez que selon les normes actuelles, le cryptage MD5 ou SHA par défaut utilisé par htpasswd est considéré comme non sécurisé.


------------------ On CentOS / RHEL / Fedora ------------------ 
htpasswd -cB /etc/httpd/subversion-auth tecmint

------------------ On Debian / Ubuntu ------------------ 
htpasswd -cB /etc/apache2/subversion-auth tecmint

N'oubliez pas de définir la propriété et les autorisations appropriées sur le fichier d'authentification :


------------------ On CentOS / RHEL / Fedora ------------------ 
chgrp apache /etc/httpd/subversion-auth
chmod 660 /etc/httpd/subversion-auth

------------------ On Debian / Ubuntu ------------------ 
chgrp www-data /etc/apache2/subversion-auth
chmod 660 /etc/apache2/subversion-auth

Étape 3 – Ajouter la sécurité et créer un référentiel SVN

Puisque vous accéderez à SVN via une interface Web, vous devrez autoriser le trafic HTTP (et éventuellement HTTPS) à travers votre pare-feu.


------------------ On CentOS / RHEL / Fedora ------------------ 
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload 

En rechargeant la configuration du pare-feu avec --reload, les paramètres permanents prennent effet immédiatement.

Créez un dépôt SVN initial appelé tecmint :


svnadmin create /websrv/svn/tecmint

Remplacez le propriétaire et le propriétaire du groupe par apache de manière récursive :


------------------ On CentOS / RHEL / Fedora ------------------ 
chown -R apache:apache /websrv/svn/tecmint

------------------ On Debian / Ubuntu ------------------ 
chown -R www-data:www-data /websrv/svn/tecmint

Enfin, vous devrez changer le contexte de sécurité de /websrv/svn/tecmint (notez que vous devrez répéter cette étape si vous décidez de créer d'autres référentiels ultérieurement) :


------------------ On CentOS / RHEL / Fedora ------------------ 
chcon -R -t httpd_sys_content_t /websrv/svn/tecmint/
chcon -R -t httpd_sys_rw_content_t /websrv/svn/tecmint/

Remarque : les deux dernières commandes peuvent ne pas s'appliquer si vous installez SVN sur un VPS avec SELinux désactivé.

Lecture suggérée : Découvrez comment désactiver SELinux temporairement ou définitivement sous Linux

Redémarrez Apache et vérifiez que le référentiel est disponible.


------------------ On CentOS / RHEL / Fedora ------------------ 
systemctl restart httpd

------------------ On Debian / Ubuntu ------------------ 
systemctl restart apache2

Lancez ensuite un navigateur Web et pointez-le vers http://192.168.0.100/svn/tecmint. Après avoir saisi les informations d'identification de l'utilisateur valide que nous avons créé à l'étape 1, le résultat devrait être similaire à :

À ce stade, nous n'avons ajouté aucun code à notre référentiel. Mais nous le ferons dans une minute.

Étape 4 – Installez TortoiseSVN dans le client Windows 7

Comme nous l'avons mentionné dans l'introduction, TortoiseSVN est une interface conviviale pour Apache Subversion. Il s'agit d'un logiciel libre sous licence GPL et peut être téléchargé à partir de https://tortoisesvn.net/downloads.html.

Choisissez l'architecture (32 ou 64 bits) qui correspond à votre machine et installez le programme avant de continuer.

Étape 5 – Configurer le référentiel SVN sur la machine client

Dans cette étape, nous utiliserons un dossier nommé webapp dans Documents. Ce dossier contient un fichier HTML et deux dossiers nommés scripts et styles avec un fichier Javascript et un fichier CSS (script.js et styles.css, respectivement) que nous souhaitons ajouter au contrôle de version.

Cliquez avec le bouton droit sur webapp et choisissez SVN Checkout. Cela créera une copie locale du référentiel distant (qui est vide pour le moment) et initialisera le dossier pour le contrôle de version :

Dans l'URL du référentiel, saisissez http://192.168.0.100/svn/tecmint et assurez-vous que le répertoire de paiement local reste le même, puis cliquez sur OK :

Saisissez le nom d'utilisateur et le mot de passe (reportez-vous à l'étape 2) et cliquez sur OK :

Il vous sera demandé si vous souhaitez effectuer un retrait dans un répertoire non vide. Confirmez pour procéder au paiement. Une fois l'opération terminée, une coche verte apparaîtra à côté du nom du dossier :

Étape 6 – Valider les modifications et déployer les fichiers sur le référentiel SVN distant

Faites à nouveau un clic droit sur webapp et choisissez Commit cette fois. Ensuite, rédigez un commentaire descriptif pour identifier ultérieurement ce commit et vérifiez les fichiers et dossiers que vous souhaitez déployer dans le référentiel. Enfin, cliquez sur OK :

Selon la taille des fichiers, la validation ne devrait pas prendre plus d'une minute. Une fois terminé, vous verrez que nous sommes désormais sur la révision 1, qui correspond à la version et aux fichiers répertoriés dans l'interface web :

Si plusieurs personnes travaillent sur les mêmes fichiers, vous souhaiterez mettre à jour votre copie locale afin de disposer de la dernière version disponible sur laquelle travailler. Vous pouvez le faire en cliquant avec le bouton droit sur webapp et en choisissant Mettre à jour dans le menu contextuel.

Félicitations ! Vous avez configuré avec succès un serveur SVN et validé/mis à jour un projet simple sous contrôle de version.

Résumé

Dans cet article, nous avons expliqué comment installer et configurer un serveur de référentiel Apache Subversion sur un serveur CentOS 7, et comment valider les modifications apportées à ce référentiel à l'aide de TortoiseSVN.

Veuillez noter qu'il y a bien plus à dire sur SVN et TortoiseSVN que ce que nous pouvons couvrir de manière adéquate ici (en particulier comment revenir aux révisions précédentes), vous pouvez donc vous référer au site officiel docs (SVN et TortoiseSVN) pour plus d'informations et de cas de configuration.

Comme toujours, n'hésitez pas à nous faire savoir si vous avez des questions ! N'hésitez pas à utiliser le formulaire de commentaires ci-dessous pour nous joindre à tout moment.