深入剖析:Subversion和Apache2.0.x完美結(jié)合之上篇
Subversion相信大家都比較熟悉了,他已經(jīng)更新了多個(gè)版本,本文說一下Subversion和Apache2.0.x的結(jié)合,注意:目前windows下的Subversion只能跟Apache2.0.x配合,不能用于Apache2.2.x,除非你自己編譯。
在所有的Subversion服務(wù)器配置方式中,基于Apache的是最靈活的。雖然配置起來有一點(diǎn)點(diǎn)復(fù)雜,但是它提供了其它方式所沒有的好處:
1.WebDAV
基于Apache配置的Subversion服務(wù)器使用了被許多其它程序支持的WebDAV協(xié)議。舉個(gè)例子,你可以在Windows的資源管理器中將這樣的一個(gè)版本庫掛載成一個(gè)“Webfolder”,然后像文件系統(tǒng)中的其它文件夾一樣訪問它。
1.1瀏覽版本庫
你可以在不安裝Subversion客戶端的情況下,使用瀏覽器來瀏覽版本庫中的內(nèi)容。這將使得更大范圍的用戶可以訪問你的數(shù)據(jù)。
1.2用戶驗(yàn)證
你可以使用任何Apache支持的驗(yàn)證機(jī)制,包括SSPI和LDAP。
1.3安全
Apache是非常的穩(wěn)定和安全,因此你的版本庫自然而然地?fù)碛型瑯拥陌踩浴0⊿SL加密。
2.安裝過程
2.1.安裝Apache
安裝Apache前,你要有一臺運(yùn)行Windows2000、WindowsXP+sp1或Windows2003的電腦。
警告:請注意,沒安裝ServicePack1的WindowsXP將導(dǎo)致錯(cuò)誤的網(wǎng)絡(luò)數(shù)據(jù)從而破壞你的版本庫!
從http://httpd.apache.org/download.cgi下載最新版本的ApacheWeb服務(wù)器。確保你下載的版本大于2.0.54。2.0.54版本的Apache將不能與Subversion1.3.xx配合工作。而且,小于2.0.54的Apache也因?yàn)樵趙indows上的編譯存在一個(gè)bug而導(dǎo)致不能與Subversion1.2配合使用。一旦你已經(jīng)有了Apache2的安裝程序,你可以雙擊它,它將引導(dǎo)你完成整個(gè)安裝過程。請確保你輸入正確的服務(wù)器URL(如果你的服務(wù)器沒有DNS
名稱,你可以直接輸入IP地址)。我建議你將Apache安裝成forallUsers,onPort80,asaservice。注意:如果你已經(jīng)有一個(gè)IIS或者其它的程序使用80端口,安裝可能會(huì)失敗。如果是這樣,你可以到程序目錄下的ApacheGroup\Apache2\conf目錄中找到文件httpd.conf,將其中的Listen80改成一個(gè)不用的端口,比如Listen81。然后重新運(yùn)行這個(gè)安裝程序,這次應(yīng)該不會(huì)再有問題了。現(xiàn)在你可以在你的瀏覽器中鍵入http://loccalhost/,如果呈現(xiàn)了一個(gè)已經(jīng)配置好的網(wǎng)站,那么你的Apache就安裝成功了。
警告:
如果你將Apache安裝成一個(gè)服務(wù),它將以本地system帳戶來運(yùn)行。為Apache創(chuàng)建一個(gè)單獨(dú)的用戶來運(yùn)行它將會(huì)更安全一些。請確保運(yùn)行Apache的用戶有版本庫的完全訪問權(quán)限(右鍵版本庫目錄->屬性->安全)。要不然,用戶將無法提交他們的更改。就算Apache以本機(jī)system來運(yùn)行,你也要設(shè)置它能完全讀寫版本庫目錄。如果沒有為Apache配置這個(gè)許可,用戶將會(huì)得到"禁止訪問"的錯(cuò)誤信息,在Apache的錯(cuò)誤日志中表現(xiàn)為錯(cuò)誤500。
2.2.安裝Subversion
從http://Subversion.tigris.org/servlets/ProjectDocumentList?folderID=91(英文)或>http://www.iusesvn.com/bbs/forumdisplay.php?fid=7中文)下載最新版本的Subversion。運(yùn)行Subversion安裝程序,如果安裝程序能夠識別你已經(jīng)安裝了Apache,那么你的安裝基本上就OK了。如果它不能,那么你要做一些額外的步驟。注:Subversion和Apache2.0.x結(jié)合時(shí)如果你先安裝Apache,再安裝Subversion,正常情況下下面的工作(2.3配置前)Subversion安裝程序已經(jīng)幫你完成了使用資源管理器,進(jìn)入Sibversion的安裝目錄(通常為c:\programfiles\Subversion),找到文件httpd/mod_dav_svn.so和mod_authz_svn.so,將它們拷貝到Apache的modules目錄(通常為c:\programfiles\apachegroup\apache2\modules)。從Subversion的安裝目錄拷貝文件libdb43.dll到Apache的modules目錄。
使用如記事本之類的文本編輯器編輯Apache的配置文件(通常為c:\programfiles\apachegroup\apache2\conf\httd.conf),修改以下內(nèi)容:
去掉以下行的注釋(將開頭的#刪除):
CODE:
#LoadModuledav_fs_modulemodules/mod_dav_fs.so
#LoadModuledav_modulemodules/mod_dav.so
在LoadModule節(jié)的最后添加以下兩行:
CODE:
LoadModuledav_svn_modulemodules/mod_dav_svn.so
LoadModuleauthz_svn_modulemodules/mod_authz_svn.so
2.3.配置
現(xiàn)在,你已經(jīng)安裝了Subversion和Apache2.0.x,但是Apache還不知道如果處理像TortoiseSVN一樣的Subversion客戶端。要讓Apache知道哪個(gè)URL將被Subversion使用,你要像下面這樣編輯Apache的配置文件(通常在c:\programfiles\apachegroup\apache2\conf\httpd.conf):
在配置文件的最后添加下面這些行:
CODE:
DAVsvn
SVNParentPathD:\SVN
AuthTypeBasic
AuthName"Subversionrepositories"
AuthUserFileD:\passwd
#AuthzSVNAccessFileD:\svnaccessfile
Requirevalid-user
這樣配置表示:你所有的版本庫將位于D:\SVN目錄下,要訪問你的版本庫可以使用這樣的URL:http://MyServer/svn/,訪問權(quán)限將由passwd文件中的用戶名/密碼來限制。
要?jiǎng)?chuàng)建passwd文件,可以打開命令行(DOS窗口),將當(dāng)前目錄切換到apache2目錄(通常為c:\programfiles\apachegroup\apache2),然后打入以下命令以創(chuàng)建文件:
CODE:
bin\htpasswd-cpasswd
將你的瀏覽器指向http://MyServer/svn/MyNewRepository(MyNewRepository是你之前創(chuàng)建的Subversion版本庫)。如果一切正常,你將被提示輸入用戶名密碼,輸入正確的用戶名密碼后你就可以看到版本庫中的內(nèi)容了。
對你剛剛輸入的apache配置作一些簡短的說明:
QUOTE:
意味著可以通過像這樣的URL(http://MyServer/svn)來訪問Subversion版本庫
DAVsvn
告訴Apache哪個(gè)模塊負(fù)責(zé)服務(wù)像那樣的URL--在這里就是Subversion模塊
SVNListParentPathon
在Subversion1.3及更高版本中,這個(gè)指示器使得Subversion列出由SVNParentPath指定的目錄下所有的版本庫
SVNParentPathD:\SVN
告訴Subversion在目錄D:\SVN下尋找版本庫
AuthTypeBasic
啟用基本的驗(yàn)證,比如用戶名/密碼對
AuthName"Subversionrepositories"
當(dāng)一個(gè)驗(yàn)證對話框彈出時(shí),告訴用戶這個(gè)驗(yàn)證是用來做什么的
AuthUserFileD:\passwd
指定D:\passwd用為密碼文件用來驗(yàn)證用戶的用戶名及密碼
AuthzSVNAccessFileD:\svnaccessfile
指定D:\svnaccessfile來限定各個(gè)用戶或組在版本庫中目錄的訪問權(quán)限
Requirevalid-user
限定用戶只有輸入正確的用戶名及密碼后才能訪問這個(gè)路徑。Subversion和Apache2.0.x結(jié)合到這里還沒有結(jié)束,請大家繼續(xù)關(guān)注下篇。
【編輯推薦】