由于客戶和我們的網(wǎng)絡(luò)分布在香港和廣州,雙方無法直接訪問對(duì)方的SVN Repository,所以需要有一個(gè)公共的第三方平臺(tái)來讓雙方可以直接訪問。
【2.基本思路】
我們要考慮的問題主要有四方面:
①選用何種服務(wù)器作為Web服務(wù)器
Apache服務(wù)器作為業(yè)界廣泛使用的Web服務(wù)器,因其高效的性能,靈活的擴(kuò)展性,完善的完全機(jī)制而成為我們選擇Web服務(wù)器的首選。
②采用何種協(xié)議來進(jìn)行通信
在確定了Web服務(wù)器后,我們要考慮的是以什么協(xié)議傳輸SVN請(qǐng)求和響應(yīng)。HTTP協(xié)議雖然簡(jiǎn)單但由于使用明文通信,在此之上的通信容易被黑客攔截,所以我們采用加密了HTTP協(xié)議:HTTPS。
③是否需要保留其它原有的訪問方式
SVN默認(rèn)支持幾種通信協(xié)議:SVN協(xié)議,HTTP,HTTPS協(xié)議,如果我們采用了基于Web的訪問方式,那么我們還要開放原始的SVN協(xié)議訪問方式嗎?還是切斷其它的訪問方式呢?這兩種做法都有好有壞:
A. 開放原始SVN協(xié)議訪問:增加了訪問方式,但也帶來了風(fēng)險(xiǎn)。因?yàn)镾VN是沒有提供訪問日志
B. 切斷其它訪問方式:增加了安全性。但速度比較慢(因?yàn)槎嗔薃pache的鑒權(quán)和日志記錄)
個(gè)人的做法是:對(duì)外部客戶只開放基于HTTPS的訪問方式,對(duì)內(nèi)同時(shí)提供兩種方式
④是否需要開通端口映射
一般企業(yè)內(nèi)部都有局域網(wǎng),對(duì)外使用一個(gè)公網(wǎng)IP地址上網(wǎng),我們的SVN服務(wù)器搭建在內(nèi)網(wǎng),如果要外部用戶能夠訪問到我們內(nèi)網(wǎng)的機(jī)器,必須做一個(gè)端口映射,當(dāng)訪問公網(wǎng)IP地址的某個(gè)端口時(shí)映射到內(nèi)網(wǎng)服務(wù)器的某個(gè)端口就可以了。
【3.基本工具】
這里我介紹的一個(gè)集成了Apache 2.2和SVN 1.5的軟件:CollabNet SVN。網(wǎng)址見:http://www.open.collab.net/products/subversion/。該軟件有For Windows, For Linux版本的,我選擇的是For Windows的版本。
安裝該軟件相當(dāng)簡(jiǎn)單,和我們安裝其它軟件沒有大的區(qū)別,在安裝時(shí)會(huì)提示你配置SVN的監(jiān)聽端口,SVN Repository的父目錄(注意是父目錄,不是單一Repository的路徑)。安裝后記得要重啟才能啟動(dòng)Apache服務(wù)。
此外這個(gè)軟件本身集成了所有SSL配置的必須文件,不需要再到網(wǎng)上下載了,很方便
【4.示例操作】
配置Apache和SSL的過程比較繁瑣,這里就不在一一列舉,下面給出網(wǎng)上一篇非常詳細(xì)的教程:
windows安裝基于Apache的SVN服務(wù)器(包括SSL配置)
這篇教程包含了Apache的配置,SVN的配置,SSL的配置,讀者可以一步一步按照上面的步驟來配置。這里著重補(bǔ)充一點(diǎn)教程中沒有提到的一點(diǎn):
要使用SSL必須在Apache的httpd.conf文件中加載ssl.conf文件,但是這篇教程中沒有提到(可能是因?yàn)锳pache的版本不同),一開始我按照教程中的步驟配置后,Apache服務(wù)器可以正常啟動(dòng),但是一旦用https://服務(wù)器名或IP/svn/版本庫(kù)名訪問時(shí),卻直接返回主機(jī)無法連接的錯(cuò)誤,后來詢問專業(yè)人士才知道,原來在httpd.conf中有一個(gè)加載ssl.conf的選項(xiàng),默認(rèn)是注釋的,必須開通這個(gè)選項(xiàng)。去掉注釋后重啟Apache服務(wù)器,再次測(cè)試成功!
切記:如果你使用的是CollabNetSVN,那么在你的\conf\httpd.conf文件中搜索下面這兩行


一定要把Include前面的注釋去掉才能正常使用SSL,否則會(huì)連訪問日志都沒有內(nèi)容。
當(dāng)配置成功后我們就可以通過web瀏覽器來瀏覽SVN了,用戶只需要在Web瀏覽器上查找自己要導(dǎo)出的內(nèi)容,將URL拷貝后使用本地客戶端(如TortoiseSVN)check out即可。
附件1:httpd.conf和httpd-ssl.conf
附件2:SSL和SVN相關(guān)模塊
-------------------------------------------------------------
生活就像打牌,不是要抓一手好牌,而是要盡力打好一手爛牌。