天天看點

WIN2K3下SVN伺服器端的安裝(apache + svn)

根據網上資料結合自己的項目情況整理的:

1.準備工作

從http://httpd.apache.org/download.cgi 下載下傳最新版本的 Apache,本文下載下傳的是:apache_2.2.10-win32-x86-openssl-0.9.8i.msi

從http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=8100 下載下傳最新版本的Subversion(For win32),本文用的是:Setup-Subversion-1.5.3.msi

2.安裝apache

一旦有了 Apache2 安裝程式,輕按兩下它,然後它會指導你的安裝過程。安裝目錄為:C:\ApacheGroup\Apache2.2,建議為所有使用者在 80 端口安裝 Apache 服務。注意: 如果你已經有了 IIS 或其他監聽 80 端口的程式,安裝會失敗。如果發生這種情況,直接到程式的安裝目錄 \ApacheGroup\Apache2\conf,打開 httpd.conf。編輯檔案的 Listen 80 為其他可用的端口,例如 Listen 81,然後重新啟動 - 這樣就不會那個問題了。

現在可以測試 Apache 伺服器是否正确運作,将浏覽器指向 http://localhost/ , 将會看到一個預先配置的網站。

3.安裝Subversion

運作Subversion安裝程式,并根據指導安裝,安裝目錄設定為C:\Subversion。

安裝完畢後,從 Subversion 安裝目錄将 /bin/*.dll 複制到 Apache 的 bin 目錄,如果提示檔案已經存在,選擇不覆寫。再把Subversion\bin 目錄下的mod_authz_svn.so和mod_dav_svn.so兩個檔案拷貝到Apache2.2\modules。

使用記事本之類的文本編輯器修改Apache的配置檔案httpd.conf,做出如下修改:

去掉以下行的注釋:
#LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so

把下面兩行加到的最後:
LoadModule dav_svn_module modules/mod_dav_svn.so 
LoadModule authz_svn_module modules/mod_authz_svn.so
      

4.建立并設定Subversion工作目錄

在D盤建立目錄:d:\svnroot;

把C:\ApacheGroup\Apache2.2\bin加到環境變量path中;

運作cmd,cd到d:\svnroot目錄下,執行以下指令建立密碼檔案:

htpasswd -c svn.passwd jeffrey

建立權限控制檔案:d:\svnroot\svn.accessfile并用記事本輸入:

[groups]
admin = jeffrey
[/]
* = rw      

打開apache的httpd.conf,在檔案的最後輸入:

<Location /svn/> 
DAV svn 
SVNListParentPath on 
SVNParentPath D:\svnroot 
SVNIndexXSLT "/svnindex.xsl" 
AuthType Basic 
AuthName "Subversion repositories"
AuthUserFile "d:/svnroot/svn.passwd"
AuthzSVNAccessFile "d:/svnroot/svn.accessfile"
Require valid-user
</Location>

      

到http://tortoisesvn.tigris.org/svn/tortoisesvn/trunk/contrib/other/svnindex

(如果通路這個連結需要認證,輸入使用者名稱 guest,無需密碼)

下載下傳三個檔案svnindex.xsl, svnindex.css 和 menucheckout.ico 放到的文檔根目錄中(C:\ApacheGroup\Apache2.2\htdocs)

重新開機apache,在浏覽器中輸入http://localhost/svn/,根據提示輸入上面建立的使用者名和密碼便可以看見svn的根目錄,目前一個代碼倉庫也沒有。

5.倉庫的設立及命名規則

下面以vpm項目為例來說明倉庫建立的過程:

把C:\Subversion\bin增加到環境變量的path中,然後運作cmd,cd到D:\cvsroot

執行指令建立一個新的倉庫:svnadmin create rep_vpm

用浏覽器打開http://localhost/svn/ 便可以看到剛剛建立的代碼倉庫rep_vpm

倉庫的設立采用一個項目一個倉庫,即每新增一個項目就建立一個代碼倉庫,倉庫的命名規則為:rep_+項目名稱。

在倉庫下面設立三個檔案夾:trunk/,tags/,branches/,(通過SVN用戶端建立)

這三個目錄的用途如下:

trunk主分支,tags裡程碑釋出,branches分支開發

6.權限控制

權限控制主要是通過配置檔案d:\svnroot\svn.accessfile來實作。

[/]

* = rw

表示認證通過的任何使用者都擁有對所有倉庫的讀寫權限,現在我們需要修改權限控制規則,把svn.accessfile改成如下:

[groups]
admin = jeffrey
vpm_users = jeffrey, howard
[/]
* = r
[rep_vpm:/]
@admin = rw
@vpm_users = rw
* =      

上面的配置表示

(1).建立了兩個group,admin和vpm_users,其中admin有一個使用者jeffrey,vpm_users有兩個使用者jeffrey和howard

(2).任何人對根目錄隻有隻讀權限

(3).admin和vpm_users組的使用者對倉庫rep_vpm有讀寫權限,其他人沒有任何權限

接下來建立使用者,jeffrey之前已經建立了,用以下指令建立兩個使用者howard和gavin

htpasswd svn.passwd howard

htpasswd svn.passwd gavin

這樣,jeffrey, howard, gavin 都有對根目錄/svn/的隻讀權限,jeffrey,和howard對rep_vpm有讀寫權限,gavin對倉庫rep_vpm沒有任何權限,如果要讓gavin有倉庫rep_vpm有讀寫權限,就把gavin加入到vpm_users組中即可。