CentOS 7はsvn + apacheサーバーを構築し、SVNParentPathとSVNPathの違いについて説明します

1.はじめに

今日、リーダーはいくつかのドキュメントを保存するために一連のsvnサーバーを構築することを求めました。それは非常に単純なことだと思いましたが、主にSVNParentPathとSVNPathによって引き起こされる問題を理解していなかったため、プロセスはそれほどスムーズではありませんでした。それらの使用と違いを理解するため、ここに記録します。


2.centos 7ビルドsvn + Apacheサーバー

  1. selinuxとファイアウォールを閉じる

  2. svnとapacheおよびmod_dav_svnモジュールをインストールします

    yum install httpd svn mod_dav_svn

  3. svnとapacheのバージョンを確認して、インストールが成功したかどうかを確認します

[root @ chenxz-test1 conf.d]#svn --version 
svn、バージョン1.7.14(r1542130)
   2018年4月11日、02 :40:28にコンパイル済み
Copyright(C)2013 The Apache Software Foundation。
このソフトウェアは、多くの人々による貢献で構成されています。詳細については、NOTICE 
ファイルを参照してください。
Subversionはオープンソースソフトウェア
です
。http://subversion.apache.org/を参照してください。次のリポジトリアクセス(RA)モジュールを使用できます。* ra_neon:Neonを使用してWebDAVプロトコル経由でリポジトリにアクセスするためのモジュール。
  -ハンドル「のhttp」スキーム
  -ハンドル「HTTPS」スキーム
のsvnネットワークプロトコルを使ってリポジトリにアクセスするモジュール:* ra_svn。
  -Cyrus SASL認証を使用 
  -'svn'スキームを処理します
* ra_local:ローカルディスク上のリポジトリにアクセスするためのモジュール。
  -「ファイル」スキームを処理します
[root @ chenxz-test1 conf.d]#httpd -v 
サーバーのバージョン:Apache / 2.4.6(CentOS)
サーバーのビルド:2019年8月8日11:41:18

4.倉庫を作成する

ウェアハウスディレクトリの作成[root @ chenxz-test1〜]#mkdir -p / home / data / svn 
#svn 
ウェアハウスの作成[root @ chenxz-test1〜]#svnadmin create / home / data / svn / test

5. svnユーザーを作成する


#svn ユーザーとパスワードを作成[root @ chenxz-test1 conf.d]#htpasswd -c / home / data / svn / passwd chenxz 
新しいパスワード:  
新しいパスワードを再入力:  
ユーザーchenxzのパスワードを追加

6.ユーザー権利管理

    svnユーザー権限は、[groups]構成セクションといくつかのリポジトリパス権限セクションで構成されるauthzファイルによって制御されます

    [グループ]構成セグメントの形式:<ユーザーグループ> = <ユーザーリスト>

    ユーザーリストは複数のユーザーグループまたはユーザー名で構成されています。ユーザーグループまたはユーザー名はカンマ「、」で区切られ、ユーザーグループを参照するときはプレフィックス「@」を使用する必要があります

    リポジトリパス許可セグメントの形式:

     [<バージョンライブラリ名>:<パス>]たとえば、バージョンライブラリのバージョンライブラリパスの許可セクションのセクション名abcパス/ tmpは「[abc:/ tmp]」です。

     セクション名のリポジトリ名は省略できます。バージョンライブラリの名前を省略した場合、バージョンライブラリのパス許可セクションは、すべてのバージョンライブラリで同じパスのアクセス制御に有効です。例:[/ tmp]

リポジトリー・パスの許可セクションには、3つの構成行フォーマットがあります:
       <ユーザー名> = <許可>
       <ユーザー・グループ> = <許可>
        * = <許可>
    ここで、「*」は任意のユーザーを意味し、許可の範囲は次のとおりです。 ''、 'R'および 'rw'、 ''は、リポジトリパスへの権限がないことを意味し、 'r'は読み取り専用権限を意味し、 'rw'は読み取り/書き込み権限を意味します。

注:構成の各行は、単一のユーザーまたはユーザーグループのみを構成できます。

#authzファイルは各ウェアハウスのconfフォルダーに存在します。ここではユーザー権限を一元管理するため、ウェアハウスからウェアハウスの上位ディレクトリ
cp / home / data / svn / test / conf / authz / home /に認証ファイルをコピーしますdata / svn / 
authファイルの最後に次の設定を  追加
[/] chenxz = rw

7.構成ファイル/etc/httpd/conf.d/subversion.conf(変更されていない場合は新規)を変更します。内容は次のとおりです。

LoadModuleのdav_svn_moduleモジュール/ mod_dav_svn.so 
のLoadModule authz_svn_moduleモジュール/ mod_authz_svn.so 
<場所/ SVN> 
     DAVのsvn 
     SVNParentPathの/ホーム/データ/ SVN 
     のAuthType基本
     でAuthName "認可SVN" 
     AuthzSVNAccessFile /ホーム/データ/ SVN /のauthz 
     AuthUserFileは/ホーム/データ/ svn / passwd 
     有効なユーザーが必要です
