URL:http://www.iusesvn.com/
1.安裝Apache2.2.9(http://httpd.apache.org/download.cgi)
選擇:
Win32 Binary without crypto (no mod_ssl) (MSI Installer): apache_2.2.9-win32-x86-no_ssl-r2.msi [PGP] [MD5] 在安裝過程輸入資訊前兩項Network Domain和Server Name中都輸入localhost,下面那個email就隨便了,如果機器安裝了iis並且啟動中,要先把iis服務停掉。否則會和apache的監聽連接埠衝突的。
2.下載SVN1.5(如果是1.4.6版本則有exe二進位安裝檔案,而1.5目前只有source版,解壓下來即可用)
(我安裝的是1.5.5版本:http://subversion.tigris.org/files/documents/15/44589/svn-win32-1.5.5.zip)
(先安裝了之前的版本:1.4.6,然後弄1.5.5的拷過去覆蓋安裝的目錄檔案)
將/svn安裝路徑/bin中的檔案mod_dav_svn.so和mod_authz_svn.so,將它們拷貝到Apache的modules目錄,複製%SVN_HOME%/bin/libdb44.dll、libeay32.dll、以及 ssleay32.dll到%APACHE_HOME%/bin
然後,使用記事本之類的文字編輯器編輯Apache的設定檔/conf/httd.conf做如下修改:
去掉以下行的注釋(將開頭的#刪除):
#LoadModule dav_module modules/mod_dav.so
在LoadModule節的最後添加以下兩行:
LoadModule dav_svn_module "C:/Program Files/Subversion/bin/mod_dav_svn.so"
LoadModule authz_svn_module "C:/Program Files/Subversion/bin/mod_authz_svn.so"
* 完成以上步驟也就完成了Apache2.2.9 + svn1.5的基本配置
現在關閉Apache伺服器,再重啟,會發現Apache控制台的狀態列出現Subversion的資訊
如:Apache/2.2.9(Win32) SVN/1.5 DAV/2
這就說明已經成功的將Subversion整合到了Apache當中
3.下載並安裝TortoiseSVN(http://tortoisesvn.tigris.org/)
(我安裝的是1.5.7.15182版本)
根據嚮導安裝好後,建立版本庫D:/SVN版本庫/repository,右鍵->TortoiseSVN->Create Repository here...“, 然後可以選擇版本庫模式, 這裡使用預設即可, 然後就建立了一系列目錄和檔案。
4.修改Apache的設定檔
在Apache的設定檔/conf/httd.conf檔案的尾部添加
<Location /svn>
#這裡指定了倉庫的訪問路徑
DAV svn
#指定倉庫在硬碟上的實際位置
SVNPath D:/SVN版本庫/repository
#認真方式為基本方式
AuthType Basic
#認證視窗的標題
AuthName "Subversion Repository"
#認證使用者設定檔實際位置
AuthUserFile "D:/SVN版本庫/passwords.auth"
#認證許可權設定檔實際位置
AuthzSVNAccessFile "D:/SVN版本庫/access.auth"
#設定為需要進行認證
Require valid-user
</Location>
設定解釋<Location /svn>意思是Subversion版本庫的URL是http://MyServer/svn/DAV svn告訴Apache是哪個模組響應那個URL的請求-此刻是Subversion模組。SVNListParentPath on對於Subversion1.3或者更高版本,這個指示表示顯示所有SVNParentPath下的版本庫。SVNParentPath D:/SVN告訴Subversion需要查看的版本庫位於D:/SVN之下AuthType Basic啟用基本認證,就是使用者名稱/密碼AuthName "Subversion repositories"用來說明何時彈出要求使用者輸入認證資訊的認證對話方塊AuthUserFile passwd指定使用的認證密碼檔案AuthzSVNAccessFile位置Subversion版本庫的存取控制檔案的路徑Require valid-user指定只有輸入了正確的使用者/密碼的使用者可以訪問URL
* 接下來我們建立認證所需的兩個檔案:使用者檔案和許可權檔案到D:/SVN版本庫下建立檔案 passwords.auth和access.auth(可以用記事本建立後修改檔案名稱)
* 配置認證使用者檔案passwords.auth,內容如下:
tom:tom
cat:cat
hello:world
在這裡密碼都沒有加密,如果需要設定密碼加密,可以用Apache安裝目錄下bin目錄中的htpasswd.exe程式產生,具體產生方法如下:
我的Apache安裝路徑是:
D:/Program Files/Apache Software Foundation/Apache2.2/
開啟命令視窗,進入到D:/Program Files/Apache Software Foundation/Apache2.2/bin,
在命令列中使用如下命令:htpasswd -c D:/svnroot/passwords.auth tom
斷行符號後會提示輸入密碼,輸入tom,再斷行符號會提示輸入確認密碼,再次輸入tom就可以了
命令列中的參數-c表示建立一個檔案,第一次運行建立好了,再添加別的使用者的時候就
不要再使用這個參數了,如我再添加cat和hello使用者
htpasswd D:/svnroot/passwords.auth cat
htpasswd D:/svnroot/passwords.auth hello
這樣建立的使用者密碼預設使用的MD5加密,你開啟檔案以後看到的可能就是如下格式:
tom:7Z/80Al6$WTqVrBgshc/Bxi6YYkUga1$apr1$
cat:kNrG459T$qfAZ7MpgpFcdd2xp25gST1$apr1$
到此我們就添加好了三個使用者tom,cat和hello,他們的密碼分別為tom,cat,world
* 配置認證許可權檔案access.auth
直接在D:/svnroot下建立access.auth檔案即可,然後填入如下內容
[groups]
dev1 = tom,cat #開發使用者組1
dev2 = hello #開發使用者組2
[/]
* = r #設定所有使用者對根目錄有讀許可權,即瀏覽許可權
[/aaa]
@dev1 = rw #設定dev1群組成員對aaa目錄有讀和寫入權限
@dev2 = #設定dev2群組成員對aaa目錄沒有任何許可權
[/bbb]
@dev1 = #設定dev1群組成員對bbb目錄沒有任何許可權
@dev2 = rw #設定dev2群組成員對bbb目錄有讀和寫入權限
[/ccc]
@dev1 = #設定dev1群組成員對ccc目錄沒有任何許可權
@dev2= #設定dev2群組成員對ccc目錄沒有任何許可權
到此我們為不同使用者分組定義了許可權,大家可以使用不同的使用者
進行browse/import/checkout實驗
訪問路徑為http://localhost/svn
*配置多倉庫的使用者權限
* 首先在建立一個倉庫svn2
* 在D:/svnroot目錄下首先執行D:/svnroot/mkdir svn2建立子目錄svn2
* 然後執行svnserve create D:/svnroot/svn2建立倉庫svn2
修改開啟Apache安裝目錄下conf目錄中的httpd.conf檔案,將游標移到問檔案的最末端
加入的代碼修改如下:
<Location /svn>
DAV svn
#這裡將SVNPath修改為SVNParentPath,目前的目錄為父目錄
#倉庫svn1和svn2在這個父目錄下
SVNParentPath D:/svnroot
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile "D:/svnroot/passwords.auth"
AuthzSVNAccessFile "D:/svnroot/access.auth"
Require valid-user
</Location>
* 認證使用者檔案passwords.auth不需要做任何修改
* 認證許可權檔案access.auth修改如下:
[groups]
dev1 = tom,cat #開發使用者組1
dev2 = hello #開發使用者組2
[svn1:/]
* = r
[svn1:/aaa]
@dev1 = rw #設定dev1群組成員對svn1倉庫下的aaa目錄有讀和寫入權限
@dev2 = #設定dev2群組成員對svn1倉庫下的aaa目錄沒有任何許可權
[svn1:/bbb]
@dev1 = #設定dev1群組成員對svn1倉庫下的bbb目錄沒有任何許可權
@dev2 = rw #設定dev2群組成員對svn1倉庫下的bbb目錄有讀和寫入權限
[svn1:/ccc]
@dev1 = #設定dev1群組成員對svn1倉庫下的ccc目錄沒有任何許可權
@dev2= #設定dev2群組成員對svn1倉庫下的ccc目錄沒有任何許可權
[svn2:/]
@dev1 = #設定dev1群組成員對svn2倉庫沒有任何許可權
@dev2= #設定dev2群組成員對svn2倉庫沒有任何許可權
到此我們為不同使用者分組對不同倉庫定義了許可權,大家可以使用不同的使用者
進行browse/import/checkout實驗
倉庫1訪問路徑為http://localhost/svn/svn1
倉庫2訪問路徑為http://localhost/svn/svn2
對父目錄http://localhost/svn/,任何使用者都沒有任何存取權限
5.總結
經過以上幾個部分的介紹,初步實現了Apache2.2.9+Subversion1.5.5(for Apache2.2.X)在windows下的配置與使用權限設定,並且根據單倉庫和多倉庫的不同情況,進行了分別的分析與配置,基本可以滿足日常開發的需要,在實際的開發中,可以根據實際人員和項目的許可權安排,進行相應的配置。
以上經過本人配置實驗,配置成功,通過TortoiseSVN 的版本瀏覽器可以簡單實現了版本的管理