ApacheSVN服務(wù)器安裝之專家指導(dǎo)
Subversion可以使用無(wú)限數(shù)量的網(wǎng)絡(luò)協(xié)議實(shí)現(xiàn),目前實(shí)踐中存在著兩種服務(wù)器,ApacheSVN服務(wù)器和SVNServer服務(wù)器,本文主要針對(duì)ApacheSVN服務(wù)器進(jìn)行講解,首先看一下ApacheSVN和SVNServer介紹。
SVNServer:svnserve是一個(gè)小的(也叫輕型的)、獨(dú)立服務(wù)器,使用自己定義的協(xié)議和客戶端。ApacheSVN:Apache是最流行的web服務(wù)器,通過(guò)使用mod_dav_svn模塊,Apache可以訪問(wèn)版本庫(kù),并且可以使客戶端使用HTTP的擴(kuò)展協(xié)議WebDAV/DeltaV進(jìn)行訪問(wèn)。通過(guò)Http協(xié)議訪問(wèn)版本庫(kù)是Subversion的亮點(diǎn)之一。ApacheSVN服務(wù)器具備了許多svnserve服務(wù)器沒(méi)有的特性,使用上更加靈活,但是有一點(diǎn)難于配置,靈活通常會(huì)帶來(lái)復(fù)雜性。由于Subversion需要版本化的控制,因此標(biāo)準(zhǔn)的Http協(xié)議不能滿足需求。要讓Apache與Subversion協(xié)同工作,需要使用WebDAV(Web-basedDistributedAuthoringandVersioning:)Web分布式創(chuàng)作和版本控制)。WebDAV是HTTP1.1的擴(kuò)展,關(guān)于WebDAV的規(guī)范和工作原理,可以參考IETFRFC2518。
一、必備條件
為了讓你的版本庫(kù)使用HTTP網(wǎng)絡(luò),你必需具備以下幾個(gè)條件:
配置好httpd2.2.x,并且使用mod_dav啟動(dòng)。
為mod_dav安裝mod_dav_svn插件。
配置你的httpd.conf,使http協(xié)議能訪問(wèn)版本庫(kù)。
下面以我的配置過(guò)程詳細(xì)講解。
環(huán)境:
OS:WindowsXPSP2
Web:Apache2.2.6
SVN:svn-win32-1.4.6
二、ApacheSVN服務(wù)器安裝
1、安裝Apache
具體安裝方法見(jiàn):《Windows下安裝Apache2.2.x》
2、安裝Subversion
將下載下來(lái)的svn-win32-1.4.6.zip直接解壓即可,比如我解壓到e:\subversion。
從Subversion安裝目錄的bin子目錄將intl3_svn.dll、libdb44.dll、mod_authz_svn.so、mod_dav_svn.so拷貝到Apache的模塊目錄(Apache安裝目錄的modules文件夾)。#p#
三、ApacheSVN服務(wù)器中基本的Apache配置
修改Apache的配置文件httpd.conf,使用LoadModule來(lái)加載mod_dav_svn模塊。將:#LoadModuledav_modulemodules/mod_dav.so改成:LoadModuledav_modulemodules/mod_dav.so即去掉前面的“#”號(hào)。
添加:LoadModuledav_svn_modulemodules/mod_dav_svn.so一定確定它在mod_dav之后。
現(xiàn)在你已經(jīng)設(shè)置了Apache和Subversion,但是Apache不知道如何處理Subversion客戶端,例如TortoiseSVN。為了讓Apache知道哪個(gè)目錄是用來(lái)作為Subversion版本庫(kù),你需要使用編輯器(例如記事本)編輯Apache的配置文件。
在配置文件最后添加如下幾行:
DAVsvn
SVNPathe:/svn/repos1
這個(gè)配置告訴Apache首先需要啟用dav_module,然后加載dav_svn_module。版本庫(kù)對(duì)外的URL是:http://服務(wù)器IP/repository/,所有的Subversion版本庫(kù)在物理上位于e:/svn/repos1/。
配置完畢后重新啟動(dòng)Apache,打開(kāi)瀏覽器,輸入http://服務(wù)器IP/repository/就會(huì)看到配置成功畫(huà)面。
這表示Apache的dav_svn模塊已經(jīng)可以正常工作了。用戶可以使用任何一種Subversion的客戶端通過(guò)Http協(xié)議訪問(wèn)你的版本庫(kù)。
如果想要指定多個(gè)版本庫(kù),可以用多個(gè)Location標(biāo)簽,也可以使用SVNParentPath代替SVNPath,例如在e:\svn下有多個(gè)版本庫(kù)repos1,repos2等等,用如下方式指定:
SVNParentPathe:/svn
“SVNParentPathe:/svn”表示e:\svn下的每個(gè)子目錄都是一個(gè)版本庫(kù)。可以通過(guò)http://服務(wù)器IP/repository/repos1/,http://服務(wù)器IP/repository/repos2/來(lái)訪問(wèn)。
現(xiàn)在你的版本庫(kù)任何人都可以訪問(wèn),并且有完全的寫(xiě)操作權(quán)限。也就是說(shuō)任何人都可以匿名讀取,修改,提交,以及刪除版本庫(kù)中的內(nèi)容(注:這時(shí)不需要配置E:\svn\repos\conf\svnserve.conf文件,并且也不需要啟動(dòng)E:\subversion\bin\svnserve.exe。因?yàn)樘峤皇峭ㄟ^(guò)Apache的dav模塊處理的,而不是由svnservice處理。)。我們用TortoiseSVN客戶端驗(yàn)證即知。
顯然大部分場(chǎng)合這是不符合需求的。那么如何進(jìn)行ApacheSVN服務(wù)器權(quán)限設(shè)置呢,Apache提供了基本的權(quán)限設(shè)置。
【編輯推薦】