linux svn服务端安装与配置

时间:2022-10-30 09:40:41

由于公司需要一个svn,所以我最近研究了一下svn,下面是我的笔记,分享给大家,如果有不对的地方,请指点!

我搭建的是基于Apache Http Server的svn,我的系统发行版本是redhat 5.4.


  1. 1、安装apache与svn,还有svn需要的模块mod_dav_svn  

  2. yum install httpd httpd-devel subversion mod_dav_svn  

  3. 2、查看svn的mod_dav_svn模块是否安装  

  4. [root@nginx-backup ~]# cd /etc/httpd/modules/  

  5. [root@nginx-backup modules]# ll |grep svn  

  6. -rwxr-xr-x 1 root root   12704 2011-06-09 mod_authz_svn.so  

  7. -rwxr-xr-x 1 root root  146928 2011-06-09 mod_dav_svn.so  

  8. 3、查看svn是否安装成功  

  9. [root@nginx-backup modules]# svn --version  

  10. svn, version 1.6.11 (r934486)  

  11.    compiled Jun  8 2011, 16:22:13  

  12.  

  13. Copyright (C) 2000-2009 CollabNet.  

  14. Subversion is open source software, see http://subversion.tigris.org/  

  15. This product includes software developed by CollabNet (http://www.Collab.Net/).  

  16.  

  17. The following repository access (RA) modules are available:  

  18.  

  19. * ra_neon : Module for accessing a repository via WebDAV protocol using Neon.  

  20.   - handles 'http' scheme  

  21.   - handles 'https' scheme  

  22. * ra_svn : Module for accessing a repository using the svn network protocol.  

  23.   - with Cyrus SASL authentication  

  24.   - handles 'svn' scheme  

  25. * ra_local : Module for accessing a repository on local disk.  

  26.   - handles 'file' scheme  

  27. 如果出现这些内容就代表你的svn安装成功  

  28. 4、创建仓库,以及仓库目录的设置  

  1. [root@nginx-backup modules]# mkdir -p /svndata  

  2. [root@nginx-backup modules]# cd /svndata/   

  3. [root@nginx-backup svndata]# svnadmin create ctitc ##创建仓库,仓库名字为ctitc  

  4. [root@nginx-backup svndata]# chown -R apache:apache ctitc ##更改仓库ctitc的用户为apache,这个apache与apache里的httpd.conf里的用户应该一致  

  5.  [root@nginx-backup svndata]#vim /etc/httpd/conf.d/subversion.conf ##在最后面添加一下内容  

  6. <Location /svn> 

  7. DAV svn  

  8. #SVNParentPath /svndata/ctitc/  

  9. #  

  10. #   # Limit write permission to list of valid users.  

  11. #   <LimitExcept GET PROPFIND OPTIONS REPORT> 

  12. #      # Require SSL connection for password protection.  

  13. #      # SSLRequireSSL  

  14. #  

  15. SVNListParentPath on  

  16. #SVNParentPath "/svndata/ctitc/test" ##svn打开时的目录,如果你是多个仓库用SVNParentPath,只有1个的话使用SVNPath  

  17. SVNPath "/svndata/ctitc"  

  18. AuthType Basic  

  19. AuthName "Subversion repository"  

  20. AuthUserFile "/svndata/ctitc/conf/authfile"  

  21. Require valid-user  

  22. SVNAutoversioning on  

  23. ModMimeUsePathInfo on  

  24. #   </LimitExcept> 

  25. </Location> 

  26.  5、添加用户  

  27. [root@nginx-backup svndata]# htpasswd -c /svndata/ctitc/conf/authfile test ##建立访问的用户test  

  28. 如果想要添加多个用户可以使用  

  29. [root@nginx-backup svndata]# htpasswd /svndata/ctitc/conf/authfile test    

  30. 6、配置权限  

  31. [root@nginx-backup svndata]# vim /svndata/ctitc/conf/authz   

  32. [groups]  

  33. admin = test ##用户组为admin,里面的用户为test  

  34. [admin:/]      

  35. @admin = rw   ##admin组具有读写权限  

  36. [/]  

  37. * = r         #其他用户具有读权限  

  38. [ctitc:/]     ##ctitc仓库根目录下的访问权限  

  39. test = rw    ##用户test具有读写权限  

  40. 7、svn的import导入  

  41. [root@nginx-backup svndata]# svn import /svndata/ctitc/ file:///svndata/ctitc -m "Initial repository"       

  42. 8、配置svn服务端  

  43. [root@nginx-backup svndata]# vim /svndata/ctitc/conf/svnserve.conf      

  44. 内容修改为:  

  45. [general]  

  46. anon-access = none 

  47. auth-access = write 

  48. password-db = /svndata/ctitc/conf/passwd  

  49. authz-db = /svndata/ctitc/conf/authz  

  50. realm = ctitc 

  51. 注意,把这几项的#去掉的时候,一定要这些空格都删除,否则会出现错误。  

  52. 9、修改passwd  

  53. [root@nginx-backup svndata]# vim /svndata/ctitc/conf/passwd   

  54.  

  55. [users]  

  56. harry = harryssecret 

  57. sally = sallyssecret 

  58. test= test ##我设置的用户与密码均为test  

  59. 现在svn的服务都配置完成了,需要重启启动apache与svnserve  

  60.  [root@nginx-backup svndata]# service httpd restart  

  61.  [root@nginx-backup svndata]# svnserve -d -r /svndata/ctitc/  

  62. 然后查看apache与svnserve是否启动  

  63. [root@nginx-backup svndata]# ps -ef|grep httpd  

  64. root      4902     1  0 Dec27 ?        00:00:00 /usr/sbin/httpd  

  65. apache    4904  4902  0 Dec27 ?        00:00:10 /usr/sbin/httpd  

  66. apache    4905  4902  0 Dec27 ?        00:00:17 /usr/sbin/httpd  

  67. apache    4906  4902  0 Dec27 ?        00:00:08 /usr/sbin/httpd  

  68. apache    4907  4902  0 Dec27 ?        00:01:28 /usr/sbin/httpd  

  69. apache    4908  4902  0 Dec27 ?        00:00:15 /usr/sbin/httpd  

  70. apache    4909  4902  0 Dec27 ?        00:00:19 /usr/sbin/httpd  

  71. apache    4910  4902  0 Dec27 ?        00:00:10 /usr/sbin/httpd  

  72. apache    4911  4902  0 Dec27 ?        00:00:04 /usr/sbin/httpd  

  73. apache    5142  4902  0 Dec27 ?        00:00:15 /usr/sbin/httpd  

  74. apache   21541  4902  0 12:02 ?        00:00:02 /usr/sbin/httpd  

  75. root     24116 23659  0 14:42 pts/2    00:00:00 grep httpd  

  76. [root@nginx-backup svndata]# ps -ef|grep svnserve  

  77. root      4915     1  0 Dec27 ?        00:00:00 svnserve -d -r /svndata/ctitc/  

  78. root     24118 23659  0 14:42 pts/2    00:00:00 grep svnserve

现在就可以在浏览器里输入http://127.0.0.1/svn就能访问你的svn了,账号与密码均为test。 

需要注意的是,如果想创建与修改svn里的文件,需要使用svn客户端来进行,比如我使用的就是TortoiseSVN,具体如何使用这类就不介绍了,大家可以参照http://www.cnblogs.com/blsong/archive/2010/09/02/1816124.html来学习。

 再回复里,有人出现还有一个就是在svn commit的时候提示
Can't open file '/svndata/XXXXXXX/txn-current-lock': Permission denied

这个是因为selinux没有关闭,由于我是在生产机器部署的svn,前端有了防火墙与负载均衡设备,所以我的iptables与selinux都已经关闭,所以没有出现此问题,请大家在配置svn的时候注意iptables与selinux。