1. 程式人生 > >使用http協議訪問svn

使用http協議訪問svn

svn伺服器有2種執行方式:svn服務和借用apache執行,也就是http服務.

為什麼使用http服務

svn服務是svn預設的訪問形式,但是人們通常習慣於使用域名或者ip地址來訪問一個專案,如果我們把svn伺服器當做一個專案的話,使用http協議來訪問svn服務更加符合我們的習慣.而且對於沒有接觸過svn的其他運維人員或者其他人員,http訪問版本伺服器要優於svn服務訪問.

關於mod_dav_svn模組

由於Subversion需要版本化的控制,因此標準的HTTP協議不能滿足需求。要讓Apache與Subversion協同工作,就要使用WebDAV(Web-based Distributed Authoring and Versiong)Web分散式創作和

版本控制協議。 mod_dav_san模組就是作為Subversion與Apache之間的介面,通過它,Apache就可以訪問版本庫,並且可以讓客戶端也使用HTTP的擴充套件協議WebDAV/DeltaV進行訪問。參考http://www.linuxfly.org/post/449/

mod_dav_svn安裝

[plain] view plain copy  print?
  1. # yum install mod_dav_svn  

建立版本庫

與以前的步驟基本相同,唯一不同的是,需要讓執行的Apache使用者擁有改倉庫的許可權

[plain] view plain copy  
print
?
  1. # mkdir /var/www/svn  
  2. # cd /var/www/svn/  
  3. # svnadmin create stuff  
  4. # chown -R apache.apache stuff/  
修改apache配置

修改/etc/httpd/conf.d/subversion.conf配置檔案的內容為:

[plain] view plain copy  print?
  1. vi /etc/httpd/conf.d/subversion.conf  
[plain] view plain copy  print?
  1. LoadModule dav_svn_module     modules/mod_dav_svn.so  
  2. LoadModule authz_svn_module   modules/mod_authz_svn.so  
  3. #  
  4. # Example configuration to enable HTTP access for a directory  
  5. # containing Subversion repositories, "/var/www/svn".  Each repository  
  6. # must be both:  
  7. #  
  8. #   a) readable and writable by the 'apache' user, and  
  9. #  
  10. #   b) labelled with the 'httpd_sys_content_t' context if using  
  11. #   SELinux  
  12. #  
  13. #  
  14. # To create a new repository "http://localhost/repos/stuff" using  
  15. # this configuration, run as root:  
  16. #  
  17. #   # cd /var/www/svn  
  18. #   # svnadmin create stuff  
  19. #   # chown -R apache.apache stuff  
  20. #   # chcon -R -t httpd_sys_content_t stuff  
  21. #  
  22. <Location /repos>  
  23.    DAV svn  
  24.    SVNParentPath /var/www/svn  
  25. #   # Limit write permission to list of valid users.  
  26.    <LimitExcept GET PROPFIND OPTIONS REPORT>  
  27. #      # Require SSL connection for password protection.  
  28. #      # SSLRequireSSL  
  29. #  
  30.       AuthType Basic # 使用基本認證方式,即使用者名稱、密碼認證  
  31.       AuthName "Authorization Realm" # 在認證對話方塊中出現的提示資訊  
  32.       AuthUserFile /etc/svn/svnusers.conf # 指定存放使用者名稱資訊的檔案路徑  
  33.       AuthzSVNAccessFile /etc/svn/accesspolicy.conf # 指定存放使用者訪問路徑資訊的檔案路徑  
  34.       Require valid-user # 限定只有使用者輸入正確的使用者名稱和密碼後才能訪問該標籤所指向的路徑  
  35.    </LimitExcept>  
  36. </Location>  

加入認證資訊

1.建立存放使用者資訊的檔案

[plain] view plain copy  print?
  1. # mkdir -p /etc/svn/  
  2. # htpasswd -c /etc/svn/svnusers.conf admin  
  3. New password:  
  4. Re-type new password:  
  5. Adding password for user admin  

具體的使用者操作可以檢視htpasswd指令

2.建立存放使用者訪問路徑的檔案

[plain] view plain copy  print?
  1. # mkdir -p /etc/svn/  
  2. # cd /etc/svn/  
  3. # vi accesspolicy.conf  

新增如下內容

[plain] view plain copy  print?
  1. [groups]  
  2. admin = admin  
  3. [/]  
  4. *=r  
  5. @admin = rw  
  6. [stuff:/]  
  7. *=rw  
  8. @admin = rw  

啟動httpd服務:

[plain] view plain copy  print?
  1. # /etc/init.d/httpd restart  

訪問svn服務