最近一直在做运维自动化监控项目,由于需要版本控制,所以搭建了个svn,同时很多群有都有关于svn的需要,而且他们在进行搭建svn的时候,网上的很多文章都是没有经过验证或者摘抄的,导致很多人都不能完整的完成svn的服务端的搭建,所以我趁闲着的时候编写了个脚本,自动化的安装svn服务端,方便大家。

一、测试环境

在rhel 5.4与centos5.5系统里均测试成功

二、脚本内容


  1. #!/bin/bash  
  2. dir='/svndata' ##svn的目录
  3. name='puppet'  ##svn的资源库名称
  4. user='test'  ##svn验证登陆的用户名
  5. passwd='test'  ##svn验证登陆的密码
  6. yum -y install httpd httpd-devel subversion mod_dav_svn expect 
  7. mkdir -p $dir  
  8. cd $dir/  
  9. svnadmin create $name  
  10. chown -R apache:apache $name   
  11. cat >/etc/httpd/conf.d/subversion.conf<<EOF 
  12. LoadModule dav_svn_module     modules/mod_dav_svn.so  
  13. LoadModule authz_svn_module   modules/mod_authz_svn.so  
  14. <Location /svn> 
  15. DAV svn  
  16. SVNListParentPath on  
  17. SVNPath "$dir/$name"  
  18. AuthType Basic  
  19. AuthName "Subversion repository"  
  20. AuthUserFile "$dir/$name/conf/authfile"  
  21. Require valid-user  
  22. SVNAutoversioning on  
  23. ModMimeUsePathInfo on  
  24. </Location> 
  25. EOF  
  26. echo "  
  27. [groups]  
  28. admin = test 
  29. [admin:/]  
  30. @admin = rw 
  31. [/]  
  32. * = r  
  33. [$name:/]  
  34. test = rw">>$dir/$name/conf/authz  
  35. echo '#!/usr/bin/expect  
  36. spawn /usr/bin/htpasswd -c '$dir'/'$name'/conf/authfile test  
  37. expect "New password:"  
  38. send "'$passwd'\n"  
  39. expect "Re-type new password:"  
  40. send "'$passwd'\n"  
  41. interact'>/tmp/htpasswd.sh  
  42. /usr/bin/expect /tmp/htpasswd.sh  
  43. chown apache:apache $dir/$name/conf/authfile  
  44. echo "$user = $passwd">>$dir/$name/conf/passwd  
  45. svn import $dir/$name/ file://$dir/$name -m "Initial repository"  
  46. sed -i 's/# anon-access = read/anon-access = none/g' $dir/$name/conf/svnserve.conf   
  47. sed -i 's/# auth-access = write/auth-access = write/g' $dir/$name/conf/svnserve.conf  
  48. sed -i 's/# password-db = passwd/password-db = \'$dir'\/'$name'\/conf\/passwd/g' $dir/$name/conf/svnserve.conf  
  49. sed -i 's/# authzauthz-db = authz/authz-db = \'$dir'\/'$name'\/conf\/authz/g' $dir/$name/conf/svnserve.conf  
  50. sed -i 's/# realm = My First Repository/realm = puppt Repository/g' $dir/$name/conf/svnserve.conf  
  51. /etc/init.d/httpd restart  
  52. svnserve -d -r $dir/$name/ 

三、运行方式

直接给这个脚本755权限,然后sh 脚本名称,之后就自动的安装svn服务端了,对于svn客户端的话,自己如果想在win里使用,那么下载TortoiseSVN,具体如何使用这类就不介绍了,大家可以参照http://www.cnblogs.com/blsong/archive/2010/09/02/1816124.html来学习。

 完成后你可以再http://ip/svn里输入你的验证的用户与密码,就可以登录了


如果大家还有什么疑问的话,可以再下面留言,我会及时的回复给大家。

脚本可以再附件里下载