[轉]Win7 64位搭建本地SVN伺服器 Apache+Subversion

來源:互聯網
上載者:User

標籤:style   blog   http   color   使用   strong   

轉載地址:http://blog.sina.com.cn/s/blog_4f072a7001015j5z.html

一、工具下載
  • 01.SVN 伺服器Subversion:Setup-Subversion-1.6.17.msi
  • 02.SVN 用戶端TortoiseSVN:本文選用版本為(64位)TortoiseSVN-1.6.16.21511-x64-svn-1.6.17.msi
  • 03.TortoiseSVN中文語言套件:本文選用版本為LanguagePack_1.6.16.21511-x64-zh_CN.msi
  • 04.XAMPP(Apache+MySQL+PHP整合安裝包):XAMPP版本為1.7.4

Subversion的版本和TortoiseSVN的版本配合很重要,並不是什麼版本之間都可以正常使用的。

二.安裝XAMPP:

一路NEXT。本文安裝至C:\xampp

三.安裝subversion:

一路NEXT。本文將subversion安裝至C:\Subversion\

如果本機安裝有360安全衛士,則會出現警告,選擇允許。

四、配置Apache

01、進入Sibversion的安裝目錄(本文為C:\Subversion\)。

為了使 Subversion 與 dav 模組通訊,需要安裝 mod_dav_svn 外掛程式,可以在 Subversion 的安裝目錄C:\Subversion\bin中找到。將其拷貝到 Apache 安裝目錄的 modules 檔案夾下。接下來就是配置 Apache 的 httpd.conf 檔案,讓 Apache 在啟動的時候載入上述模組。

02、編輯Apache的httpd.conf(C:\xampp\apache\conf)

找到以下內容:

#LoadModule dav_module modules/mod_dav.so

修改為:

LoadModule dav_module modules/mod_dav.so

即去掉前面的注釋符號“#”,沒有上面這句,請自行添加。完成之後再後面繼續添加如下內容:

LoadModule dav_svn_module modules/mod_dav_svn.so

03、設定版本庫目錄:

本例中我在G盤建立了svn的管理目錄,打算將版本庫存放在G:\svn\project檔案夾下,將如下代碼添加進httpd.conf末尾。(複製代碼時,注意修改”符號為英文半形)

<Location /svn/>
DAV svn
SVNListParentPath on
SVNParentPath “G:/svn/project”
< /Location>

重啟Apache,至此本地環境完成。

說明:

  • <Location /svn/>:版本庫的url是http://localhost/svn/
  • DAV svn:告訴Apache是哪個模組響應http://localhost/svn/的請求,此刻是Subversion模組。
  • SVNParentPath “G:/svn/project” :告訴Subversion需查看的版本庫位於G:/svn/project下,同時project下的每個子目錄都是一個版本庫。例如在G:/svn/project下有多個版本庫 repos1,repos2 等等,可以通過 http://localhost/repos1,http://localhost/repos2 來訪問。
04、通過Http訪問SVN伺服器

Subversion有兩種運行方式,一種是基於Apache Http Server,另外一種是Subversion Standalone Server。

Apache Http Server是基於Apache Http Server的Subversion,這樣做幾個好處:

  • A.能使用WebDAV協議。
  • B.通過Apache以HTTP方式穿透防火牆,便於在互連網環境使用,能使用瀏覽器作為用戶端工具瀏覽源碼倉庫。
  • C.可以很容易的支援到SSPI(Windows域認證)和LDAP(AD?),這些都是Apache本身就支援的。
  • D.能得到比較完善的Apache安全認證系統,比如SSL加密串連。

通過瀏覽器輸入http://127.0.0.1/svn/訪問版本庫(一個初始版本庫見):

  1. 如 果你按照上文的一步步操作,那麼,目前已經可以實現通過瀏覽器直接存取http://127.0.0.1/svn/ 需要注意的是Location 設定中最後要加上/,應該是<Location /svn/>而不是<Location /svn>
  2. 如果想讓“http://localhost/svn”也起作用的話,需要在</Location>的後面增加重新導向的設定:RedirectMatch ^(/svn)$ $1/

