svn安裝配置全過程_第1頁
svn安裝配置全過程_第2頁
svn安裝配置全過程_第3頁
svn安裝配置全過程_第4頁
svn安裝配置全過程_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

從subversion開始(svn安裝配置全過程(+全套安裝文件與配置文件))??…關鍵字:svnsubversionsvn安裝配置svn安裝配置文件花了一天時間,走了不少彎路,解決N多錯誤,終于全部完成了,記下安裝過程中遇到的各種問題,希望對初步使用svn的TX們有所幫助。關于svn的介紹此處略過,直接進入正題。svn服務的開啟有兩種方式,?自帶的svnserve服務(訪問地址類似于svn://8/repos/)?與Apache配合使用(訪問地址類似于8:8077/repos/)下面先進入第一種的配置:安裝,解壓縮下載的svn壓縮包到對應文件夾(建議路徑不要有空格與中文)建立版本庫,首先建立f:\svn空文件夾作為所有版本庫的根目錄。然后,進入命令行并切換到安裝subversion的bin目錄(建議將此目錄設為path)。輸入如下命令:svnadmincreatef:\svn\repos運行服務進程在bin目錄下輸入:svnserve-d-rf:\svn注:-d參數(shù)效果同于--daemon-r參數(shù)效果同于--rootsvnserve將會在端口3690等待請求,--daemon(兩個短橫線)選項告訴svnserve以守護進程方式運行,這樣在手動終止之前不會退出。不要關閉命令行窗口,關閉窗口會把svnserve停止。--root選項設置根位置來限制服務器的訪問目錄,從而增加安全性和節(jié)約輸入svnserveURL的時間如果不加root參數(shù),服務url為:svn://localhost/svn/repos而如果加上root參數(shù),服務url為:svn://localhost/repos此處的啟動配置會影響服務url,如果輸入url錯誤,會導致訪問的時候出現(xiàn)異常4為了驗證svnserve正常工作,使用TortoiseSVN->Repo-browser來查看版本庫。在彈出的URL對話框中輸入:svn://localhost/repos點OK按鈕后就可以看見repo1版本庫的目錄樹結構了,只不過這時repo1是個空庫。可能出現(xiàn)的問題:Error:Can'tconnecttohost'':由于目標機器積極拒絕,無法連接。解決:首先測試svn的3690端口是否打開:telnetlocalhost3690如果不成功說明服務沒有被正常啟動,請參考前面步驟可以將svn服務添加到系統(tǒng)服務中去,步驟如下:這樣可以避免每次重啟后需要手動運行命令的煩惱1在subversion的安裝路徑下,找到bin文件夾2新建一個setupservice.bat文件,內(nèi)容為:Java代碼sccreatesvnservebinpath二"Subversion安裝路徑\bin\svnserve.exe--service-rf:\svn"depend=Tcpipstart=autoscstartsvnservepause這里有個需要注意的問題:“start=autO等號后面要加上一空格3運行,這時在服務里可找到一個名為svnserve的服務。在cmd命令行下查看打開的端口:netstat-ano就看到3690端口打開了Error:Norepositoryfoundin'svn://localhost/svn/repos/jmxDemo'解決:Java代碼A.測試1:①運行svnserve-d-rf:\svn\repos\jmxDemo//扌旨定jmxDemo根目錄為服務的根目錄②運行svn://localhost,可以正常訪問修改jmxDemo③運行svn://localhost/jmxDemo,出現(xiàn):'svn://localhost/jmxDemo'non-existentin5.B.測試2:①運行svnserve-d-rf:\svn\repos//扌旨定jmxDemo上層目錄為服務的根目錄②運行svn://localhost/jmxDemo,可以正常訪問修改Repository③運行svn://localhost,出現(xiàn):Error*Norepositoryfoundin'svn://localhost'10.C.結論:①SVN服務啟動時指定的根目錄不同,會影響相同URL的訪問結果②SVN在訪問指定路徑時會從服務的根目錄下去尋找,即基于我們啟動服務時旨定的根目錄③svn://localhost扌旨向默認的jmxDemo,svn://localhost/jmxDemo指向jmxDemo④測試情況一的步驟③失敗是因為我們已經(jīng)把路徑直接旨向了jmxDemo的根目錄⑤測試情況二的步驟③失敗是因為我們只是把路徑指向了jmxDemo的上層目錄解決如下:svn://localhost/repos/jmxDemo而不是svn://localhost/svn/repos/jmxDemo配置權限打開建立的版本庫文件夾/conf編輯server.conf添加如下幾行:Java代碼[general]password-db=passwd.confanon-access=noneauth-access=writeauthz-db=authz.conf保證文件中只有這幾行是不被注釋的在當前文件夾新建authz.conf與passwd.conf文件編輯passwd.conf文件,添加內(nèi)容:Java代碼_■[users]cjy=cjy注意整個串前后都不要有空格編輯authz.conf文件,添加內(nèi)容:Java代碼[/]cjy=rw導入文件夾重啟服務,在需要導入的文件夾上右鍵--TortoiseSVN->Import輸入url:svn://localhost/repos/文件夾名此處文件夾名需要被加上,不然會把文件夾下的所有文件弄到repos文件夾下,數(shù)據(jù)亂了輸入用戶名密碼:cjy導入的時候可能出現(xiàn)的問題:Error:Authorizationfailed解決:權限問題這個問題弄了蠻久,一直以為是拼寫url的問題,找了半天沒找到,然后確認問題是權限配置錯誤,查了半天也沒看出來,后來弄清楚,是因為導入涉及到在根下寫東西,所以必須要有根下的w權限,添加如下配置后問題解決:Java代碼[/]cjy=rw版本庫與導入項目最好不要重名,如果重名:比如把arm下的東東導入到了這個版本庫:svn://localhost/arm。而配置權限的時候,[arm:/]這才代表工程的根目錄,即:svn://localhost/arm要想配到權限到目錄下,就得這么寫:[arm:/arm/],不然出錯,且問題不容易排出checkout之,svn://localhost/repos/文件夾名注意大小寫區(qū)分,不然可能也會出現(xiàn)Error:Authorizationfailed錯誤OK,至此svn自帶服務配置完成,可以進行其他測試如update,commit等。都不會再出現(xiàn)問題。下面說明Apache配合svn提供httpsvn服務。下面進入第二種配置:1、安裝Apache,Apache的安裝文件時一個msi文件可以直接雙擊運行(建議路徑不要有空格與漢字)2、 從Subversion安裝目錄的bin子目錄將intl3_svn.dll、libdb44.dll拷貝到Apache安裝目錄的bin文件夾3、 從Subversion安裝目錄的bin子目錄將mod_authz_svn.so、mod_dav_svn.so拷貝到Apache的模塊目錄(Apache安裝目錄的modules文件夾)此步可省,配置的時候通過絕對路徑的方式指定也可以4、 修改Apache的配置文件httpd.conf,使用LoadModule來加載mod_dav_svn模塊。Java代碼LoadModuledav_modulemodules/mod_dav.soLoadModuledav_fs_modulemodules/mod_dav_fs.so3.LoadModuledav_svn_module"svn安裝目錄/bin/mod_dav_svn.so"LoadModuleauthz_svn_module"svn安裝目錄/bin/mod_authz_svn.so"注:如果拷貝了so文件到模塊目錄了,可以將上面兩個的路徑改成modules/mod_dav_svn.so的形式,否則請使用正確的絕對路徑請確認文件中未注釋的數(shù)據(jù)只有以上四句確定用來作為Subversion版本庫的目錄在配置文件最后添加如下幾行:Java代碼<Location/svn>DAVsvnSVNPathf:/svn/repos</Location>這個配置告訴Apache首先需要啟用dav_module,然后加載dav_svn_module。版本庫對外的URL是:http://localhost:8077/svn,所有的Subversion版本庫在物理上位于f:/svn/repos。配置完畢后重新啟動Apache,打開瀏覽器,輸入http://localhost:8077/svn將會看到成功畫面:svn-Revision10:/armdiary/ref/temp/PoweredbySubversionversion1.6.0(r36650).這表示Apache的dav_svn模塊已經(jīng)可以正常工作了(現(xiàn)在已經(jīng)可以通過http的方式獲取svn中的內(nèi)容了)。5、測試通過之后,進行權限配置5.1、基本HTTP認證最簡單的客戶端認證方式是通過HTTP基本認證機制,簡單的使用用戶名和密碼來驗證一個用戶的身份。Apache提供了一個htpasswd工具來管理一個用戶文件,這個文件包含用戶名和加密后的密碼,這些就是你希望賦予Subversion特別權限的用戶。htpasswd可以在Apache的bin安裝目錄下找到。具體使用方法如下:創(chuàng)建用戶文件:htpasswd-cmF:\svn\repos\conf\passwordfilecjy添加新用戶(-m表示以MD5加密密碼):htpasswd[-m]F:\svn\repos\conf\passwordfiledmm這個地方如果加上c,會把以前的覆蓋掉更改用戶密碼:htpasswd[-m]F:\svn\repos\conf\passwordfilecjy刪除用戶(要用大寫的D):htpasswd-DF:\svn\repos\conf\passwordfilecjy接下來修改httpd.conf,在Location標簽中加入如下內(nèi)容:Java代碼AuthTypeBasicAuthName"svnrepos"AuthUserFileF:\svn\repos\conf\passwordfileRequirevalid-user說明:AuthTypeBasic:啟用基本的驗證,比如用戶名/密碼對。AuthName"svnrepos":當一個認證對話框彈出時,出現(xiàn)在認證對話框中的信息。(最好用英文,TortoiseSVN不支持中文,安裝語言包除外。)AuthUserFileF:\svn\repos\conf\passwordfile:扌旨定F:\svn\repos\conf\passwordfile為用戶文件,用來驗證用戶的用戶名及密碼。Requirevalid-user:限定用戶只有輸入正確的用戶名及密碼后才能訪問這個路徑重新啟動Apache,打開瀏覽器訪問版本庫。Apache會提示你輸入用戶名和密碼來認證登陸了,現(xiàn)在只有passwd文件中設定的用戶才可以訪問版本庫。也可以配置只有特定用戶可以訪問,替換上述"Requirevalid-user"為"Requireusercjydmm"將只有用戶文件中的cjy和dmm可以訪問該版本庫。有的時候也許不需要這樣嚴格的訪問控制,例如大多數(shù)開源項目允許匿名的讀取操作,而只有認證用戶才允許寫操作。為了實現(xiàn)更為細致的權限認證,可以使用Limit和LimitExcept標簽。例如:Java代碼<LimitExceptGETPROPFINDOPTIONSREPORT>requirevalid-user</LimitExcept>以上配置將使匿名用戶有讀取權限,而限制只有passwd中配置的用戶可以使用寫操作。如果這還不能滿足你的要求,你希望精確的控制版本庫目錄訪問,可以使用Apache的mod_authz_svn模塊對每個目錄進行認證操作。5.2、用mod_authz_svn進行目錄訪問控制首先需要讓Apache將mod_authz_svn模塊加載進來。在Subversion的安裝目錄中找到mod_auth_svn模塊,將其拷貝到Apache安裝目錄的modules子目錄下。修改httpd.conf文件,添加:LoadModuleauthz_svn_modulemodules/mod_authz_svn.so現(xiàn)在可以在Location標簽中使用authz的功能了。注:在咱們的配置文件中已經(jīng)進行了此步驟。此處可以略過一個基本的authz配置如下:Java代碼#下面的/svn表示url為:http://localhost:8077/svn/<Location/svn>#先需要啟用dav_module,然后加載dav_svn_moduleDAVsvn#版本庫的本地路徑SVNPathf:\svn\repos#下面一行是使用版本庫上一級文件夾的方式來控制所有版本庫#SVNParentPathe:/svn#權限控制文件AuthzSVNAccessFileD:\Java\apache\conf\authz.conf#tryanonymousaccessfirst,resorttoreal#authenticationifnecessary.13.SatisfyAnyRequirevalid-user#啟用基本的驗證,比如用戶名/密碼對。#在用戶名/密碼對文件中的用戶名才可以再authz.conf文件中配置生效AuthTypeBasicAuthName"cjyrepos"AuthUserFileD:\Java\apache\conf\passwordfile</Location>AuthzSVNAccessFile指向的是authz的策略文件,詳細的權限控制可以在這個策略文件中指定。AuthUserFile指向加密用戶文件的位置,只有在此文件中存在的用戶才可以在authz策略文件中被正確配置以(#)開頭的行會被忽略;在它的簡單形式里,每一小節(jié)命名一個版本庫和一個里面的路徑;認證用戶名是在每個小節(jié)中的選項名;每個選項的值描述了用戶訪問版本庫的級別:r(只讀)或者rw(讀寫),如果用戶沒有提到或者值留空,訪問是不允許的;*表示所有用戶,用它控制匿名用戶的訪問權限;@符號區(qū)分組和用戶。如:Java代碼[groups]#定義組vip=dmmusers=cjy,light[/]*=r@vip=rw[/branches/dev]@users=rw[/tags]cjy=rw[/private]*=@vip=r使用SVNParentPath代替SVNPath來指定多個版本庫的父目錄時,其中所有的版本庫都將按照這個策略文件配置。例如上例中cjy將對所有版本庫里的/tags目錄具有讀寫權限。如果要對具體每個版本庫配置,用如下的語法:Java代碼[groups]project1_vip=cjy,dmmproject2_vip=cjy,light[repos1:/]*=r@project1_vip=rw[repos2:/]*=r@project2_vip=rw這樣repos1的project1_vip組只能對repos1版本庫下的文件具有寫權限而不能修改版本庫repos2,同樣repos2的project2_vip組也不能修改repos1版本庫的文件。可能出現(xiàn)的錯誤:1、路徑或權限不足時將出現(xiàn)錯誤信息提示:http://localhost(路徑不對)Error*PROPFINDrequestfailedon'/'PROPFINDof'/':200OK(http://localhost)http://localhost/svn(權限不足)Error*PROPFINDrequestfailedon'/svn'PROPFINDof'/svn':403Forbidden(http://localhost)http://localhost/svn/repos(正常顯示)http://localhost/repos(權限不允許)Error*PROPFINDrequestfailedon'/repos'PROPFINDof'/repos':405MethodNotAllowed(http://localhost)2、不啟動E:\subversion\bin\svnserve.exe,但啟動了ApacheSVN,訪問(tortoiseSVN-〉Repo-browser)或提交(SVNCommit)情形如下:現(xiàn)象:svn://localhost/svn/repos不能訪問或提交,提示:Error*Can'tconnecttohost'localhost':由于目標機器積極拒絕,無法連接。但file:///e:/svn/repos和http://localhost/svn/repos可以訪問或提交。原因:svn://是獨立服務器svnserver自己的協(xié)議。file:///是本地訪問,即服務器端和客戶端在一個機器上3、 具體到使用so的時候報錯Cannotloadmod_dav_svn.sointoserver:\xd5\xd2\xb2\xbb\xb5\xbd\xd6\解決:可能是版本的沖突,請使用2.2.9配1.6解壓縮下載的svn,里面會有一個readme文件,打開后會列出其支持的相關應用列表,請下載相對應的apache版本推薦2.2.9+1.6.0,版本較新,且已經(jīng)測試通過(附件中有安裝文件)httpd.exe:Syntaxerroronline87ofD:/Java/apache/conf/httpd.conf:InvalidLoadModulepathmodules/mod_dav_svn.so"解決:幾個DLL沖突,apache/bin/*.DLL最終列表:Java代碼[-,需要刪除的]:[+?從Subs復制過來的][?,未知,可以不要]4.[-]lib

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論