使用mod_dav_svn模塊訪問SVN倉庫方法揭秘
本節向大家簡單介紹一下使用mod_dav_svn訪問SVN倉庫的方法,主要有四個步驟,和大家一起學習一下,希望本節使用mod_dav_svn訪問SVN倉庫方法介紹對你的學習與所幫助。
在前面的日志中,講述了如何使用Subversion提供的svnserve服務,通過svn://協議訪問遠端的倉庫數據。實際上,Subversion的設計包括了一個抽象的網絡層,這意味著版本庫是可以通過各種服務器進程訪問的。理論上來會說,Subversion可以使用無限數量的網絡協議來實現,甚至可以直接用perl利用相關的接口來編寫自定義協議。但日常中,用得最多的就是svn://協議,和用mod_dav_svn模塊通過Apache服務進行訪問SVN倉庫。
通過HTTP協議訪問版本庫是Subversion的亮點之一,這種方式具備許多svnserve服務器所沒有的特性,使用上更加靈活。
一、關于mod_dav_svn模塊
在介紹使用mod_dav_svn訪問SVN倉庫之前首先介紹一下mod_dav_svn模塊。由于Subversion需要版本化的控制,因此標準的HTTP協議不能滿足需求。要讓Apache與Subversion協同工作,就要使用WebDAV(Web-basedDistributedAuthoringandVersiong)Web分布式創作和版本控制協議。WebDAV是HTTP1.1的擴展,關于WebDAV的規范和工作原理,可以參考IETFRFC2518。
mod_dav_san模塊就是作為Subversion與Apache之間的接口,通過它,Apache就可以訪問版本庫,并且可以讓客戶端也使用HTTP的擴展協議WebDAV/DeltaV進行訪問。
二、安裝和配置
1、準備
與單純的svnserve不同,要通過Apache訪問Subversion,除了必須已經部署好Apache和Subversion的基本環境外,當然不可缺少的是mod_dav_svn模塊了:
引用
#rpm-qa|grepsvn
mod_dav_svn-1.4.2-2.1AX
2、創建版本倉庫
這與以前的工作是基本相同的,不同點在于,需要讓運行Apache的用戶擁有該倉庫的所有權:
#mkdir/var/www/svn
#cd/var/www/svn/
#svnadmincreatestuff
#chown-Rapache.apachestuff/這樣,就創建了一個stuff倉庫,并讓apache稱為該倉庫宿主。
3、修改Apache配置
mod_dav_svn訪問SVN倉庫時需要修改Apache配置,需要先激活Apache加載mod_dav_svn模塊。
修改/etc/httpd/conf.d/subversion.conf配置文件的內容為:
#加載相應的模塊
引用
LoadModuledav_svn_modulemodules/mod_dav_svn.so
LoadModuleauthz_svn_modulemodules/mod_authz_svn.so
<Location/repos>
DAVsvn
SVNPath/var/www/svn/stuff
</Location>
重新啟動httpd服務后,通過瀏覽器訪問http://ip/repos,即可看到如下界面:
4、加入認證信息
mod_dav_svn訪問SVN倉庫要加入認證信息。上面定義的版本倉庫,默認是任何人都可以匿名訪問,并且擁有完全的寫入、讀取、修改、提交、刪除版本庫中信息的權限。
因此,我們需要加入認證信息以做權限的管理。HTTP協議版本就提供了簡單的客戶端認證方式,這可通過Apache配置完成。Apache提供了一個htpasswd工具來管理,使用該工具可以創建一個文件,其中存放著用戶名和加密后的密碼信息。而這些就是Subversion可以引用的用戶了,根據這些用戶信息,配合mod_authz_svn模塊即可進行目錄的訪問控制。
a、創建存放用戶名信息的文件
用htpasswd命令創建文件:
引用
#mkdir/etc/svn
#htpasswd-c/etc/svn/svnusers.conflinuxing
Newpassword:
Re-typenewpassword:
Addingpasswordforuserlinuxing
還可以利用htpasswd添加用戶,或修改密碼,刪除用戶名等:
#htpasswd-m/etc/svn/svnusers.confNewUserName
#htpasswd-m/etc/svn/svnusers.confOldUserName
#htpasswd-D/etc/svn/svnusers.confOldUserName
-m是可選的參數,當用-c創建用戶名信息文件后,即可修改或添加用戶信息。
b、修改/etc/httpd/conf.d/subversion.conf配置文件
在配置文件的Location標簽部分,加入:
引用
#除了下面的動作需要認證外,其他動作不需驗證
<LimitExceptGETPROPFINDOPTIONSREPORT>
AuthTypeBasic#使用基本認證方式,即用戶名、密碼認證
AuthName"AuthorizationRealm"#在認證對話框中出現的提示信息
AuthUserFile/etc/svn/svnusers.conf#指定上面創建好的存放用戶名信息的文件路徑
Requirevalid-user#限定只有用戶輸入正確的用戶名和密碼后才能訪問該標簽所指向的路徑
</LimitExcept>
該標簽定義了,當進行除了指定的若干動作需要進行用戶名和密碼的認證后才能進行外,其他的動作是不做限制的。例如:只有認證用戶可以寫操作,同時也允許匿名的讀取操作。
也可以使用<Limit>標簽對特定的動作進行認證控制,甚至完全不用<Limit>或<LimitExcept>標簽,表示對所有的動作進行控制。此外,定義“Requirelinuxinghanry”的寫法,可實現將只有用戶信息文件中特定的linuxing和hanry用戶才能通過認證。
重啟httpd服務后,可使用瀏覽器或svn客戶端對該認證工作進行驗證。請期待下節有關使用mod_dav_svn訪問SVN倉庫內容介紹。
【編輯推薦】