GNU/Linux >> Tutoriels Linux >  >> Cent OS

Comment configurer un serveur SVN sur CentOS

Ce tutoriel explique comment configurer et utiliser un serveur de référentiel SVN sur CentOS. Avant de commencer, laissez-moi vous expliquer ce que SVN représente réellement et à quoi il sert. SVN est en fait une abréviation de SubVersion qui a été créée par le développeur du logiciel Apache. Il vous permet de créer et de gérer votre propre référentiel et donne des droits d'accès précis à un utilisateur dédié.

Il est très efficace pour contrôler le versioning des fichiers, documents ou dossiers. Il est très utile pour tout groupe ou équipe qui a l'intention de démarrer ses propres projets logiciels.

1. Remarque préliminaire

Pour ce tutoriel, j'utilise CentOS 6.4 dans la version 32 bits. Le résultat final vous montrera comment un client dédié peut accéder au référentiel SVN à l'aide de n'importe quel type de plate-forme de système d'exploitation.


2. Installation SVN

Pour commencer avec un nouveau serveur SVN, nous devons installer certains packages. Les packages associés sont apache httpd, mod_dav_svn et subversion. Le package HTTPD est nécessaire en tant que service de serveur Web pour ce processus.

Comme ce didacticiel utilise le système d'exploitation CentOS, nous prendrons les packages du référentiel yum. Vous pouvez utiliser d'autres packages comme nginx, lighttpd ou tout autre service de serveur Web familier pour remplacer httpd si vous le souhaitez. Voici les étapes :

