一、安裝
安裝 Apache 2.2 安裝 Subversion 1.5.5
找到 Subversion 安裝目錄下的以下文件:
bin/mod_authz_svn.so bin/mod_dav_svn.so
復制到 Apache 安裝目錄下 modules 目錄中
bin/intl3_svn.dll bin/libdb*.dll
復制到 Apache 安裝目錄下 bin 目錄中(這里似乎并不是必須的,我猜想這里或許是為了支持 Berkeley DB 而所作的操作,但我并不打算深入研究下去)
二、環(huán)境
假設 Subversion 安裝在 D:\SVN\Subversion 目錄下 假設創(chuàng)建 D:\SVN\Repositories\ 目錄作為版本庫總目錄 假設在 D:\SVN\Repositories\ 中創(chuàng)建目錄iSLeeBlog,并在其中創(chuàng)建版本庫,假設已經配置好用戶授權,那么應該可以通過 svn://localhost/iSLeeBlog 訪問版本庫。 假設統(tǒng)一將Apache的SVN項目配置文件放在 D:\SVN\conf 目錄下 假設Apache的默認端口號為8080
三、配置Subversion版本庫管理服務器
找到創(chuàng)建的版本庫目錄下的配置文件,例如:D:\SVN\Repositories\iSLeeBlog\conf\
將 passwd 文件改名為 passwd.svn(也可以不改名,這里是為了結構更清晰)
用文本編輯器修改 svnserve.conf 文件,找到以下兩行
#password-db = passwd ... #authz-db = authz
修改為:
password-db = passwd.svn ... authz-db = authz
這里 authz 就是授權文件的名稱,在 Subversion 和 Apache 中可以使用相同的授權文件,但無法使用相同的 passwd 文件,因為 Apache 是以加密方式存儲密碼,而 Subversion 使用明文儲存密碼,所以上面將 Subversion 生成的 passwd 文件改名,說明其僅用在 Subversion 下。
思考:這里可以使用相同的賬號文件嗎?顯然,我對 Apache 的配置還是不太熟悉,兩個賬號文件需要同步維護比較麻煩,如果您知道如何解決,請您幫助我,謝謝。
如何配置授權文件不再詳述,請自行查看授權文件中自帶的注釋,已經解釋的非常清晰。
四、配置Apache服務器
找到 Apache 安裝目錄下 conf/httpd.conf 文件,用文本編輯器修改:
找到以下兩句取消注釋:
#LoadModule dav_fs_module modules/mod_dav_fs.so #LoadModule dav_module modules/mod_dav.so
增加以下兩句
LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so
使用 Apache 安裝目錄下的 bin/htpasswd.exe 可執(zhí)行文件生成授權文件
第一次生成,使用 -cb 參數(shù):
htpasswd -cb [filename] [username] [password]
例如:
htpasswd -cb passwd.apache islee 123
添加新用戶,使用 -b 參數(shù):
htpasswd -b passwd.apache another 456
將生成的 passwd.apache 文件移動到 D:\SVN\Repositories\iSLeeBlog\conf 目錄下
a) 配置單項目
在Apache的conf/httpd.conf文件,在末尾添加以下內容
#配置虛擬目錄 <location /svn/iSLeeBlog> #引用遠程訪問模塊 DAV svn
#版本庫路徑 SVNPath D:\SVN\Repositories\iSLeeBlog
#授權文件 AuthzSVNAccessFile D:\SVN\Repositories\iSLeeBlog\conf\authz
#所有用戶都需要身份驗證 Satisfy Any Require valid-user
#驗證方式 AuthType Basic
#項目的名稱 AuthName "iSLee's Blog Project"
#用戶文件 AuthUserFile D:\SVN\Repositories\iSLeeBlog\conf\passwd.apache </location>
b) 配置多項目
在 httpd.conf 文件末尾增加一下一句,作用是引用指定目錄下的所有 project 文件
Include D:\SVN\conf\*.project
然后在指定目錄,這里是 D:\SVN\conf 中創(chuàng)建單個項目配置文件 iSLeeBlog.project 文本文件
iSLeeBlog.project 文件中的內容同“a) 配置單項目”節(jié)中的內容完全相同,新的項目之需要繼續(xù)創(chuàng)建 project 文件,并根據(jù)需要更改虛擬目錄路徑以及授權文件名稱即可。
配置以后需要重啟 Apache 服務器。
五、訪問
如果在局域網中,那么可以輸入“svn://localhost/iSLeeBlog”即可訪問版本庫。
如果遠程訪問Apache服務器,那么可以在瀏覽器或客戶端軟件中輸入“http://yourdomain or IP/svn/iSLeeBlog”即可訪問iSLeeBlog項目。
六、備注
Subversion 的客戶端 TortoiseSVN 是一個很棒的工具,雖然它與本文無關,但多看它附帶的幫助文檔,你將獲益匪淺
以上文檔由 iSLee 編寫維護,最后更新日期:2009年3月6日
附,svn服務器配置:
1 下載服務器端 2 安裝服務器端 3 創(chuàng)建一個版本庫,命令:svnadmin create 新版本庫路徑 4 修改用戶名和口令。進入新版本庫所在目錄, 找到conf目錄下的svnserve.conf,將其中 # password-db = passwd 的#去掉。 找到conf目錄下的passwd文件,將其中# harry = harryssecret 和 # sally = sallyssecret 改成自己的用戶名和密碼。=前面是用戶名,=后面是密碼,用戶名前面不要有空格。 5 啟動SVN服務器 方式一:命令行方式: svnserve.exe -d -r 版本庫路徑 方式二:服務方式:sc create svnserve binpath= "SVN的BIN目錄\svnserve.exe --service --root 版本庫路徑" displayname= "Subversion" depend= tcpip start= auto 如sc create svnserve binpath= "e:\svn\bin\svnserve.exe --service --root e:\svn\repos" displayname= "svn" depend= tcpip start= auto,注意:版本庫路徑后面不要帶\。 其中sc命令不是windows自帶的,是微軟.net sdk中的一個工具。
至此SVN服務器已經能運行,SVN服務器的訪問地址為 svn://服務器名或IP地址
示例:authz 文件
# 以[*/]標記的為項目路徑 # rw 表示讀寫 # r 表示只讀 # *= 禁止所有用戶訪問,*代表所有用戶,權限為空代表沒有任何權限 # 可以為一個目錄賦予多個組或多個用戶
# 定義repos儲存庫根目錄的訪問權限 [repos:/] @axtic=rw #定義組axtic下面的用戶擁有讀寫權限 azheng=rw #定義用戶azheng有讀寫權限 10yue=rw #定義用戶10yue有讀寫權限 dougen=rw #定義用戶dougen有讀寫權限
#定義test儲存庫下test目錄的訪問權限 #[test:/test] #user=r
#下面是用戶組的配置,左邊是組名,右邊是隸屬于改組的用戶,多個用戶以逗號(“,”)隔開。 #組名可以由字母數(shù)字下劃線構成 [groups] axtic=azheng,10yue,dougen
|