一個初始版本庫

這表示 Apache 的 dav_svn 模組已經可以正常工作了。使用者可以使用任何一種 Subversion 的用戶端通過 Http 協議訪問你的版本庫。

現在你的版本庫任何人都可以訪問,並且有完全的寫操作許可權。也就是說任何人都可以匿名讀取,修改,提交,以及刪除版本庫中的內容。

五、安裝TortoiseSVN:

先安裝TortoiseSVN-1.6.16.21511-x64-svn-1.6.17.msi再安裝中文語言套件LanguagePack_1.6.16.21511-x64-zh_CN.msi

本文所用軟體及其版本

注意:如果你的系統安裝有卡巴斯基這類殺毒軟體,請務必將TortoiseSVN安裝目錄bin目錄下的TortoiseProc.exe設定為信任程式,否則可能導致在使用TortoiseSVN“匯入”至版本庫功能時發生錯誤。

卡巴斯基

六、測試SVN
  • 假設在你的D盤有一個項目workspace檔案,那麼我們在G:\svn\project下建立一個同名檔案夾:G:\svn\project\workspace
  • 右鍵點擊G:\svn\project\workspace檔案,TortoiseSVN->在此建立版本庫(Y)(英文版為Tortoise->Create repository here)
  • 然後你就會看到G:\svn\project\workspace 裡面多了conf, db, hooks, lock…等檔案,版本庫建立成功。
  • 返回D盤的workspace,右鍵點擊該檔案夾,執行TortoiseSVN->匯入(I)(英文版為Tortoise->Import)
  • 在彈出的對話方塊中,版本庫URL內輸入: http://localhost/svn/workspace/trunk/。這裡的http://localhost/svn/就相當於G:\svn\project\。
  • 然後把D盤裡面的workspace刪除,我們好測試是否成功了。
  • 在任何空白檔案夾裡面,右鍵點擊SVN檢出(K)(英文版為SVN Checkout),版本庫URL輸出http://localhost/svn/workspace/trunk/,將得到workspace的項目源檔案。

關於上文提到的trunk:

我們在一些著名開源項目的版本庫中,通常可以看到trunk, branches, tags等三個目錄。由於SVN固有的特點,目錄在SVN中並沒有特別的意義,但是這三個目錄卻在大多數開源項目中存在…(詳細介紹)

—————————————— END ————————————————

關於SVN存取權限控制的介紹:

通過上文的相關操作,任何人都可以匿名讀取,修改,提交,以及刪除版本庫中的內容。顯然大部分場合這是不符合需求的。那麼如何進行使用權限設定呢,Apache 提供了基本的使用權限設定:

配置SVN存取權限一.使用權限設定

首先需要建立一個使用者檔案。Apache 提供了一個工具 htpasswd,用於產生使用者檔案,可以在 Apache 的安裝目錄下找到。具體使用方法如下:

01.建立passwd檔案並添加使用者/密碼:

svn的存取權限將由passwd檔案中的使用者名稱/密碼來限制。

運行->cmd進入DOS命令操作視窗,並切換目前的目錄到C:\xampp\apache\bin,輸入如下命令:

htpasswd -c G:\svn\project\conf\passwd username

passwd是檔案名稱,username是你的使用者名稱,根據實際需要自行命名,我們將檔案建立到G:\svn\project\conf\目錄下(相關目錄請自行建立)。–c表示建立,第二次就不需要寫–c了。(win平台預設對密碼MD5加密)

具體操作如:

建立passwd檔案並添加使用者/密碼

關於htpasswd命令更多其他動作請藉助Google。

接下來修改 httpd.conf,在 Location 標籤中加入如下內容:

AuthType Basic
AuthName “svn repos”
AuthUserFile “G:/svn/project/conf/passwd”
Require valid-user