</ Location>

8. SVNディレクトリへのApache権限を設定します

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

9. Apacheを起動します

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

10. httpを使用してアクセスし、ユーザー名とパスワードを入力して、バージョン番号を返して正常にビルドします

image.png


3. SVNParentPathとSVNPathの違い

Baidu "SVNParentPathとSVNPathの違い"は基本的に例外なく次のステートメントです

image.png

SVN中国語Webサイトでmod_dav_modを見つけます。SVNParentPathおよびSVNPathの公式Webサイトの説明を確認できます。

image.png

したがって、2つの違いは、SVNParentPathがウェアハウスの上位ディレクトリを指定し、その構成ディレクトリの下にあるすべてのウェアハウスを管理できることです。これの利点は、ユーザーの管理に必要なauthzファイルが1つだけであり、スーパー管理者アカウントが必要な場合、SVNParentPathの下のすべてのウェアハウスにログインし、authzファイルで[/]を構成してすべてのウェアハウスを表すことができます。SVNParentPathを使用すると、Apacheで場所を構成するだけで済みます。SVNPathは、管理のみ可能なウェアハウスディレクトリを指定しますウェアハウスには、より厳密な権限管理の利点があります。この場合、authzファイルで構成された[/]はウェアハウスのみを表すことができます。欠点は、追加のウェアハウスごとにApacheに場所を追加する必要があることです。2つの構成と対応するアクセス方法を以下に示します。

1. SVNParentPathを使用する場合のApache設定

Dav_svn_moduleモジュールのLoadModule / mod_dav_svn.so 
のLoadModule authz_svn_moduleモジュール/ mod_authz_svn.so 
倉庫の親ディレクトリの使用は#場所
の<Location / SVN> 
 DAVのsvn 
 #親ディレクトリ倉庫を指す
 SVNParentPathの/ホーム/データ/ SVN 
 のAuthType基本
 でAuthName "認可SVN" 
 AuthzSVNAccessFile / home / data / svn / authz 
 AuthUserFile / home / data / svn / passwd 
 有効なユーザーが必要
</場所>

アクセス方法http:// ip /倉庫の上位レベル/倉庫名はhttp://192.168.202.128/ svn / testの   ようになり  ます

2. SVNPathを使用する場合のApache設定

Dav_svn_moduleモジュールのLoadModule / mod_dav_svn.so 
のLoadModule authz_svn_moduleモジュール/ mod_authz_svn.so 
#場所どこ倉庫カタログの使用は
<場所/試験> 
 DAVのsvn 
 #指しリポジトリディレクトリ
 SVNPath /ホーム/データ/ SVN /テスト
 のAuthType基本
 でAuthName「認可SVN」
 #authzファイルもちろん、ウェアハウスの下のauthzをポイントしても、統合されたauthzをポイントしても問題はありませんが、そうすると、
 SVNPath AuthzSVNAccessFile / home / data / svn / test / conf / authz 
 AuthUserFile / home / data / svn / passwd 
 Require を使用する意味が失われますvalid-user 
</ Location> 
複数の倉庫には複数の場所が必要です<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 
 有効なユーザーが必要
</ Location>

アクセス方法http:// ip /    http://192.168.202.128/testなどのウェアハウス名


4.発生した問題

発生する問題はすべて、場所、SVNPath、およびSVNParentPathに続く不適切なディレクトリが原因で発生します。

LoadModuleのdav_svn_moduleモジュール/ mod_dav_svn.so 
のLoadModule authz_svn_moduleモジュール/ mod_authz_svn.so 
<場所/テスト> 
 DAVのsvn 
 SVNParentPathの/ホーム/データ/ SVN /テスト
 のAuthType基本
 でAuthName "認可SVN" 
 AuthzSVNAccessFile /ホーム/データ/ SVN /のauthz 
 AuthUserFileは/ホーム/ data / svn / passwd 
 有効なユーザーが必要です
</ Location>

次のエラーが表示されます

image.png

別の例として、私はこのように構成します

LoadModule dav_svn_module modules / mod_dav_svn.so 
LoadModule authz_svn_module modules / mod_authz_svn.so 
<Location / test> 
 DAV svn 
 SVNPath / home / data / svn 
 AuthType Basic 
 AuthName "Authorization SVN" 
 AuthzSVNAccessFile / home / data / svn / authzdata 
 / AuthUserFile / home svn / passwd 
 有効なユーザーが必要です
</ Location>

次のエラーが表示されます

image.png


参照:

1. CentOS7 + Apache + SVNのインストールと構成、およびHTTP経由のアクセス

2. SVN + apache中SVNParentPathとSVNPath

3. mod_dav_mod-SVN中国語ネットワーク





おすすめ

転載: blog.51cto.com/13009055/2487965