dl528888
作者dl528888·2015-05-22 17:57
系统运维工程师·游戏公司

linux svn服务端安装与配置

字数 8304阅读 979评论 0赞 0

由于公司需要一个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、创建仓库,以及仓库目录的设置  
  29. [root@nginx-backup modules]# mkdir -p /svndata  
  30. [root@nginx-backup modules]# cd /svndata/   
  31. [root@nginx-backup svndata]# svnadmin create ctitc ##创建仓库,仓库名字为ctitc  
  32. [root@nginx-backup svndata]# chown -R apache:apache ctitc ##更改仓库ctitc的用户为apache,这个apache与apache里的httpd.conf里的用户应该一致  
  33.  [root@nginx-backup svndata]#vim /etc/httpd/conf.d/subversion.conf ##在最后面添加一下内容  
  34. <Location /svn> 
  35. DAV svn  
  36. #SVNParentPath /svndata/ctitc/  
  37. #  
  38. #   # Limit write permission to list of valid users.  
  39. #   <LimitExcept GET PROPFIND OPTIONS REPORT> 
  40. #      # Require SSL connection for password protection.  
  41. #      # SSLRequireSSL  
  42. #  
  43. SVNListParentPath on  
  44. #SVNParentPath "/svndata/ctitc/test" ##svn打开时的目录,如果你是多个仓库用SVNParentPath,只有1个的话使用SVNPath  
  45. SVNPath "/svndata/ctitc"  
  46. AuthType Basic  
  47. AuthName "Subversion repository"  
  48. AuthUserFile "/svndata/ctitc/conf/authfile"  
  49. Require valid-user  
  50. SVNAutoversioning on  
  51. ModMimeUsePathInfo on  
  52. #   </LimitExcept> 
  53. </Location> 
  54.  5、添加用户  
  55. [root@nginx-backup svndata]# htpasswd -c /svndata/ctitc/conf/authfile test ##建立访问的用户test  
  56. 如果想要添加多个用户可以使用  
  57. [root@nginx-backup svndata]# htpasswd /svndata/ctitc/conf/authfile test    
  58. 6、配置权限  
  59. [root@nginx-backup svndata]# vim /svndata/ctitc/conf/authz   
  60. [groups]  
  61. admin = test ##用户组为admin,里面的用户为test  
  62. [admin:/]      
  63. @admin = rw   ##admin组具有读写权限  
  64. [/]  
  65. * = r         #其他用户具有读权限  
  66. [ctitc:/]     ##ctitc仓库根目录下的访问权限  
  67. test = rw    ##用户test具有读写权限  
  68. 7、svn的import导入  
  69. [root@nginx-backup svndata]# svn import /svndata/ctitc/ file:///svndata/ctitc -m "Initial repository"       
  70. 8、配置svn服务端  
  71. [root@nginx-backup svndata]# vim /svndata/ctitc/conf/svnserve.conf      
  72. 内容修改为:  
  73. [general]  
  74. anon-access = none 
  75. auth-access = write 
  76. password-db = /svndata/ctitc/conf/passwd  
  77. authz-db = /svndata/ctitc/conf/authz  
  78. realm = ctitc 
  79. 注意,把这几项的#去掉的时候,一定要这些空格都删除,否则会出现错误。  
  80. 9、修改passwd  
  81. [root@nginx-backup svndata]# vim /svndata/ctitc/conf/passwd   
  82.  
  83. [users]  
  84. harry = harryssecret 
  85. sally = sallyssecret 
  86. test= test ##我设置的用户与密码均为test  
  87. 现在svn的服务都配置完成了,需要重启启动apache与svnserve  
  88.  [root@nginx-backup svndata]# service httpd restart  
  89.  [root@nginx-backup svndata]# svnserve -d -r /svndata/ctitc/  
  90. 然后查看apache与svnserve是否启动  
  91. [root@nginx-backup svndata]# ps -ef|grep httpd  
  92. root      4902     1  0 Dec27 ?        00:00:00 /usr/sbin/httpd  
  93. apache    4904  4902  0 Dec27 ?        00:00:10 /usr/sbin/httpd  
  94. apache    4905  4902  0 Dec27 ?        00:00:17 /usr/sbin/httpd  
  95. apache    4906  4902  0 Dec27 ?        00:00:08 /usr/sbin/httpd  
  96. apache    4907  4902  0 Dec27 ?        00:01:28 /usr/sbin/httpd  
  97. apache    4908  4902  0 Dec27 ?        00:00:15 /usr/sbin/httpd  
  98. apache    4909  4902  0 Dec27 ?        00:00:19 /usr/sbin/httpd  
  99. apache    4910  4902  0 Dec27 ?        00:00:10 /usr/sbin/httpd  
  100. apache    4911  4902  0 Dec27 ?        00:00:04 /usr/sbin/httpd  
  101. apache    5142  4902  0 Dec27 ?        00:00:15 /usr/sbin/httpd  
  102. apache   21541  4902  0 12:02 ?        00:00:02 /usr/sbin/httpd  
  103. root     24116 23659  0 14:42 pts/2    00:00:00 grep httpd  
  104. [root@nginx-backup svndata]# ps -ef|grep svnserve  
  105. root      4915     1  0 Dec27 ?        00:00:00 svnserve -d -r /svndata/ctitc/  
  106. 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。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

X社区推广