SVN最常見的配置模式便是與Apache集成,這樣SVN可以采用WebDev協(xié)議方式提供服務(wù)。主要的好處有:通過Apache以HTTP方式穿透防火墻,便于在互聯(lián)網(wǎng)環(huán)境使用;提供目錄的版本控制;純2進(jìn)制的文件對比方式等。下面將介紹如何將SVN集成在Apache上。
- 準(zhǔn)備工作:
- 下載軟件:
- SVN服務(wù)器端程序。到官方網(wǎng)站 的下載二進(jìn)制安裝文件,來到二進(jìn)制包下載部分 ,找到 Windows NT, 2000, XP and 2003部分,然后選擇"this directory",這樣我們可以看到許多下載的內(nèi)容,目前可以下載 svn-1.2.3-setup.exe。
- TortoiseSVN,客戶端程序。TortoiseSVN是擴(kuò)展Windows Shell的一套工具,可以看作Windows資源管理器的插件,安裝之后Windows就可以識(shí)別Subversion的工作目錄。
官方網(wǎng)站是TortoiseSVN,下載方式和前面的svn服務(wù)器類似,在Download頁面的我們選擇Official version for Win2k/XP or higher的版本,然后在sourceforge的下載頁面選擇目前的最高穩(wěn)定版本的安裝文件TortoiseSVN-1.2.5.4719-svn-1.2.3.msi。(注意:TortoiseSVN有一個(gè)特殊對VS.Net運(yùn)行時(shí)一個(gè)BUG修正的版本,在下載頁面有選擇:Special version for Win2k/XP or higher: (We provide NO support for this!) uses _svn folders instead of .svn to work around the VS.NET bug with web projects. If you don‘t use web projects then please use the official version. )
- TortoiseSVN的中文語言包,注意這個(gè)需要下和客戶端程序版本相同的。可以在Download頁面內(nèi)的Language Packs選擇下載。
- Apache服務(wù)器程序??梢缘?a >Apache官方網(wǎng)站下載最新版本的Apache,并且SVN必須運(yùn)行在Apache2以上版本,在下載頁面選擇Windows的安裝包文件apache_2.0.55-win32-x86-no_ssl.msi
- AnkhSVN,可選安裝VS.Net的SVN插件。有0.5和0.6版本選擇,0.6版支持VS2005 Beta2,下載頁面。
停止IIS,因?yàn)锳pache默認(rèn)安裝為80端口,需要關(guān)閉IIS避免端口沖突??梢栽诎惭b好之后再調(diào)整端口。
開始安裝:
- 先安裝Apache服務(wù)器。在到填寫ServerInfo的時(shí)候,若機(jī)器已經(jīng)啟用了AD,安裝程序會(huì)自動(dòng)填寫,否則自己手動(dòng)填寫。安裝完成之后到安裝目錄下找到conf目錄下的httpd.config文件,搜索Listen,并將Listen后面的80改為8080(或者你希望的端口),然后重新啟動(dòng)Apache服務(wù)器,這時(shí)可以用http://localhost:8080 來測試是否安裝正確。
- 再安裝SVN服務(wù)器,沒有什么好說的,一路回車就可以了。(安裝SVN時(shí),請確保Apache服務(wù)器正在運(yùn)行狀態(tài),安裝過程中可能會(huì)將Apache關(guān)閉,重新啟動(dòng)屬于正?,F(xiàn)象)
配置Apache服務(wù)器與SVN集成:
- 首先將Subversion安裝目錄bin\下面的兩個(gè)文件:mod_authz_svn.so和mod_dav_svn.so復(fù)制到Apache安裝目錄modules\目錄下。
- 有些文章說需要再修改httpd.conf,并做如下修改:
找到Apache安裝目錄下的conf目錄,用文本編輯器打開httpd.conf,找到一下兩行:
#LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
將每行前面的注釋符“#”去掉。再在所有LoadModule語句的最后添加一下幾行:
#SVN
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
但是我安裝完之后發(fā)現(xiàn)這個(gè)文件已經(jīng)被做了那些修改,大概是新版的SVN安裝程序做了一些優(yōu)化吧。其實(shí)在成功安裝SVN之后,Apache服務(wù)器已經(jīng)和SVN初步集成。如圖:
注意下面的狀態(tài)欄已經(jīng)是Apache/2.0.55 SVN1.2.3 DAV/2
- 建立一個(gè)SVN存放文件的目錄,我在F盤下創(chuàng)建一個(gè)文件夾:F:/SubversionFiles
- 接下來我們必須告訴Apache我們的資源庫所在的路徑,可以通過Location指令來完成這個(gè)設(shè)置。因?yàn)椴幌M麨槊總€(gè)單獨(dú)的項(xiàng)目都進(jìn)行單獨(dú)的設(shè)置,所以我們把所有項(xiàng)目都存放在統(tǒng)一的資源庫目錄,那么可以使用SVNParentPath指令來指定存放所有項(xiàng)目的路徑。在httpd.conf文件最后添加下面配置:
#SVN
<Location /svn>
DAV svn
SVNParentPath "F:/SubversionFiles"
</Location>
這樣我們就可以通過http://myhost:8080/svn/<項(xiàng)目名> 來訪問存放于資源庫F:/SubversionFiles中的指定項(xiàng)目。當(dāng)然有可能你并不希望某個(gè)項(xiàng)目提供這樣一種訪問方式,這時(shí)候你可以使用SVNPath為每個(gè)項(xiàng)目進(jìn)行單獨(dú)的設(shè)置,SVNPath的使用方法如下:
DAV svn
SVNPath "F:/SubversionFiles/project1"
同樣把這段配置放在httpd.conf最后,重啟Apache HTTP服務(wù)即可通過http://myhost:8080/svn/project1 來訪問project1項(xiàng)目的資源庫。
-
下面作一個(gè)測試:
-
到F:\SubversionFiles下建立一個(gè)子目錄Test,然后到Aapche下的Bin目錄下執(zhí)行svnadmin create F:\SubversionFiles\Test
-
打開瀏覽器輸入網(wǎng)址:http://localhost:8080/svn/Test ,應(yīng)該可以正確訪問,但當(dāng)前該項(xiàng)目下還沒有加入任何內(nèi)容,所以顯示為空的
-
有一點(diǎn)需要提示的是,現(xiàn)在的訪問是完全匿名的,任何人都可以對SVN進(jìn)行操作。所以我們接下來利用Apache的權(quán)限管理功能來對SVN進(jìn)行用戶驗(yàn)證集成
加入用戶身份驗(yàn)證:
在確定對訪問用戶的權(quán)限控制之前,你必須規(guī)劃好是對整個(gè)資源庫中的所有項(xiàng)目還是單獨(dú)的某一個(gè)項(xiàng)目進(jìn)行統(tǒng)一的身份驗(yàn)證, 也就是我們前面講到的是使用SVNParentPath還是SVNPath的問題。
最簡單的身份驗(yàn)證方式是使用Basic HTTP Authentication機(jī)制,該方式通過用戶名和口令對訪問用戶進(jìn)行身份驗(yàn)證。我們可以直接通過Apache提供的支持進(jìn)行設(shè)置。Apache提供一個(gè)htpasswd工具來管理用戶名和口令。接下來我們利用這個(gè)工具來添加兩個(gè)用戶。
在命令行窗口中轉(zhuǎn)到Apache所在的目錄,執(zhí)行下列命令
說明:創(chuàng)建用戶Xrinehart
輸入:htpasswd –c F:\SubversionFiles\svn_auth_passwd Xrinehart
說明:使用-c參數(shù)來創(chuàng)建一個(gè)passwd文件
輸出:
New password: *****
Re-type new password: *****
Adding password for user Xrinehart
再創(chuàng)建用戶的時(shí)候就不用-c參數(shù),而是用-m參數(shù),因?yàn)槲募?/font>svn_auth_passwd 已經(jīng)創(chuàng)建。
打開svn_auth_passwd文件,密碼使用MD5加密過了,而且同樣的密碼加密出來的內(nèi)容卻不相同
接下來我們必須告訴Apache服務(wù)器如何使用這個(gè)passwd文件,打開httpd.conf找到剛才我們添加的Location配置的位置,修改如下:
#
# SVN
#
DAV svn
SVNParentPath "F:/SubversionFiles"
# how to authenticate a user
AuthType Basic
AuthName "Subversion repository"
AuthUserFile "F:/SubversionFiles/svn_auth_passwd"
# only authenticated users may access the repository
Require valid-user
重新啟動(dòng)Apache HTTP服務(wù)器,使用瀏覽器打開 http://localhost:8080/svn/Test 你將會(huì)看到要求登錄的對話框,輸入你剛設(shè)置的用戶名和口令即可。
這樣Apache和SVN的集成就基本告成了