深入剖析:Subversion和Apache2.0.x完美結(jié)合之上篇
Subversion相信大家都比較熟悉了,他已經(jīng)更新了多個(gè)版本,本文說(shuō)一下Subversion和Apache2.0.x的結(jié)合,注意:目前windows下的Subversion只能跟Apache2.0.x配合,不能用于Apache2.2.x,除非你自己編譯。
在所有的Subversion服務(wù)器配置方式中,基于Apache的是最靈活的。雖然配置起來(lái)有一點(diǎn)點(diǎn)復(fù)雜,但是它提供了其它方式所沒(méi)有的好處:
1.WebDAV
基于Apache配置的Subversion服務(wù)器使用了被許多其它程序支持的WebDAV協(xié)議。舉個(gè)例子,你可以在Windows的資源管理器中將這樣的一個(gè)版本庫(kù)掛載成一個(gè)“Webfolder”,然后像文件系統(tǒng)中的其它文件夾一樣訪問(wèn)它。
1.1瀏覽版本庫(kù)
你可以在不安裝Subversion客戶端的情況下,使用瀏覽器來(lái)瀏覽版本庫(kù)中的內(nèi)容。這將使得更大范圍的用戶可以訪問(wèn)你的數(shù)據(jù)。
1.2用戶驗(yàn)證
你可以使用任何Apache支持的驗(yàn)證機(jī)制,包括SSPI和LDAP。
1.3安全
Apache是非常的穩(wěn)定和安全,因此你的版本庫(kù)自然而然地?fù)碛型瑯拥陌踩浴0⊿SL加密。
2.安裝過(guò)程
2.1.安裝Apache
安裝Apache前,你要有一臺(tái)運(yùn)行Windows2000、WindowsXP+sp1或Windows2003的電腦。
警告:請(qǐng)注意,沒(méi)安裝ServicePack1的WindowsXP將導(dǎo)致錯(cuò)誤的網(wǎng)絡(luò)數(shù)據(jù)從而破壞你的版本庫(kù)!
從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è)安裝過(guò)程。請(qǐng)確保你輸入正確的服務(wù)器URL(如果你的服務(wù)器沒(méi)有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ì)再有問(wèn)題了。現(xiàn)在你可以在你的瀏覽器中鍵入http://loccalhost/,如果呈現(xiàn)了一個(gè)已經(jīng)配置好的網(wǎng)站,那么你的Apache就安裝成功了。
警告:
如果你將Apache安裝成一個(gè)服務(wù),它將以本地system帳戶來(lái)運(yùn)行。為Apache創(chuàng)建一個(gè)單獨(dú)的用戶來(lái)運(yùn)行它將會(huì)更安全一些。請(qǐng)確保運(yùn)行Apache的用戶有版本庫(kù)的完全訪問(wèn)權(quán)限(右鍵版本庫(kù)目錄->屬性->安全)。要不然,用戶將無(wú)法提交他們的更改。就算Apache以本機(jī)system來(lái)運(yùn)行,你也要設(shè)置它能完全讀寫(xiě)版本庫(kù)目錄。如果沒(méi)有為Apache配置這個(gè)許可,用戶將會(huì)得到"禁止訪問(wèn)"的錯(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安裝程序,如果安裝程序能夠識(shí)別你已經(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)容:
去掉以下行的注釋(將開(kā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
這樣配置表示:你所有的版本庫(kù)將位于D:\SVN目錄下,要訪問(wèn)你的版本庫(kù)可以使用這樣的URL:http://MyServer/svn/,訪問(wèn)權(quán)限將由passwd文件中的用戶名/密碼來(lái)限制。
要?jiǎng)?chuàng)建passwd文件,可以打開(kāi)命令行(DOS窗口),將當(dāng)前目錄切換到apache2目錄(通常為c:\programfiles\apachegroup\apache2),然后打入以下命令以創(chuàng)建文件:
CODE:
bin\htpasswd-cpasswd
將你的瀏覽器指向http://MyServer/svn/MyNewRepository(MyNewRepository是你之前創(chuàng)建的Subversion版本庫(kù))。如果一切正常,你將被提示輸入用戶名密碼,輸入正確的用戶名密碼后你就可以看到版本庫(kù)中的內(nèi)容了。
對(duì)你剛剛輸入的apache配置作一些簡(jiǎn)短的說(shuō)明:
QUOTE:
意味著可以通過(guò)像這樣的URL(http://MyServer/svn)來(lái)訪問(wèn)Subversion版本庫(kù)
DAVsvn
告訴Apache哪個(gè)模塊負(fù)責(zé)服務(wù)像那樣的URL--在這里就是Subversion模塊
SVNListParentPathon
在Subversion1.3及更高版本中,這個(gè)指示器使得Subversion列出由SVNParentPath指定的目錄下所有的版本庫(kù)
SVNParentPathD:\SVN
告訴Subversion在目錄D:\SVN下尋找版本庫(kù)
AuthTypeBasic
啟用基本的驗(yàn)證,比如用戶名/密碼對(duì)
AuthName"Subversionrepositories"
當(dāng)一個(gè)驗(yàn)證對(duì)話框彈出時(shí),告訴用戶這個(gè)驗(yàn)證是用來(lái)做什么的
AuthUserFileD:\passwd
指定D:\passwd用為密碼文件用來(lái)驗(yàn)證用戶的用戶名及密碼
AuthzSVNAccessFileD:\svnaccessfile
指定D:\svnaccessfile來(lái)限定各個(gè)用戶或組在版本庫(kù)中目錄的訪問(wèn)權(quán)限
Requirevalid-user
限定用戶只有輸入正確的用戶名及密碼后才能訪問(wèn)這個(gè)路徑。Subversion和Apache2.0.x結(jié)合到這里還沒(méi)有結(jié)束,請(qǐng)大家繼續(xù)關(guān)注下篇。
【編輯推薦】