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
Fermer selinux et pare-feu
Installer les modules svn et apache et mod_dav_svn
yum install httpd svn mod_dav_svn
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
3. La différence entre SVNParentPath et SVNPath
Baidu "la différence entre SVNParentPath et SVNPath" est fondamentalement la déclaration suivante sans exception
Trouvez mod_dav_mod sur le site chinois svn, vous pouvez voir la description officielle du site SVNParentPath et SVNPath
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
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
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