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