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