From:ITEYE  

在[url] http://room-bb.iteye.com/blog/2190213[/url]搭建svn服务器这一文中,是通过svn:// 方式来访问svn仓库的。本文着重介绍通过apache配置,以http方式来访问版本库(这对于svn版本库部署在外网服务器上很有用) 

1:创建多个svn仓库 

Java代码  收藏代码
  1. svnadmin create /data/svn/exam_1  
  2. svnadmin create /data/svn/exam_2  
  3. svnadmin create /data/svn/exam_3  
  4.   
  5. 注意,你也可以不用执行多次svnadmin 其实创建了一个exam_1,可以直接cp -r exam_1 exam_2  



2:配置svn 
我们创建了三个svn仓库,可以把其中一个仓库的/data/svn/exam_1/conf目录下的配置文件移到 /data/svn/conf,这样可以通过一份配置,控制三个仓库的权限,具体操作如下: 

Java代码  收藏代码
  1. mkdir -p /data/svn/conf  
  2. cp -r /data/svn/exam_1/conf/* /data/svn/conf  
  3.   
  4. 配置passwd  
  5. vi /data/svn/conf/passwd  
  6. manager = 123456  
  7. dev1 = 123456  
  8. dev2 = 123456  
  9. dev3 = 123456  
  10.   
  11. art1 = 123456  
  12. art2 = 123456  
  13. art3 = 123456  
  14.   
  15. des1 = 123456  
  16. des2 = 123456  
  17. des3 = 123456  
  18.   
  19. 配置authz  
  20. vi /data/svn/conf/authz  
  21. admin = manager  
  22.   
  23. dev = dev1,dev2,dev3  
  24.   
  25. art = art1,art2,art3  
  26.   
  27. des = des1,des2,des3  
  28.   
  29. [/]  
  30. @admin = rw  
  31. * =  
  32.   
  33. [exam_1:/]  
  34. @admin = rw  
  35. @dev = rw  
  36. * =   
  37.   
  38. [exam_2:/]  
  39. @admin = rw  
  40. @art = rw  
  41. * =   
  42.   
  43. [exam_3:/]  
  44. @admin = rw  
  45. @des = rw  
  46. * =  
  47.   
  48. 配置全局文件 svnserve.conf  
  49. vi /data/svn/conf/svnserve.conf  
  50. anon-access = none  #禁止匿名访问,设置为none。默认为read,参数:read,write,none  
  51. auth-access = write #授权用户写权限  
  52.   
  53. password-db = /data/svn/conf/passwd  
  54. authz-db = /data/svn/conf/authz  
  55.   
  56. realm = svn #每个SVN项目的认证名,会在认证提示里显示,建议写项目名称。  


  
  3:启动svn 注意参数噢,很重要 

Java代码  收藏代码
  1. svnserve -d -r /home/svn --config-file /data/svn/conf/svnserve.conf   



  4:配置svn支持http访问 

Java代码  收藏代码
  1. 生成账号密码认证文件  
  2. htpasswd -cm /data/svn/conf/http_passwd manager #第一次生成要参数-c  
  3. htpasswd -m /data/svn/conf/http_passwd dev1 #后面添加的用户不要带参数-c  
  4.   
  5. http_passwd 是http模式下使用的认证文件,passwd是svn模式使用的认证文件,  
  6. 这两个文件中的用户和密码最好一样,这样,同一个用户可以用两种方式访问svn库  
  7.   
  8. 设置apache svn配置文件  
  9. cd /etc/httpd/conf.d/  
  10.   
  11. 如果没有subversion.conf 文件,那么先执行 yum -y install mod_dav_svn  
  12. vi /etc/httpd/conf.d/subversion.conf  
  13. <Location /svn> #/svn是虚拟目录,映射到/data/svn中。  
  14.    DAV svn  
  15.      
  16.         #SvnPath /data/svn/ #只支持一个主目录的SVN版本库  
  17.         SVNParentPath /data/svn/ #支持多个相同父目录的SVN版本库  
  18.   
  19.    # Limit write permission to list of valid users.  
  20.    #<LimitExcept GET PROPFIND OPTIONS REPORT>  
  21.       # Require SSL connection for password protection.  
  22.       # SSLRequireSSL  
  23.   
  24.       AuthType Basic  
  25.       AuthName "Authorization SVN"  
  26.       AuthzSVNAccessFile /data/svn/conf/authz  
  27.           AuthUserFile /data/svn/conf/http_passwd  
  28.           Require valid-user  
  29.    #</LimitExcept>  
  30. </Location>  
  31.   
  32. 设置权限目录  
  33.   chown -R apache:apache /data/svn/  
  34.   
  35.  重启apache服务  
  36.   service httpd restart  



5:关闭 SELinux。这个很重要,我就是没关闭,导致一直登陆不了,调试了一整天,都是泪啊 

Java代码  收藏代码
  1. getenforce          ##查看SELinux状态  
  2. setenforce 0        ##设置SELinux  为permissive模式 不用重启,立即生效  
  3.                     ##setenforce 1 成为enforcing模式  
  4.   
  5. vi /etc/selinux/config  
  6. 将SELINUX=enforcing改为SELINUX=disabled 重启机器后生效  




6:测试 
svn方式访问: 
在windows下,通过svn客户端输入 
svn://192.168.7.223/exam_1 

http方式访问 
在浏览器地址栏输入 
http://192.168.7.223/svn/exam_1 
注意:这里比svn方式方位多了个/svn,因为我们配置location时设置了一个虚拟路径 

如果想通过域名访问 
例如 
http://www.bb.com/svn/exam_1 

修改hosts文件 
vi /etc/hosts 
192.168.7.223 www.bb.com 

如果无法登录,要检查防火墙设置啦,iptables -L -n 
查看svn和httpd的端口是否开放

arrow
arrow
    全站熱搜

    戮克 發表在 痞客邦 留言(0) 人氣()