Guide des technologies

Installer et configurer un serveur SVN sur CentOS

9 min read Administration Mis à jour 19 Oct 2025
Installer et configurer SVN sur CentOS
Installer et configurer SVN sur CentOS

Ce tutoriel montre comment installer et configurer un serveur SVN (Subversion) sur CentOS, créer un dépôt, gérer les utilisateurs et les autorisations, tester l’accès depuis Linux et Windows (TortoiseSVN), et appliquer des bonnes pratiques de sécurité et d’exploitation.

Introduction — qu’est‑ce que SVN ?

SVN (Subversion) est un système de gestion de versions centralisé maintenu historiquement par la fondation Apache. Il permet de stocker l’historique des fichiers, de contrôler les accès par utilisateur et de travailler en équipe sur du code source, de la documentation ou des fichiers binaires.

Définition rapide : SVN = système centralisé de versioning. Il stocke un dépôt central et les clients récupèrent/committent des révisions.

Important : SVN est différent de Git (distribué). Choisissez SVN si vous avez besoin d’un dépôt centralisé, d’un contrôle fin des droits côté serveur ou d’une intégration simple avec des outils existants.

Objectifs de cet article

  • Installer Apache, Subversion et mod_dav_svn sur CentOS.
  • Créer un dépôt SVN (/data/svn/repo1).
  • Gérer utilisateurs et autorisations (fichiers passwd et authz).
  • Rendre le dépôt accessible via HTTP(S) et tester depuis Linux et Windows (TortoiseSVN).
  • Fournir listes de contrôle, alternatives, dépannage et sécurisation.

Prérequis

  • Accès root ou sudo sur un serveur CentOS (l’exemple utilise CentOS 6.4, 32 bits, mais les étapes s’appliquent aux versions plus récentes avec adaptations mineures).
  • Accès réseau entre clients et serveur (port 80 ou 443 ouvert).
  • Recommandation : effectuer ces opérations en environnement de test avant production.

1. Remarque préliminaire

Pour les commandes et exemples, l’adresse IP du serveur utilisée est 192.168.43.101. Adaptez-la à votre réseau. Les chemins utilisés : /data/svn pour stocker les dépôts.

Note : vous pouvez remplacer httpd par un autre serveur HTTP (nginx, lighttpd) mais l’intégration avec mod_dav_svn est la plus simple avec Apache httpd.

2. Installation de SVN et des composants web

Sur CentOS, on installe les paquets depuis yum (exemple avec httpd, subversion, mod_dav_svn).

Commandes d’installation (extraites et préservées) :

ifconfig

(Exemple de sortie réseau sur le serveur — utile pour connaître l’adresse IP locale.)

yum install -y httpd
[root@SVNSVR641 ~]# yum install -y httpd  
Loaded plugins: refresh-packagekit, security  
Repository 'OEL64' is missing name in configuration, using id  
Setting up Install Process  
Resolving Dependencies  
--> Running transaction check  
---> Package httpd.i686 0:2.2.15-26.0.1.el6 will be installed  
--> Finished Dependency Resolution

(La sortie système montre l’installation d’httpd — conserve la traçabilité.)

Ensuite Subversion :

yum install -y subversion

Puis le module Apache pour Subversion :

yum install -y mod_dav_svn

Notes :

  • Sur des versions modernes de CentOS/RHEL, remplacez yum par dnf si besoin.
  • Si vous utilisez un dépôt d’entreprise, adaptez le nom de repository et vérifiez les dépendances.

3. Configuration du dépôt SVN

Étapes principales : créer l’arborescence, initialiser un dépôt, définir la base d’utilisateurs, définir les règles d’accès.

  1. Créer le répertoire de stockage des dépôts :
mkdir /data/svn
  1. Créer le dépôt repo1 et donner la propriété à l’utilisateur Apache (processus web) :
svnadmin create /data/svn/repo1
chown -R apache:apache /data/svn/repo1

Après création, on retrouve la structure par défaut :

cd /data/svn/repo1
ls
[root@SVNSVR641 repo1]# ls
conf db format hooks locks README.txt
  1. Fichiers de configuration importants (dans conf/) : passwd, authz, svnserve.conf
