CentOS 7 construit un serveur svn + apache et discute de la différence entre SVNParentPath et SVNPath

1. Introduction

Aujourd'hui, le leader a demandé de construire un ensemble de serveur svn pour stocker certains documents. Je pensais que c'était une chose très simple, mais le processus n'était pas si fluide, principalement parce que je ne comprenais pas les problèmes causés par SVNParentPath et SVNPath. Après avoir recherché des documents et débogué Pour comprendre leur utilisation et leur différence, notez-les par la présente.


2.centos 7 build serveur svn + apache

  1. Fermer selinux et pare-feu

  2. Installer les modules svn et apache et mod_dav_svn

    yum install httpd svn mod_dav_svn

  3. Vérifiez les versions svn et apache pour déterminer la réussite de l'installation

[root @ chenxz-test1 conf.d] # svn --version 
svn, version 1.7.14 (r1542130) 
   compilé le 11 avril 2018, 02:40:28 
Copyright (C) 2013 The Apache Software Foundation. 
Ce logiciel se compose de contributions apportées par de nombreuses personnes; voir le 
fichier AVIS pour plus d'informations. 
Subversion est un logiciel open source, voir http://subversion.apache.org/ 
Les modules d'accès au référentiel (RA) suivants sont disponibles: 
* ra_neon: Module pour accéder à un référentiel via le protocole WebDAV en utilisant Neon. 
  - gère le schéma 'http' 
  - gère le schéma 'https' 
* ra_svn: Module pour accéder à un référentiel en utilisant le protocole réseau svn. 
  - avec authentification Cyrus SASL 
  - gère le schéma 'svn'
* ra_local: Module pour accéder à un référentiel sur le disque local. 
  - gère le schéma de "fichier" 
[root @ chenxz-test1 conf.d] # httpd -v 
Version du serveur: Apache / 2.4.6 (CentOS) Version du 
serveur: 8 août 2019 11:41:18

4. Créer un entrepôt


#Créer un répertoire d'entrepôt [root @ chenxz-test1 ~] # mkdir -p / home / data / svn 
#Créer un 
entrepôt svn [root @ chenxz-test1 ~] # svnadmin create / home / data / svn / test

5. Créer un utilisateur svn


#Créer un utilisateur et un mot de passe svn [root @ chenxz-test1 conf.d] # htpasswd -c / home / data / svn / passwd chenxz 
Nouveau mot de passe: Retapez le nouveau mot de  
passe:  
Ajout d'un mot de passe pour l'utilisateur chenxz

6. Gestion des droits des utilisateurs

    Les autorisations utilisateur svn sont contrôlées par le fichier authz, qui se compose de la section de configuration [groups] et de plusieurs sections d'autorisation de chemin du référentiel

    [groupes] Format du segment de configuration: <groupe d'utilisateurs> = <liste d'utilisateurs>

    La liste d'utilisateurs est composée de plusieurs groupes d'utilisateurs ou noms d'utilisateurs. Les groupes d'utilisateurs ou les noms d'utilisateurs sont séparés par des virgules "," et le préfixe "@" doit être utilisé lors du référencement des groupes d'utilisateurs.

    Format de segment d'autorisation du chemin du référentiel:

     [<Nom de la bibliothèque de versions>: <chemin>] Par exemple, le nom de la section d'autorisation du chemin de bibliothèque de versions de la bibliothèque de versions abc path / tmp est "[abc: / tmp]".

     Le nom du référentiel dans le nom de la section peut être omis. Si le nom de la bibliothèque de versions est omis, la section d'autorisation de chemin d'accès de la bibliothèque de versions est efficace pour le contrôle d'accès du même chemin d'accès dans toutes les bibliothèques de versions. Tels que: [/ tmp]

Il existe trois formats de ligne de configuration dans la section des autorisations du chemin du référentiel:
       <nom d'utilisateur> = <autorisation>
       <groupe d'utilisateurs> = <autorisation>
        * = <autorisation>
    où "*" signifie tout utilisateur; la plage d'autorisations est '', 'R' et 'rw', '' signifie qu'il n'y a pas d'autorisation sur le chemin du référentiel, 'r' signifie une autorisation en lecture seule et 'rw' signifie une autorisation en lecture-écriture.

Remarque: Chaque ligne de configuration ne peut configurer qu'un seul utilisateur ou groupe d'utilisateurs.

Le fichier #authz existe dans le dossier conf de chaque entrepôt. Pour gérer les autorisations utilisateur de manière uniforme, copiez le fichier d'autorisation de l'entrepôt dans le répertoire supérieur de l'entrepôt, 
cp / home / data / svn / test / conf / authz / home / data / svn / 
#Ajouter la 
configuration suivante à la fin du fichier d'authentification  
[/] chenxz = rw

7. Modifiez le fichier de configuration /etc/httpd/conf.d/subversion.conf (nouveau sinon), le contenu est:

LoadModule dav_svn_module modules / mod_dav_svn.so 
LoadModule authz_svn_module modules / mod_authz_svn.so 
<Location / svn> 
     DAV svn 
     SVNParentPath / home / data / svn 
     AuthType Basic 
     AuthName "Autorisation SVN" 
     AuthzSVNAccessFile / home / data / svn / authz 
     AuthUserFile / home / data / svn / passwd 
     Exiger un utilisateur valide 
</Location>

8. Configurer les autorisations Apache sur le répertoire SVN

