Windows下部署基於Apache的SVN服務器

參考自

http://www.cnblogs.com/blueskyc/articles/1376982.html

http://blog.csdn.net/zhuxiaowenlinda/article/details/4320094

http://www.blogjava.net/hadeslee/archive/2008/03/12/185788.html

http://blog.csdn.net/kimizhou_blog/article/details/7481959


一.安裝Apache

   安裝windows版的Apache,我用的2.0.55版(apache_2.0.55-win32-x86-no_ssl.msi), 瀏覽器輸入http://localhost  出現正確提示證明Apache安裝完畢,我的Apache主目錄(D:\Program Files (x86)\Apache Group\Apache2)


二. 安裝Subversion (svn-1.2.3-setup.msi),(D:\Program Files (x86)\Subversion)

安裝的時候選擇綁定Apache2.0.0,同時將Subversion主目錄下的bin目錄中的mod_dav_svn.so、mod_authz_svn.so拷貝到Apache主目錄下的modules目錄中。

*注意Apache的版本應該和Subversion版本匹配,否則會出現各種問題,我的這兩個版本測試通過,還有我還試了一個搭配爲,Apache2.2.25和Subverion1.8.5, httpd-2.2.25-win32-x86-no_ssl.msi, Setup-Subversion-1.8.5.msi


三. Apache與Subversion集成

 1.  修改Apache主目錄下的conf下的httd.conf

#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule dav_module modules/mod_dav.so

修改爲: 
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

* 此刻可以先重啓Apache服務,即restart命令,看Apache是否識別出剛纔拷貝的so文件,Apache2.2版本可能會無法識別so文件,可能是要和subversion的版本對應的關係。假如Apache服務無法啓動,請查看其主目錄下logs文件夾下的error.log,看看其具體錯誤日誌。


 2.同時在此文件中配置Apache中與SVN中的交互

<Location /svn> #意味着可以通過像這樣的URL(http://myIP/svn)來訪問Subversion版本庫
DAV svn # 告訴Apache哪個模塊負責服務像那樣的URL--在這裏就是Subversion模塊
SVNParentPath C:\svn_repo #告訴Subversion在目錄C:\svn_reop下尋找版本庫,即svn數據倉庫,此刻就是普通一文件夾,自己創建
AuthType Basic #啓用基本的驗證,使用用戶名/密碼驗證
AuthName "test123" #數據倉庫的現實名稱
AuthUserFile c:\svn_repo\passwd   #passwd問密碼和用戶文件,用來驗證用戶的用戶名及密碼,此文件命名隨意(passwd),後面創建
AuthzSVNAccessFile C:\svn_repo\svnaccessfile #權限控制文件,限定各個用戶或組在版本庫中目錄的訪問權限,此文件命名也是隨意的,後面創建
Require valid-user #限定用戶只有輸入正確的用戶名及密碼後才能訪問這個路徑
</Location>

  3. 創建passwd和svnaccessfile文件

  切換到Apache主目錄下的bin

bin\htpasswd -c passwd <username>

比如: bin\htpasswd -c c:\svn_repo\passwd admin
命令分析:
 c:\svn_repo\passwd 表示會在:c:\svn_repo目錄下創建一個passwd文件
 admin 表示用戶名
當要增加一個新用戶叫 test
  bin\htpasswd -m c:\svn_repo\passwd test
  即不覆蓋剛纔創建的passwd,而只是在文件後面多添加一條用戶記錄


 自身創建一個普通文件命名爲svnaccessfile,輸入以下內容

#組配置  組 = 用戶名

[groups]        

super_admin = admin

user = test



# 爲所有庫指定默認訪問規則

# 根目錄下,超級管理員具有讀寫權限,其他人沒有任何權限

[/]
@super_admin = rw
* = 


# 爲test1版本庫制定權限

#admin組擁有讀寫權限

#user組只有讀取權限
#爲了便於理解,故意命名爲test1,這樣瀏覽器也可以通過http://myIP/svn/test1 訪問svn倉庫,test1文件夾後面會創建,冒號後面代表test1版本庫(倉庫)的根目錄,當然也可以對倉庫的任意子目錄設置權限比如[test1:/childTest1],對於test1倉庫下的childTest1子目錄設置權限對於childTest1子目錄的創建不需要在服務器上創建,有權限的客戶端checkout後,再創建這個子目錄再次commit後即可。

[test1:/]#子目錄權限繼承父目錄的權限,此處超級管理員仍然具有讀寫權限。

@user = r

具體版本庫權限設置參加另一篇博客: http://topinking.iteye.com/blog/342831



4. 創建c:\svn_repo\test1文件夾

  cmd進入Subversion中的bin下,注意是Subversion的子目錄, svnadmin create c:\svn_repo\test1


重啓apache服務,瀏覽器輸入http://myIP/svn/test1 ,輸入正確的用戶名密碼,看是否能看到svn倉庫中的文件


四. 安裝TortoiseSVN,svn的客戶端(1.6.12.20536,64bit)

TortoiseSVN的使用參見  http://wenku.baidu.com/link?url=JuN_8wcDRdCKtspro_q3uLjbrDnbddqhH5PjREvgquJXxZrLZtYJAtlpjj6MDXTWOKNwnnmopwAyNjfF1Ghg_kqEa-nW68mp_kL8g51I7Mm



附錄:

另一種Apache和svn的配置如下

Apache的conf/httd.conf

<Location /svn/test1>#直接指向子目錄
DAV svn
SVNListParentPath on#通過瀏覽器訪問時是否顯示父目錄,即..
SVNPath c:/svn_repo/test1#直接指向test1版本庫的目錄

AuthzSVNAccessFile c:/svn_repo/test1/conf/svnaccessfile
#Satisfy Any #最好不要加上
Require valid-user

AuthType Basic
AuthName "Subversion repositories"
AuthUserFile  c:/svn_repo/test1/conf/passwd
Require valid-user
</Location> 

svn的權限控制文件  svnaccessfile:

[groups]        

super_admin = admin

user = test


# 爲test1版本庫制定權限

[/]#此處根目錄爲版本庫test1的根目錄

@super_admin = rw

@user = r






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章