標籤: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/訪問版本庫(一個初始版本庫見):
- 如 果你按照上文的一步步操作,那麼,目前已經可以實現通過瀏覽器直接存取http://127.0.0.1/svn/ 需要注意的是Location 設定中最後要加上/,應該是<Location /svn/>而不是<Location /svn>
- 如果想讓“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。