[root @ chenxz-test1 ~] # chown apache.apache / home / data / svn / -R

9. Démarrez apache

[root @ chenxz-test1 conf.d] # systemctl start httpd

10. Utilisez http pour accéder, entrez le nom d'utilisateur et le mot de passe et renvoyez le numéro de version pour réussir la construction

image.png


3. La différence entre SVNParentPath et SVNPath

Baidu "la différence entre SVNParentPath et SVNPath" est fondamentalement la déclaration suivante sans exception

image.png

Trouvez mod_dav_mod sur le site chinois svn, vous pouvez voir la description officielle du site SVNParentPath et SVNPath

image.png

Ainsi, la différence entre les deux est que SVNParentPath spécifie le répertoire supérieur de l'entrepôt et peut gérer tous les entrepôts sous son répertoire de configuration. L'avantage de ceci est qu'un seul fichier authz est nécessaire pour gérer les utilisateurs, et si vous avez besoin d'un compte super administrateur , Vous pouvez vous connecter à tous les entrepôts sous SVNParentPath, puis configurer [/] dans le fichier authz pour représenter tous les entrepôts, et utiliser SVNParentPath ne nécessite que de configurer un emplacement dans apache; SVNPath spécifie un répertoire d'entrepôt, qui ne peut être géré que Un entrepôt présente l'avantage d'une gestion plus stricte des autorisations. Dans ce cas, le [/] configuré dans le fichier authz ne peut représenter que l'entrepôt. L'inconvénient est que chaque entrepôt supplémentaire doit ajouter un emplacement dans apache. Deux configurations et méthodes d'accès correspondantes seront données ci-dessous.

1. Configuration d'Apache lors de l'utilisation de SVNParentPath

Dav_svn_module LoadModule / mod_dav_svn.so 
LoadModule authz_svn_module modules / mod_authz_svn.so 
emplacement # où l'utilisation d'entrepôts répertoire parent 
<lieu / svn> 
 DAV svn 
 # pointant vers l'entrepôt répertoire parent 
 SVNParentPath / Accueil / Données / svn 
 AuthType Basic 
 AuthName "l'autorisation SVN" 
 AuthzSVNAccessFile / home / data / svn / authz 
 AuthUserFile / home / data / svn / passwd 
 Requiert valid-user 
</ Location>

Méthode d'accès http: // ip / Le niveau supérieur de l'entrepôt / Le nom de l'entrepôt est    comme  http://192.168.202.128/ svn / test

2. Configuration d'Apache lors de l'utilisation de SVNPath

Dav_svn_module LoadModule / mod_dav_svn.so 
LoadModule authz_svn_module modules / mod_authz_svn.so 
emplacement # où l'utilisation du catalogue d'entrepôt 
<l'emplacement / Test> 
 DAV svn 
 # pointant vers le répertoire référentiel 
 SVNPath / Accueil / Données / svn / Test 
 AuthType Basic 
 AuthName "SVN Autorisation" 
 fichier #authz Pointant vers l'authz sous l'entrepôt, bien sûr, pointer vers un authz unifié ne se passera pas mal, mais cela perdra le sens d'utiliser SVNPath 
 AuthzSVNAccessFile / home / data / svn / test / conf / authz 
 AuthUserFile / home / data / svn / passwd 
 Require valid-user 
</ Location> 
#Plusieurs 
entrepôts nécessitent plusieurs emplacements <Location / mytest> 
 DAV svn 
 SVNPath / home / data / svn / mytest 
 AuthType Basic 
 AuthName "Authorization SVN"
 AuthzSVNAccessFile / home / data / svn / mytest / conf / authz
 AuthUserFile / home / data / svn / passwd
 Exiger un utilisateur valide 
</Location>

Méthode d'accès http: // nom ip / entrepôt    tel que http://192.168.202.128/test


4. Problèmes rencontrés

Les problèmes qui surviennent sont tous causés par des répertoires incorrects après l'emplacement, SVNPath et SVNParentPath. Par exemple, j'ai configuré comme suit

LoadModule dav_svn_module modules / mod_dav_svn.so 
LoadModule authz_svn_module modules / mod_authz_svn.so 
</ test> 
 DAV svn 
 SVNParentPath / home / data / svn / test 
 AuthType Basic 
 AuthName "Autorisation SVN" 
 AuthzSVNAccessFile / home / data / svn / authz 
 AuthUserFile / home / data / svn / passwd 
 Requiert un utilisateur valide 
</Location>

L'erreur suivante apparaîtra

image.png

Pour un autre exemple, je configure comme ça

LoadModule dav_svn_module modules / mod_dav_svn.so 
LoadModule authz_svn_module modules / mod_authz_svn.so 
</ test> 
 DAV svn 
 SVNPath / home / data / svn 
 AuthType Basic 
 AuthName "Autorisation SVN" 
 AuthzSVNAccessFile / home / data / svn / authz 
 AuthUserFile / home / data / svn / passwd 
 Exiger un utilisateur valide 
</Location>

L'erreur suivante apparaîtra

image.png


Référence:

1. Installation et configuration de CentOS7 + Apache + SVN et accès via HTTP

2. SVN + apache 中 SVNParentPath 与 SVNPath

3. Réseau chinois mod_dav_mod-SVN





Je suppose que tu aimes

Origine blog.51cto.com/13009055/2487965
conseillé
Classement