1.準備
操作系統 :WINDOWS 2003
Apache 2.0.59
svn-win32-1.4.6.zip
TortoiseSVN-1.4.8.12137-win32-svn-1.4.6.msi
2安裝
2.1安裝Apache
(1)下載Apache
地址http://httpd.apache.org/download.cgi
注意:Apache低於2.0.54的Windows版本的存在編譯問題,低於2.0.54的版本不能與Subversion 1.2一起工作。
(2) 安裝
注意:如果你已經有了IIS或其他監聽80段口的程序,安裝會失敗,如果發生這種情況,直接到程序的安裝目錄/Apache Group/Apache2/conf,打開httpd.conf。編輯文件的Listen 80爲其他可用的端口,例如Listen 8008,然後重新啓動-這樣就不會那個問題了,或者將其它應用的端口進行改之。
(3)檢查
安裝完成後瀏覽 http://localhost:8008/ 若成功,可看到apache歡迎頁面。
2.2安裝Subversion
(1)下載 Subversion
地址:http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91
在本實例中,選擇下載svn-win32-1.4.6.zip此版本.
(2)安裝
將svn-win32-1.4.6.zip解壓到安裝程序的目錄下。
3 配置Apache
步驟1 從svn-win32-1.4.6/bin 中將mod_authz_svn.so mod_dav_svn.so複製到Apache Group/Apache2/modules下,再將svn-win32-1.4.6/bin目錄下的所有dll文件全部複製到Apache Group/Apache2/bin文件夾下。
步驟2 找到Apache Group/Apache2/conf/httpd.conf文件,然後去掉如下幾行的註釋(刪除 ''#''標記):
#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule dav_module modules/mod_dav.so
將下面兩行添加到LoadModule部分的最後。
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
進行如上後續修改後完成了SVN+Apache之間的WebDav的工作了。重啓Apache以後可看到如下圖:
這是安裝最終的圖,圖中狀態欄顯示Apache/2.0.59(Win32) SVN1.4.6 DAV/2是由於還安裝了mod_python,此步驟稍後將講解,如上安裝好後應顯示爲Apache/2.0.59(Win32) SVN1.4.6 DAV.
4 配置SubVersion
1.2.1建立版本庫
首先建立一個用於存在SVN項目的版本庫,本例中在D盤驅動器中建立目錄var/svnhome,可通過如下命令建立版本庫,當然如果你需要建立多個版本庫只需將名稱進行換名即可。
首先以cmd命令窗口進入svn-win32-1.4.6/bin目錄結構下,輸入:
>svnadmin create --fs-type fsfs D:/var/svnhome/projects回車,等待提示創建完成;完成後則進行相關密碼以及權限設置。
1.2.2 設置密碼文件
以cmd命令窗口進入路徑Apache Group/Apache2/ bin目錄下,然後輸入:
> htpasswd -c D:/var/svnhome/projects/conf/<filename> <username>
本例中filename名稱使用passwordfile,username名稱使用admin(注意filename無需後綴名),這樣便可在var/svnhome/projects/conf目錄下創建一個用戶名爲admin的passwordfile文件,此文件將在後面配置權限所用。
此後添加用戶,可使用如下命令:
>htpasswd filename <username>
刪除用戶,使用如下命令:
>htpasswd -D filename <username>
若對密碼不想加密可使用-cp參數,windows平臺下默認是MD5加密。
1.2.3 設置權限文件
用文本編輯器在var/svnhome/projects/conf路徑下生成名爲svnaccessfile的文件,此名稱將在Apache Group/Apache2/conf/httpd.conf配置文件中所用,此處不使用擴展名。編輯一下內容:
[groups]
committers = admin
developers = Allen
[/]
* = r
@developers = r
@committers = rw
[projects:/]
@ developers = rw
基本含義是根目錄下任何人有讀權限,committers組有讀寫權限;admin對projects讀寫權限,而developers組只有讀的權限。
備註: 如果有中文路徑,那要把文件存成UTF8格式,不建議使用中文路徑,這在編程當中是嚴格禁止的.
1.2.4 配置服務
編輯Apache Group/Apache2/conf/httpd.conf文件,添加下面代碼。
<Location /svn>
DAV svn
SVNPath "D:/var/svnhome/projects"
AuthType Basic
AuthName "Subversion repositories"
AuthUserFile "D:/var/svnhome/projects/conf/passwordfile"
AuthzSVNAccessFile "D:/var/svnhome/projects/conf/svnaccessfile"
Require valid-user
SVNAutoversioning on
ModMimeUsePathInfo on
</Location>
備註: 如果使用<Location /svn/>可列出D:/var/svnhome/projects 下的版本庫,若爲<Location /svn>則不能訪問http://127.0.0.1/svn下的項目,而只能這樣訪問,如http://127.0.0.1/svn/<projectname>
配置內容說明
設置 |
解釋 |
<Location> |
意思是Subversion版本庫的URL是http://ipaddress/svn/ |
DAV svn |
告訴Apache是哪個模塊響應那個URL的請求-此刻是Subversion模塊。 |
SVNPath |
告訴Subversion需要查看的版本庫位於D:/var/svnhome/projects之下 |
AuthType Basic |
激活基本認證,就是用戶名/密碼 |
AuthName |
用來說明彈出要求輸入認證信息的對話框信息,可以使用中文. |
AuthUserFile |
指定使用認證密碼的文件 |
AuthzSVNAccessFile |
位置Subversion版本庫的訪問控制權限的路徑文件 |
Require valid-user |
指定只有輸入了正確的用戶/密碼的用戶可以訪問URL |
(另外如果當此時通過訪問http://127.0.0.1:8008/svn提示403 Forbidden錯誤的信息的話,主要是由於svnserve.conf此文件中的[general]內容password-db = passwordfile內容加入(或者將原來的#去掉,同時將passwd修改你所創建的密碼文件,本例中爲passwordfile),也可以實現根目錄的訪問了!)
備註:
這樣做,還是會報403錯誤,將AuthzSVNAccessFile "D:/var/svnhome/projects/conf/svnaccessfile"註釋就好了,可能是訪問控制權限的路徑文件有問題。
1.25 安裝TortoiseSVN(可選)
此工具是客戶端軟件,主要可以用於從服務器上check版本庫項目以及updata與commit等相關SVN的管理操作,其下載地址爲:http://tortoisesvn.net/downloads,另外還可以下一個語言包,都在給其的subversion官方網站上能下到.
備註:
裝了TortoiseSVN後,導致我的XMLSPY 2005出錯了,後來下了個XMLSPY 2006
5 簡單應用
1) Import
選擇一個文件夾,點擊右鍵,選擇“TortoiseSVN”->“Import”
彈出一框,在URL of repository輸入 http://localhost:8008/svn,點OK
就會將該目錄下的文件信息”發送”到版本庫。
2) SVN CheckOut
點擊右鍵,選擇“SVN CheckOut”
3) Commit
如果文件有修改,選擇“TortoiseSVN”->“Commit”