天天看點

初步實作了Apache2.2.9+Subversion1.5.5在windows下的配置與權限設定

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檔案的尾部添加

初步實作了Apache2.2.9+Subversion1.5.5在windows下的配置與權限設定

<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

初步實作了Apache2.2.9+Subversion1.5.5在windows下的配置與權限設定

</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 的版本浏覽器可以簡單實作了版本的管理