操作完成之後,重啟Apache。 開啟瀏覽器訪問版本庫。Apache 會提示你輸入使用者名稱和密碼來認證登陸了,現在只有 passwd 檔案中設定的使用者才可以訪問版本庫。也可以配置只有特定使用者可以訪問,替換上述 “Require valid-user” 為 “Require user tony robert” 將只有 tony 和 robert 可以訪問該版本庫。

說明:

  • AuthType Basic:啟用基本認證,使用者名稱/密碼。
  • AuthName “Subversion Repositories” :彈出輸入認證資訊框的說明,支援中文。
  • AuthUserFile “G:/svn/project/conf/passwd” :指定用來儲存認證使用者名稱和密碼的檔案。
  • require valid-user :指定只有輸入正確使用者名稱/密碼的使用者才可以正常訪問http://localhost/svn/ 。

有的時候也許不需要這樣嚴格的存取控制,例如大多數開源項目允許匿名的讀取操作,而只有認證使用者才允許寫操作。為了實現更為細緻的許可權認證,可以使用 Limit 和 LimitExcept 標籤。例如可以繼續在 Location 標籤中添加如下內容:

<LimitExcept GET PROPFIND OPTIONS REPORT>
require valid-user
< /LimitExcept>

如上配置將使匿名使用者有讀取許可權,而限制只有 passwordfile 中配置的使用者可以使用寫操作。如果這還不能滿足你的要求,可以使用 Apache 的 mod_authz_svn 模組對每個目錄進行認證操作。

02. 建立控制使用者存取權限的檔案authz

首先需要讓 Apache 將 mod_authz_svn 模組載入進來。在 Subversion 的安裝目錄中找到 mod_auth_svn 模組,將其拷貝到 Apache 安裝目錄的 modules 子目錄下。

然後修改 httpd.conf 檔案,找到

LoadModule dav_svn_module modules/mod_dav_svn.so

在其後面加上

LoadModule authz_svn_module modules/mod_authz_svn.so

現在可以在 Location 標籤中使用 authz 的功能了。一個基本的 authz 配置如下:

<Location /svn/>
DAV svn
SVNListParentPath on
SVNParentPath “G:/svn/project/”
AuthType Basic
AuthName “Subversion Repositories”
AuthUserFile “G:/svn/project/conf/passwd”
AuthzSVNAccessFile “G:/svn/project/conf/authz”
Satisfy Any
Require valid-user
< /Location>

說明:AuthzSVNAccessFile “G:/svn/project/conf/authz” :指定用來儲存訪問版本庫控制許可權的檔案。

這裡的Apache設定檔中,不需要加入<Limit>或<LimitExcept>標籤。但加入了Satisfy Any的設定,其表示在同時啟用了Allow(允許)和Require的情況下,指定相關策略的,一共有兩個備選值,All表示使用者必須同時滿足Allow和Require的條件,而Any則是滿足其中之一即可。

這這裡,Satisfy Any用於允許先用匿名方式嘗試訪問,並根據authz對匿名使用者的控制給予存取權限。若沒有這句話,則無論authz中是否加入了“*=r”的寫法,匿名使用者都是無法訪問的。

AuthzSVNAccessFile 指向的是 authz 的策略檔案,詳細的許可權控制可以在這個策略檔案中指定,如:

#兩個分組:admin組,developers組
[groups]
admin = FUCKGFW //管理員
developers = jimmy michel spark sean steven tony robert //開發人員
#在根目錄下指定所有的使用者有讀許可權
[/]
* = r
#追加 committers 組使用者有讀寫權限
@committers = rw
#在 branches/dev 目錄下指定 developers 組的使用者有讀寫權限
[/branches/dev]
@developers = rw
#在 /tags 組下給予使用者 tony 讀寫權限
[/tags]
tony = rw
#禁止所有使用者訪問 /private 目錄
[/private]
* =
#給 committers 組使用者讀許可權
@committers= r

在 G:/svn/project/中建立一個記事本檔案,檔案名稱為authz,無尾碼,輸入下面的內容:

[groups]
admin = FUCKGFW
[/]
* = r
@admin = rw

本範例只指定了一個Administrator 群組,和一個管理使用者。

操作完成之後,重啟Apache。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.