ifconfig
[[email protected] ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 08:00:27:61:E4:88
inet addr:192.168.43.101 Bcast:192.168.43.255 Masque :255.255.255.0
inet6 addr :fe80::a00:27ff:fe61:e488/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU :1500 Metric:1
RX packets:4640 errors:0 abandonné :0 dépassements :0 trame :0
paquets TX :6845 erreurs :0 abandonnés :0 dépassements :0 porteuse :0
collisions :0 txqueuelen :1000
octets RX :444461 (434,0 Kio ) Octets TX :549 473 (536,5 Kio)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr:::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric :1
Paquets RX :2125 erreurs :0 abandonnés :0 dépassements :0 trame :0
Paquets TX :2125 erreurs :0 abandonnés :0 dépassements :0 porteuse :0
collisions :0 txqueuelen :0
Octets de réception :186 888 (182,5 Kio) Octets de transmission :186888 (182,5 Ko)
yum install -y httpd
[[email protected] ~]# yum install -y httpd
Plugins chargés :refresh-packagekit, security
Le référentiel 'OEL64' n'a pas de nom dans la configuration, en utilisant l'id
Configuration Processus d'installation
Résolution des dépendances
--> Exécution de la vérification des transactions
---> Le package httpd.i686 0:2.2.15-26.0.1.el6 sera installé
--> Résolution des dépendances terminée
Dépendances résolues
============================================================================================================
Taille du référentiel de la version de Package Arch
===========================================================================================================
Installation :
httpd i686 2.2. 15-26.0.1.el6 OEL64 825k
Récapitulatif des transactions
============================================================================================================
Installer 1 paquet(s)
Taille totale de téléchargement :825 Ko
Taille installée :2,8 M
Téléchargement des packages :
Exécution de rpm_check_debug
Test de transaction en cours d'exécution
Test de transaction réussi
En cours d'exécution Transaction
Installation :httpd-2.2.15-26.0.1.el6.i686 1/1
Vérification :httpd-2.2.15-26.0.1.el6.i686 1/1
Installé :
httpd.i686 0:2.2.15-26.0.1.el6
Terminé !
yum install -y subversion
[[email protected] ~]# yum install -y subversion
Plug-ins chargés :refresh-packagekit, security
Le référentiel 'OEL64' n'a pas de nom dans la configuration, en utilisant l'id
Configuration Processus d'installation
Résolution des dépendances
--> Exécution de la vérification des transactions
---> Le package subversion.i686 0:1.6.11-7.el6 sera installé
--> Terminé Résolution de dépendance
Dépendances résolues
============================================================================================================
Taille du référentiel de la version de Package Arch
============================================================================================================
Installation :
subversion i686 1.6. 11-7.el6 OEL64 2,2 M
Récapitulatif des transactions
============================================================================================================
Installer 1 paquet(s)
Taille totale de téléchargement :2,2 M
Taille installée :11 M
Téléchargement des packages :
Exécution de rpm_check_debug
Test de transaction en cours d'exécution
Test de transaction réussi
En cours d'exécution Transaction
Installation :subversion-1.6.11-7.el6.i686 1/1
Vérification :subversion-1.6.11-7.el6.i686 1/1
Installé :
subversion.i686 0:1.6.11-7.el6
Terminé !
yum install -y mod_dav_svn
[[email protected] ~]# yum install -y mod_dav_svn
Plugins chargés :refresh-packagekit, security
Le référentiel 'OEL64' n'a pas de nom dans la configuration, en utilisant l'id
Configuration Processus d'installation
Résolution des dépendances
--> Exécution de la vérification des transactions
---> Le package mod_dav_svn.i686 0:1.6.11-7.el6 sera installé
--> Terminé Résolution de dépendance
Dépendances résolues
============================================================================================================
Taille du référentiel de la version de Package Arch
============================================================================================================
Installation :
mod_dav_svn i686 1.6. 11-7.el6 OEL64 79k
Récapitulatif des transactions
============================================================================================================
Installer 1 paquet(s)
Taille totale de téléchargement :79 Ko
Taille installée :161 Ko
Téléchargement de packages :
Exécution de rpm_check_debug
Test de transaction en cours d'exécution
Test de transaction réussi
En cours d'exécution Transaction
Installation :mod_dav_svn-1.6.11-7.el6.i686 1/1
Vérification :mod_dav_svn-1.6.11-7.el6.i686 1/1
Installé :
mod_dav_svn.i686 0:1.6.11-7.el6
Terminé !


3. Configuration SVN

Super, maintenant la partie installation est terminée. Ensuite, nous allons avancer sur la partie configuration. Commençons par créer un répertoire dédié à l'utilisation du référentiel SVN. Il s'agit d'un processus facultatif, mais c'est une bonne pratique lors de la mise en œuvre pour un groupe à plus grande échelle. Voici les étapes :

mkdir /data/svn

Nous allons maintenant créer notre premier répertoire de référentiel, je le nommerai repo1 . Comme un client pourra accéder ultérieurement au référentiel via un navigateur ou des outils client SVN, nous accorderons la propriété du répertoire à apache car il est le propriétaire du service de serveur Web. Voici les étapes :

svnadmin create /data/svn/repo1
chown -R apache:apache /data/svn/repo1

Une fois cela fait, vous remarquerez que plusieurs dossiers et fichiers associés seront créés par défaut dans notre nouveau répertoire de référentiel.

cd /data/svn/repo1
ls
[[email protected] repo1]# ls
conf format db hooks locks README.txt


Maintenant, nous modifions le fichier de configuration pour répondre à nos exigences. Tout d'abord, nous allons éditer le fichier de configuration svnserver.conf pour accepter les privilèges associés que nous attribuerons à l'utilisateur autorisé. Voici les étapes :

cd conf/
ls
[[email protected] conf]# ls
authz passwd svnserve.conf
vi svnserve.conf
[général]
anon-access =none
auth-access =write
password-db =passwd
authz-db =authz

Créez ensuite un nouveau fichier nommé passwd qui contiendra une liste d'utilisateurs pour le dépôt SVN. Voici les étapes :

htpasswd -c /data/svn/repo1/conf/passwd jay
[[email protected] conf]# htpasswd -c /data/svn/repo1/conf/passwd jay
Nouveau mot de passe :
Retaper le nouveau mot de passe :
Ajout du mot de passe pour l'utilisateur geai
[[email protected] conf]# chat passwd
jay:14hCNCmBZY/qA

Terminé, nous avons créé avec succès un utilisateur pour l'utilisation du référentiel SVN. Créons 2 autres utilisateurs pour accéder au référentiel SVN. Voici les étapes :

htpasswd /data/svn/repo1/conf/passwd fikri
[[email protected] conf]# htpasswd /data/svn/repo1/conf/passwd fikri
Nouveau mot de passe :
Retaper le nouveau mot de passe :
Ajout du mot de passe pour l'utilisateur fikri
htpasswd /data/svn/repo1/conf/passwd farid
[[email protected] conf]# htpasswd /data/svn/repo1/conf/passwd farid
Nouveau mot de passe :
Retaper le nouveau mot de passe :
Ajout du mot de passe pour l'utilisateur farid
[[email protected] conf]# cat passwd
jay:14hCNCmBZY/qA
fikri:/hlooqJMfYLkw
farid:P7Zvu6B3HyFGo


Terminé, il y a maintenant 3 utilisateurs répertoriés pour l'utilisation du référentiel SVN. Pour cette pratique, je voudrais montrer comment nous pouvons limiter les privilèges d'un utilisateur. Attribuons le privilège d'accéder au référentiel repo1. Pour ce faire, nous devons éditer le fichier de configuration authz. Voici les étapes :

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

Sur la base de la configuration ci-dessus, nous avons défini différents privilèges pour les 3 utilisateurs que nous avons créés précédemment. Nous avons attribué à l'utilisateur FARID les privilèges READ ONLY, FIKRI aux privilèges READ WRITE et JAY ou autres à ne pas avoir de privilèges. Cela signifie que plus tard dans les tests, je vous montrerai que l'utilisateur JAY ne pourra voir aucun fichier dans le référentiel repo1.

Modifions maintenant le fichier de configuration du service HTTPD.

vi /etc/httpd/conf/httpd.conf

Vérifiez que la ligne suivante existe pour inclure des fichiers de configuration externes dans le fichier httpd.conf. S'il n'existe pas, ajoutez-le à la fin du fichier.

[.....]
Inclure conf.d/*.conf
[.....]

Ensuite, nous allons dans le répertoire conf.d pour apporter quelques modifications aux fichiers de configuration associés. Vous remarquerez qu'il existe déjà un fichier subversion.conf. Modifiez le fichier afin de rendre le référentiel disponible pour être visualisé dans le navigateur. Ci-dessous les étapes :-

cd /etc/httpd/conf.d/
ls
[[email protected] conf.d]# ls
mod_dnssd.conf LISEZMOI subversion.conf welcome.conf
vi subversion.conf
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 "Mon référentiel"
AuthzSVNAccessFile /data/svn/repo1/conf/authz
AuthUserFile /data/svn/repo1/conf/passwd
Exiger un utilisateur valide

Les deux premières lignes chargent le module apache SVN, les lignes suivantes définissent que l'URL /repo1 pointe vers notre référentiel créé.

Nous définissons également que des utilisateurs spécifiques disposent de privilèges de lecture/écriture sur des éléments spécifiques du référentiel à l'aide de AuthzSVNAccessFile. La liste des utilisateurs sera extraite du fichier /data/svn/repo1/conf/passwd.

Redémarrez maintenant le serveur HTTPD afin de charger les changements de configuration effectués.

redémarrage du service httpd
[[email protected] conf.d]# service httpd restart
Arrêt de httpd :[ OK ]
Démarrage de httpd :[ OK ]


4. Phase de test SVN

Vérifions si la configuration que nous avons faite répond à l'objectif ou non. Pour la phase de test, j'utiliserai 2 machines clientes différentes. J'utiliserai Microsoft Windows et un ordinateur de bureau Linux CentOS 6.4.

Je vais d'abord accéder à la machine Linux CentOS 6.4 et extraire le référentiel dans le système local. En tant que client Linux, nous devons installer le package subversion pour nous connecter au référentiel SVN.

yum install -y subversion 
[[email protected] ~]# yum install -y subversion 
Plug-ins chargés :refresh-packagekit, security
Le référentiel 'OEL64' n'a pas de nom dans la configuration, en utilisant l'id
Configuration Processus d'installation
Résolution des dépendances
--> Exécution de la vérification des transactions
---> Le package subversion.i686 0:1.6.11-7.el6 sera installé
--> Terminé Résolution de dépendance
Dépendances résolues
============================================================================================================
Taille du référentiel de la version de Package Arch
============================================================================================================
Installation :
subversion i686 1.6. 11-7.el6 OEL64 2,2 M
Récapitulatif des transactions
============================================================================================================
Installer 1 paquet(s)
Taille totale de téléchargement :2,2 M
Taille installée :11 M
Packages de téléchargement :
--------------------- -------------------------------------------------- ---------------------------------------
Total 70 Mo/s | 2.2 Mo 00:00
Exécution de rpm_check_debug
Test de transaction en cours
Test de transaction réussi
Transaction en cours
Installation :subversion-1.6.11-7.el6.i686 1/ 2
Vérification :subversion-1.6.11-7.el6.i686 2/2
Installé :
subversion.i686 0:1.6.11-7.el6
Terminé !

mkdir repo_client
svn co http://192.168.43.101/repo1 repo_client
[[email protected] ~]# mkdir repo_client
[[email protected] ~]# svn co http://192.168.43.101/repo1 repo_client
Domaine d'authentification : Mon référentiel
Mot de passe pour 'fikri' :
------------------------------------------------------------ ------------------------
ATTENTION ! Votre mot de passe pour le domaine d'authentification :
 Mon référentiel
 ne peut être stocké que sur un disque non chiffré ! Il vous est conseillé de configurer
votre système afin que Subversion puisse stocker les mots de passe cryptés, si
possible. Voir la documentation pour plus de détails.
Vous pouvez éviter de futures apparitions de cet avertissement en définissant la valeur
de l'option 'store-plaintext-passwords' sur 'yes' ou 'no' dans
'/root/.subversion/ serveurs'.
------------------------------------------------------- ----------------------------
Mémoriser le mot de passe non crypté (oui/non) ? oui
Révision 0 extraite.
[[email protected] ~]# cd repo_client/
[[email protected] repo_client]# ls -a
. .. .svn

Excellent! Nous avons réussi à extraire le référentiel de notre serveur SVN en utilisant l'utilisateur fikri. Maintenant, pour vérifier si cet utilisateur dispose des privilèges READ et WRITE, nous allons créer un dossier dans le répertoire du référentiel.

cd repo_client/
svn mkdir first_dir

Puis validez la modification dans le référentiel :

svn commit -m "Mon premier dossier"

Vous verrez ceci :

Révision 1 validée.

Ce qui signifie que notre validation a réussi.


Excellent travail ! Nous avons réussi à créer un dossier dans le répertoire du référentiel et à le commiter.

Testons maintenant cela sur une machine Microsoft Windows. Parcourez l'URL du référentiel via le navigateur firefox. Vous pouvez utiliser n'importe lequel de vos navigateurs préférés pour le tester. Une fois l'URL http://192.168.43.101/repo1 saisie dans le champ du navigateur, une fenêtre d'autorisation comme celle-ci apparaîtra :

Connectez-vous avec l'utilisateur JAY. Je suppose que cet utilisateur ne pourra pas accéder à la page car il n'est pas membre du groupe privilégié.

Bien, faisons maintenant un dernier test pour ce tutoriel. Utilisons la machine Microsoft Windows comme client SVN. Pour ce faire, nous devons installer un logiciel client SVN, dans ce cas, j'utiliserai TortoiseSVN . Vous pouvez le télécharger ici ou utiliser l'un de vos clients SVN habituels.

Une fois installé, créez un nouveau dossier sur votre machine Windows et nommez-le testSVN.


Ensuite, faites un clic droit sur le dossier, vous remarquerez qu'il existe maintenant des liens pour SVN CheckOut (si vous ne voyez pas les liens, redémarrez Windows). Cliquez sur "SVN Checkout" pour continuer.

Une fois cliqué, une fenêtre contextuelle s'affichera comme celle ci-dessous. Entrez le référentiel du serveur SVN sous le champ URL puis cliquez sur OK.

Une boîte contextuelle s'affiche qui vous demande de saisir un nom d'utilisateur et un mot de passe pour l'authentification. Dans ce cas, nous utiliserons l'utilisateur FARID pour continuer.

Une fois cela fait, une boîte contextuelle indiquera que la vérification du référentiel SVN est terminée. À partir de là, nous pouvons conclure que l'utilisateur FARID a le privilège de LIRE à partir du référentiel.

Vous remarquerez que le dossier créé précédemment à partir de l'utilisateur FIKRI existe dans votre répertoire testSVN.

Pour finir le test. Testons que l'utilisateur FARID doit avoir un accès en LECTURE SEULE. Pour ce faire, allons dans le dossier FIRST_DIR et créons un autre dossier, je l'appelle SECOND_DIR

Une fois créé, faites un clic droit sur le dossier et survolez TortoiseSVN, vous verrez qu'il y a plusieurs choix qui y sont répertoriés. Pour continuer, cliquez sur Ajouter bouton. Ce bouton ajoutera le dossier que nous avons créé au référentiel svn local.

Une boîte de dialogue comme celle ci-dessous apparaîtra, cliquez sur OK pour continuer.

Une fois cela fait, un message contextuel comme ci-dessous s'affichera. Vous avez maintenant créé avec succès un dossier dans votre référentiel client.

Même si le dossier a été créé et ajouté avec succès localement, il n'est pas encore synchronisé avec le serveur SVN. Par conséquent, les autres utilisateurs d'autres machines ne pourront pas voir le dossier que nous venons de créer. Enregistrez et validez le dossier maintenant. Pour ce faire, faites un clic droit sur le dossier et cliquez sur SVN Commit selon la capture d'écran ci-dessous.


Une boîte de dialogue comme ci-dessous s'affichera pour vous demander de confirmer plusieurs détails. Tapez un commentaire facultatif, puis cliquez sur OK pour continuer.

Une boîte d'autorisation apparaîtra pour demander un nom d'utilisateur de connexion. Tapez en tant qu'utilisateur FARID et continuez.

Une fois cela fait, vous verrez une erreur indiquant qu'il vous est interdit de faire les changements. C'est ce à quoi nous nous attendions car l'utilisateur farid n'a que des privilèges en lecture seule.

Toutes nos félicitations! Nous avons maintenant configuré notre premier serveur SVN et configuré avec succès les privilèges appropriés sur certaines limitations d'utilisateurs.


Cent OS
  1. Comment configurer un serveur SFTP sur CentOS

  2. Comment configurer le serveur SysLog sur CentOS 7 / RHEL 7

  3. Comment configurer le serveur NFS sur CentOS 7 / RHEL 7

  4. Comment configurer le serveur SVN sur CentOS, RHEL et Fedora

  5. Comment configurer un serveur proxy squid sur CentOS/RHEL 7

Comment configurer le serveur d'impression Samba sur CentOS

Comment configurer le serveur de messagerie Zimbra sur CentOS 7

Comment configurer un serveur de sauvegarde centralisé avec Amanda sur CentOS 7

Comment configurer le serveur SysLog centralisé sur CentOS 8 / RHEL 8

Comment initialiser la configuration du serveur CentOS 7

Comment configurer HAProxy sur CentOS 8