1.はじめに
今日、リーダーはいくつかのドキュメントを保存するために一連のsvnサーバーを構築することを求めました。それは非常に単純なことだと思いましたが、主にSVNParentPathとSVNPathによって引き起こされる問題を理解していなかったため、プロセスはそれほどスムーズではありませんでした。それらの使用と違いを理解するため、ここに記録します。
2.centos 7ビルドsvn + Apacheサーバー
selinuxとファイアウォールを閉じる
svnとapacheおよびmod_dav_svnモジュールをインストールします
yum install httpd svn mod_dav_svn
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を使用してアクセスし、ユーザー名とパスワードを入力して、バージョン番号を返して正常にビルドします
3. SVNParentPathとSVNPathの違い
Baidu "SVNParentPathとSVNPathの違い"は基本的に例外なく次のステートメントです
SVN中国語Webサイトでmod_dav_modを見つけます。SVNParentPathおよびSVNPathの公式Webサイトの説明を確認できます。
したがって、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>
次のエラーが表示されます
別の例として、私はこのように構成します
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>
次のエラーが表示されます
参照:
1. CentOS7 + Apache + SVNのインストールと構成、およびHTTP経由のアクセス
2. SVN + apache中SVNParentPathとSVNPath