cd conf/
ls
[root@SVNSVR641 conf]# ls
authz passwd svnserve.conf

Éditer svnserve.conf pour définir le comportement d’authentification local (même si ici on utilisera Apache) :

vi svnserve.conf

Exemple de contenu :

[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
  1. Créer la base d’utilisateurs (fichier passwd pour AuthUserFile) avec htpasswd (outil Apache HTTPD).

La première création avec -c crée le fichier :

htpasswd -c /data/svn/repo1/conf/passwd jay

Exemple d’ajout d’autres utilisateurs (sans -c) :

htpasswd /data/svn/repo1/conf/passwd fikri
htpasswd /data/svn/repo1/conf/passwd farid

Exemple de lecture :

[root@SVNSVR641 conf]# cat passwd
jay:14hCNCmBZY/qA
fikri:/hlooqJMfYLkw
farid:P7Zvu6B3HyFGo

Important : ce fichier contient des mots de passe hachés compatibles Apache (htpasswd). Conservez-le avec des permissions strictes (chmod 640, propriétaire apache).

  1. Définir les autorisations fines dans authz (AuthzSVNAccessFile) :
vi authz

Exemple :

[repo1:/]
farid = r
fikri = rw
* =

Interprétation : farid a lecture seule, fikri a lecture/écriture, les autres n’ont pas d’accès.

4. Configuration d’Apache pour exposer le dépôt via HTTP

Modifier httpd.conf ou inclure un fichier dans conf.d pour charger mod_dav_svn et déclarer la localisation du dépôt.

Vérifier que httpd inclut conf.d/*.conf :

vi /etc/httpd/conf/httpd.conf

Chercher ou ajouter :

Include conf.d/*.conf

Éditer /etc/httpd/conf.d/subversion.conf (ou créer) :

vi /etc/httpd/conf.d/subversion.conf

Contenu d’exemple :

LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so


DAV svn
SVNPath /data/svn/repo1
Authtype Basic
AuthName "My Repository"
AuthzSVNAccessFile /data/svn/repo1/conf/authz
AuthUserFile /data/svn/repo1/conf/passwd
Require valid-user

Explication rapide :

  • SVNPath pointe vers le dépôt.
  • AuthUserFile et AuthzSVNAccessFile définissent la source des utilisateurs et des autorisations.

Redémarrer Apache pour prendre en compte les modifications :

service httpd restart

Sortie attendue :

[root@SVNSVR641 conf.d]# service httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]

Note : pour HTTPS, configurez un VirtualHost sur le port 443 et certs TLS (recommandé pour la production).

5. Phase de tests (Linux et Windows)

Test depuis un client Linux

Installer subversion côté client :

yum install -y subversion

Checkout du dépôt :

mkdir repo_client
svn co http://192.168.43.101/repo1 repo_client

Lors du premier accès, Subversion demande les identifiants et peut avertir que le mot de passe sera stocké non chiffré. Vous pouvez configurer le stockage chiffré dans ~/.subversion/.

Exemple d’opérations pour tester la permission rw :

cd repo_client/
svn mkdir first_dir
svn commit -m "My first folder"

La sortie doit indiquer “Committed revision 1.” si l’utilisateur a le droit d’écriture.

Test depuis Windows (TortoiseSVN)

  • Installer TortoiseSVN.
  • Créer un dossier local (par ex. testSVN), faire clic droit → SVN Checkout, saisir l’URL http://192.168.43.101/repo1.
  • Authentifier avec un utilisateur (ex : farid, fikri, jay selon les droits).

Captures d’écran incluses dans cet article montrent les étapes d’authentification, l’erreur d’accès pour un utilisateur non autorisé et la tentative d’écriture bloquée pour un utilisateur en lecture seule.

Authentification HTTP SVN

Description image : Fenêtre d’authentification HTTP demandant un utilisateur et un mot de passe pour accéder au dépôt SVN.

Accès refusé

Description image : Page Web affichant “Forbidden” (accès refusé) lorsqu’un utilisateur sans droits tente d’accéder au dépôt.

Saisie de l'URL du dépôt SVN

Description image : Boîte de dialogue TortoiseSVN pour saisir l’URL du dépôt.

Connexion TortoiseSVN

Description image : Boîte de dialogue de connexion TortoiseSVN demandant les identifiants.

Checkout terminé

Description image : Notification indiquant que le checkout du dépôt SVN est terminé.

Liste des répertoires

Description image : Vue explorateur montrant le dossier créé précédemment par un autre utilisateur.

Créer un répertoire sous Windows

Description image : Création d’un répertoire local dans la copie de travail SVN.

Choisir Ajouter

Description image : Menu TortoiseSVN avec l’option “Add” pour ajouter un fichier/dossier à la gestion SVN.

Sélection du répertoire à ajouter

Description image : Confirmation de l’ajout du répertoire dans TortoiseSVN.

Répertoire ajouté

Description image : Notification indiquant que le répertoire a été ajouté localement.

Commit depuis TortoiseSVN

Description image : Option “SVN Commit” dans le menu contextuel de TortoiseSVN.

Saisie du message de commit

Description image : Boîte de dialogue demandant un message de commit.

Demande d'authentification SVN

Description image : Boîte d’authentification demandée par le serveur SVN au moment du commit.

Écriture refusée pour utilisateur lecture seule

Description image : Erreur indiquant l’accès en écriture refusé — illustrant correctement la restriction read‑only pour l’utilisateur farid.

6. Bonnes pratiques et sécurisation

  • Utiliser HTTPS/TLS pour chiffrer les communications : configurez un VirtualHost sur 443 avec un certificat valide (Let’s Encrypt, CA interne).
  • Ne jamais exposer AuthUserFile/passwd à des permissions larges : chmod 640 et propriétaire apache.
  • Limiter l’accès réseau au serveur SVN (firewall, VPN) si possible.
  • Sauvegarder régulièrement les dépôts (dump ou sauvegarde du répertoire db). Exemple :
svnadmin dump /data/svn/repo1 > /backups/repo1-$(date +%F).svn
  • Documenter la procédure de restauration et tester les backups.
  • Mettre en place une rotation des mots de passe et une politique d’authentification forte (LDAP/AD si possible).

Sécurité supplémentaire :

  • Utiliser mod_ssl + HSTS et désactiver TLS 1.0/1.1.
  • Désactiver l’anonyme (anon-access = none) si pas nécessaire.

7. Alternatives et scénarios différents

  • Utiliser svnserve (serveur natif svn) au lieu d’Apache : plus léger, fonctionne sur le port 3690, mais moins d’intégration HTTP. On configure svnserve.conf et on lance tcp svnserve.
  • Intégrer l’authentification à LDAP / Active Directory : remplacez AuthUserFile par une configuration mod_authnz_ldap.
  • Migrer vers Git si vous avez besoin d’un workflow distribué et d’une large compatibilité moderne (Git + GitLab/Gitea). La migration inclut git‑svn ou des outils comme svn2git.

Quand ne pas utiliser SVN :

  • Projets très distribués où les développeurs doivent travailler hors ligne de façon intensive → préférez Git.
  • Besoin d’historique distribué et de branches locales riches.

8. Dépannage courant

  • Erreur 403 Forbidden depuis le navigateur : vérifier AuthzSVNAccessFile, AuthUserFile et les permissions du système de fichiers.
  • Module mod_dav_svn non chargé : vérifier que les lignes LoadModule apparaissent et que le module existe dans modules/.
  • Erreur d’authentification : tester avec curl -u user:pass http://server/repo1 pour isoler le problème.
  • Problème de chemins : s’assurer que SVNPath pointe bien sur le répertoire contenant conf, db, hooks.

Exemples de commandes de vérification :

httpd -M | grep dav_svn
ls -la /data/svn/repo1/conf
svnlook youngest /data/svn/repo1

9. Liste de contrôle par rôle

Administrateur système:

  • Installer paquets et modules (httpd, subversion, mod_dav_svn).
  • Créer répertoire /data/svn et définir chown/chmod.
  • Configurer Apache (conf.d/subversion.conf) et HTTPS.
  • Mettre en place sauvegardes automatisées.

Administrateur SCM / DevOps:

  • Créer dépôts et stratégies d’autorisation (authz).
  • Intégrer l’authentification centralisée (LDAP/AD) si nécessaire.
  • Rédiger procédure de création de dépôts et de rétention.

Développeur:

  • Tester le checkout, commit et update.
  • Respecter les règles de verrouillage (locks) si utilisées.
  • Documenter les conventions de structure (trunk/branches/tags si applicable).

10. Mini‑méthodologie : déploiement rapide en 10 étapes

  1. Vérifier prérequis réseau et OS.
  2. Installer httpd, subversion, mod_dav_svn.
  3. Créer /data/svn et initialiser repo via svnadmin create.
  4. Chown vers apache:apache.
  5. Créer passwd via htpasswd et config authz.
  6. Créer /etc/httpd/conf.d/subversion.conf avec SVNPath.
  7. Redémarrer httpd.
  8. Tester checkout depuis client.
  9. Mettre en HTTPS et restreindre le firewall.
  10. Automatiser les backups et créer runbook de restauration.

11. Arbre de décision (Mermaid)

flowchart TD
A[Je dois partager un dépôt] --> B{Souhaitez-vous un dépôt centralisé?}
B -- Oui --> C[Choisir SVN]
B -- Non --> D[Choisir Git]
C --> E{Accès via HTTP requis?}
E -- Oui --> F[Apache + mod_dav_svn]
E -- Non --> G[svnserve]
F --> H{Authentification?}
H -- Fichiers locaux --> I[AuthUserFile + AuthzSVNAccessFile]
H -- LDAP/AD --> J[mod_authnz_ldap]
G --> K[Configurer svnserve.conf et lancer service]

12. Factbox — nombres et règles clés

  • Port HTTP : 80 (ou HTTPS 443 recommandé).
  • Port svnserve : 3690.
  • Emplacement utilisé dans ce tutoriel : /data/svn/repo1.
  • Fichier de contrôle des droits : authz.
  • Fichier des utilisateurs HTTP : passwd (format htpasswd).

13. Glossaire (une ligne chacun)

  • Dépôt (repository) : emplacement central qui stocke les révisions et la base de données SVN.
  • Checkout : récupérer une copie de travail depuis le dépôt.
  • Commit : envoyer des modifications locales vers le dépôt.
  • Authz : fichier définissant les autorisations par chemin et utilisateur.

14. Résumé et prochaines étapes

Nous avons installé un serveur SVN avec Apache, créé un dépôt, géré des utilisateurs et testé l’accès depuis Linux et Windows (TortoiseSVN). Pour aller plus loin :

  • Activer HTTPS et certs TLS.
  • Intégrer l’authentification centralisée (LDAP/AD).
  • Mettre en place sauvegardes automatiques et procédures de restauration testées.
  • Documenter la gouvernance des dépôts (naming conventions, retention, hooks).

Notes importantes :

  • Ne stockez pas de mots de passe en clair.
  • Testez les autorisations sur un environnement de test avant la production.

Félicitations — vous avez créé et testé votre premier serveur SVN opérationnel.

Auteur
Édition

Matériaux similaires

Réparer l’erreur « formater le disque » sur Windows
Dépannage Windows

Réparer l’erreur « formater le disque » sur Windows

Choisir un fournisseur SaaS fiable en 2024
SaaS

Choisir un fournisseur SaaS fiable en 2024

Google : désactiver les captures Recents sur Android
Vie privée

Google : désactiver les captures Recents sur Android

Clavier et souris PC depuis Android — guide rapide
Guides Techniques

Clavier et souris PC depuis Android — guide rapide

Sauvegarder vos conversations WhatsApp
Technologie

Sauvegarder vos conversations WhatsApp

Publier et voir des photos 360° sur Facebook
Réseaux sociaux

Publier et voir des photos 360° sur Facebook