1、1/25/2016 (总结)CentOS Linux搭建SVN Server配置详解http:/ 1/14正在加载.服务器运维与网站架构|Linux运维|X研究Only the paranoid survive首页LinuxNginxSecurityShell服务器架构互联网LFS 6.6Linux基础个人日记关于 (总结)远程网络重装物理服务器的Linux系统XenServer 虚拟化应用总结 2012-427(总结)CentOS Linux搭建SVN Server配置详解发表于: Apache, Linux, Shell, UNIX | 作者: 谋万世全局者标签: centos,Linux
2、,server,SVN,总结,搭建,详解,配置PS:今天给开发的同事搭建一个公网的SVN Server,google一下,发现下面这篇最详细,就记录下来,重新排版一下。顺便根据自己的使用经验,补充了几个细节和总结。本文配置是基于CentOS 5.x的,但一样适用于其他Linux发行版!SVN简介和工作原理subversion(简称svn)是近几年崛起的版本管理软件,是cvs的接班人,目前绝大多数开源软件都使用svn作为代码版本管理软件。Subversion支持linux和windows,但较多安装在linux下。svn服务器有两种运行方式:独立服务器和借助于apache。 svn:/或http
3、:/svn客户端tortoisesvnsvn的基本工作原理: 在一台服务器上建立一个源代码库,库里可以存放许多不同项目的源程序。有源代码库管理员统一管理这些源程序。每个用户在使用源代码库之前,首先要把源代码库里德项目文件下载到本地,然后开发人员可以在本地修改,左后用svn命令进行提交,游源代码库统一管理修改。版本控制解决了:*代码管理混乱*解决代码冲突困难*在代码整合期间引发bug*无法对代码的拥有者进行权限控制*项目不同版本的发布困难SVN工作原理示意图:subversion目录说明:*dav目录:是提供apache与mod_dav_svn使用的目录,让他们存储内部数据*db目录:就是所有版
4、本控制的数据存放文件*hooks目录:放置hook脚本文件的目录*locks目录:用来放置subversion见艰苦锁定数据的目录,用来追踪存取文件库的客户端*format文件:是一个文本文件,里面只放了一个整数。表示当前文件库配置的版本号*conf目录:是这个仓库的配置文件(仓库的用户访问账号、权限等)SVN Server详细配置手册系统环境CentOS 5.8 最小化安装(关闭iptables和selinux) + ssh + yum一,安装必须的软件包.yum install subversion mysql-server httpd mod_dav_svn mod_perl sendm
5、ail wget gcc-c+ make unzip perl* ntsysv vim-enhanced说明:1/25/2016 (总结)CentOS Linux搭建SVN Server配置详解http:/ 2/14说明:subversion (SVN服务器)mysql-server (用于codestriker)httpd mod_dav_svn mod_perl (用于支持WEB方式管理SVN服务器)sendmail (用于配置用户提交代码后发邮件提醒)wget gcc-c+ make unzip perl* (必备软件包)ntsysv vim-enhanced (可选)二,基本的SVN服
6、务器配置1,新建一个目录用于存储SVN所有文件# mkdir /home/svn2,新建一个版本仓库# svnadmin create /home/svn/project3,初始化版本仓库中的目录# mkdir project project/server project/client project/test (建立临时目录)# svn import project/ file:/home/svn/project -m “初始化SVN目录”# rm -rf project (删除临时建立的目录)4,添加用户要添加SVN用户非常简单,只需在/home/svn/project/conf/pass
7、wd文件添加一个形如“username=password”的条目就可以了。为了测试,我添加了如下内容:users# harry = harryssecret# sally = sallyssecretpm = pm_pwserver_group = server_pwclient_group = client_pwtest_group = test_pw5,修改用户访问策略/home/svn/project/conf/authz记录用户的访问策略,以下是参考:groupsproject_p = pmproject_s = server1,server2,server3project_c = c
8、lient1,client2,client3project_t = test1,test1,test1project:/project_p = rw* =project:/serverproject_p = rwproject_s = rw* =project:/clientproject_p = rwproject_c = rw* =project:/docproject_p = rwproject_s = rproject_c = rproject_t = r* =说明:以上信息表示,只有project_p用户组有根目录的读写权。r表示对该目录有读权限,w表示对该目录有写权限,rw表示对该
9、目录有读写权限。最后一行的* =表示,除了上面设置了权限的用户组之外,其他任何人都被禁止访问本目录。这个很重要,一定要加上!6,修改svnserve.conf文件,让用户和策略配置升效.svnserve.conf内容如下:generalanon-access = noneauth-access = writepassword-db = /home/svn/project/conf/passwdauthz-db = /home/svn/project/conf/authz7,启动服务器# svnserve -d -r /home/svn注意:如果修改了svn配置,需要重启svn服务,步骤如下:#
10、 ps -aux|grep svnserve# kill -9 ID号# svnserve -d -r /home/svn8,测试服务器# svn co svn:/192.168.60.10/project1/25/2016 (总结)CentOS Linux搭建SVN Server配置详解http:/ 3/14# svn co svn:/192.168.60.10/projectAuthentication realm: 92731041-2dae-4c23-97fd-9e1ed7f0d18dPassword for root:Authentication realm: 92731041-2d
11、ae-4c23-97fd-9e1ed7f0d18dUsername: server_groupPassword for server_group:svn: Authorization failed ( server_group没用根目录的访问权 )# svn co svn:/192.168.60.10/projectAuthentication realm: 92731041-2dae-4c23-97fd-9e1ed7f0d18dPassword for root:Authentication realm: 92731041-2dae-4c23-97fd-9e1ed7f0d18dUsernam
12、e: pmPassword for pm:A project/testA project/serverA project/clientChecked out revision 1. ( 测试提取成功 )# cd project/server# vim main.c# svn add main.c# svn commit main.c -m “测试一下我的C程序,看什么看,不行啊?”Adding main.cTransmitting file data .Committed revision 2. ( 测试提交成功 )三,配置SVN服务器的HTTP支持1,转换SVN服务器的密码由于SVN服务器的
13、密码是明文的,HTTP服务器不与支持,所以需要转换成HTTP支持的格式。我写了一个Perl脚本完成这个工作.脚本内容如下:# cd /home/svn/project/conf/# vim PtoWP.pl#!/usr/bin/perl # write by huabo, 2009-11-20use warnings; use strict; #open the svn passwd file open (FILE, “passwd“) or die (“Cannot open the passwd file!n“);#clear the apache passwd file open (OU
14、T_FILE, “webpasswd“) or die (“Cannot open the webpasswd file!n“); close (OUT_FILE); #beginforeach () if($_ = m/#.*=/) $_ = s/=/;htpasswd -b webpasswd $_; # chmod +x PtoWP.pl# ./PtoWP.plAdding password for user pmAdding password for user server_groupAdding password for user client_groupAdding passwor
15、d for user test_group现在目录下会多一个webpasswd文件。2,修改httpd.conf,添加关于SVN服务器的内容编辑/etc/httpd/conf/httpd.conf,在最后添加如下信息:DAV svnSVNPath /home/svn/project/AuthType BasicAuthName “svn for project“AuthUserFile /home/svn/project/conf/webpasswdAuthzSVNAccessFile /home/svn/project/conf/authzSatisfy allRequire valid-u
16、ser3,修改svn目录的属主为apache帐号:chown -R apache.apache /home/svn/project/(注意:原文少了这一步,会出权限问题。)4,重启Web服务器:# /etc/init.d/httpd restartStopping httpd: FAILEDStarting httpd: OK 5,用浏览器访问http:/192.168.60.10/project/server/测试测试结果如下图所示:1/25/2016 (总结)CentOS Linux搭建SVN Server配置详解http:/ 4/14( 测试成功 )四,配置邮件提醒支持1,安装Perl模
17、块Module:Build# wget http:/search.cpan.org/CPAN/authors/id/D/DA/DAGOLDEN/Module-Build-0.36_11.tar.gz# tar xvf Module-Build-0.36_11.tar.gz# cd Module-Build-0.36_11# perl Build.PL# ./Build# ./Build test# ./Build install# cd 2,安装Perl模块Authen:SASL# wget http:/search.cpan.org/CPAN/authors/id/G/GB/GBARR/Au
18、then-SASL-2.15.tar.gz# tar xvf Authen-SASL-2.15.tar.gz# cd Authen-SASL-2.15# perl Makefile.PL# make test# make install# cd 3,安装Perl模块Net:SMTP_auth# wget http:/search.cpan.org/CPAN/authors/id/A/AP/APLEINER/Net-SMTP_auth-0.08.tar.gz# tar xvf Net-SMTP_auth-0.08.tar.gz# cd Net-SMTP_auth-0.08# perl Makef
19、ile.PL# make test# make install# cd 4,安装Perl模块SVN:Notify# wget http:/search.cpan.org/CPAN/authors/id/D/DW/DWHEELER/SVN-Notify-2.80.tar.gz# tar xvf SVN-Notify-2.80.tar.gz# cd SVN-Notify-2.80# perl Build.PL# ./Build# ./Build test# ./Build install# cd 5,启动邮件服务器# service sendmail restartShutting down se
20、ndmail: FAILEDStarting sendmail: OK Starting sm-client: OK 6,配置自动发邮件脚本修改post-commit脚本,以支持邮件通知功能.# cd /home/svn/project/hooks/# vim post-commit内容如下:1/25/2016 (总结)CentOS Linux搭建SVN Server配置详解http:/ 5/14内容如下:#!/bin/shREPOS=“$1“REV=“$2“/usr/bin/svnnotify repos-path “$1 revision “$2 to from handler“HTM
21、L:ColorDiff” with-diff smtp localhost smtp-user root smtp-pass 5201314318 -c “UTF-8 -g zh_CN -o raw svnlook/usr/bin/svnlook subject-prefix SVN Update(to参数代表接收邮件的地址,可以有多个,当你有多个老大的时候,这就很重要了,:)。from参数是虚拟的,代表你的发送地址,一般情况下,这个参数 不重要,但如果接收者的邮件服务器有反垃圾邮件的功能,需要判定源地址的话,这个参数是否合法就显得很重要了)再给该脚本添加可执行权限# chmod +x pos
22、t-commit7,再次提交时,就会给指定邮件地址发信了。如下图所示:五,其它常用配置1,强制写log脚本配置pre-commit文件,要求用户每次更新文件都必须写log.# cd /home/svn/project/hooks/# vim pre-commit文件内容如下:#!/bin/shREPOS=“$1“TXN=“$2“SVNLOOK=/usr/bin/svnlookLOGMSG=$SVNLOOK log -t “$TXN“ “$REPOS“ | grep “a-zA-Z0-9“ | wc -cif “$LOGMSG“ -lt 5(要求的log长度,依实际需要修改) ;thenecho
23、 -e “nEmpty log message not allowed. Commit aborted!“ 1 its possible that therepositorys pre-revprop-change hook either failed or is non-existent. At least one property change failed; repository is unchanged# cd /home/svn/project/hooks/# vim pre-revprop-change文件内容如下:REPOS=“$1“REV=“$2“USER=“$3“PROPNA
24、ME=“$4“if “$PROPNAME“ = “svn:log“;then exit 0;fiexit 11/25/2016 (总结)CentOS Linux搭建SVN Server配置详解http:/ 6/14exit 1配置完后加可执行权限升效。六,备份管理svn服务器的定期备份是很重要的,最简单的方式是定时备份仓库目录。1,新建备份目录# mkdir /opt/project_backup2,编写备份脚本# cd /home/svn/# vim project_backup.sh内容如下:#!/bin/bash#write by huabo, 2009-11-20cd /home/sv
25、nnow=/bin/date +%Y%m%d/bin/tar czvf “project_backup_$now.tar.gz” project/ GRANT SELECT,INSERT,UPDATE,DELETE,INDEX,ALTER,CREATE,DROP,REFERENCES ON codestrikerdb.* TO codestrikerlocalhostIDENTIFIED BY cspasswd;FLUSH PRIVILEGES;quit4.配置codestriker# cd codestriker-1.9.10/# vim codestriker.conf注意以下几点(详细可
26、查看codestriker的安装文档)a.数据库的用户名密码要配对b.svn的数据仓库要配对,我的如下:valid_repositories =(svn:file:/home/svn/project,)5.执行codestriker的安装脚本# cd bin/# ./install.pl6.配置http支持# vim /etc/httpd/conf/httpd.conf在最后面加上如下内容:Alias /codestriker/ /var/www/codestriker/codestriker-1.9.10/cgi-bin/Alias /codestrikerhtml/ /var/www/co
27、destriker/codestriker-1.9.10/html/SetHandler perl-scriptPerlHandler ModPerl:RegistryOptions +ExecCGIAllowOverride NoneAllow from all7.重启Web服务# service httpd restart8.在浏览器中输入http:/192.168.60.10/codestriker/codestriker.pl即可访问,如下图:1/25/2016 (总结)CentOS Linux搭建SVN Server配置详解http:/ 9/14参考:http:/wiki.cento
28、s.org/HowTos/Subversion永久链接 : http:/ - 才 5 条评论RSS for this comments | Trackback URI( 展开所有评论 | 收起所有评论 ) 立刻发表评论 SELECT * FROM ROOT WHERE JOB=IT Blog Archive SVN简介和工作原理2012-06-26 17:01:03 WordPress 3.0.1. http:/ .回复他(她)svnserver服务端的安装过程整理 - LSM - svn - svnserve - svn安装 - ISSACY2012-09-17 12:49:23 WordP
29、ress 3.3. 推荐另外一篇文章给大家参考:链接地址 本文链接地址:svnserver服务端的安装过程整理 欢迎订阅 阅读更多有趣的文章。 LSM svn, svnserve,svn安装分享到 .回复他(她)elesos2013-09-03 09:43:42Maxthon 3.0 Windows 7博主牛人回复他(她)Plane2014-07-26 20:48:09Google Chrome 35.0.1916.153 Windows 7 x64 Edition本地电脑SVN客户端在使用权限的情况下可以打开,但用网页的时候就不行,拼命要输入帐号和密码,求解。按照你的步骤回复他(她)clea
30、r2014-10-27 21:56:51Google Chrome 31.0.1650.63 Windows 7 x64 Edition1/25/2016 (总结)CentOS Linux搭建SVN Server配置详解http:/ 10/14Google Chrome 31.0.1650.63 Windows 7 x64 Edition上面的那位同学,原因应该是在修改访问用户策略这块,passwd和authz没有对应好。回复他(她)昵称 *电子邮件 *网站/博客发表 (总结)远程网络重装物理服务器的Linux系统XenServer 虚拟化应用总结 站内搜索Search页面Nginx_down
31、load关于博主标签云订阅本站我的腾讯微博2015年12月17日 11:29 来自网页2014年12月29日 16:32 来自网页2014年12月16日 19:36 来自网页2014年12月10日 14:38 来自网页 (1)2014年12月8日 21:34 来自网页2014年11月28日 15:52 来自网页TA的听众(共1708人) 查看全部饭 黄析平 刘杰林累,皆因睡眠不好!知行合一打呼噜严重的人真是伤人害己,尼玛的隔着墙壁都听到!任何东西都是讲缘分的知行合一没做到知行合一,深刻反省!天若有情天亦老,月如无恨月长圆。博客教主功能注册登录文章 RSS评论 RSSWordPress.org近
32、期文章(总结)Hadoop 2.6报错解决:Could not find the main class: org.apache.hadoop.hdfs.server.namenode.NameNode.为Hadoop集群选择合适的硬件配置1/25/2016 (总结)CentOS Linux搭建SVN Server配置详解http:/ 11/14为Hadoop集群选择合适的硬件配置腾讯TDW:大型Hadoop集群应用(总结)RHEL/CentOS 7.x的几点新改变WordPress提示“缺少临时文件夹”的解决方法(原创)RHEL/CentOS/OracleLinux 7.x使用EPEL和REM
33、I第三方yum源(总结)Nginx/LVS/HAProxy负载均衡软件的优缺点详解关于云计算基础架构IaaS层的几点看法当世钢铁侠:Elon Musk存储基础:DAS/NAS/SAN存储类型及应用未来战士:埃隆马斯克(Elon Musk)极客之王:尼古拉特斯拉(原创)VMware2014年所有产品简介Red Hat Enterprise Linux(RHEL)7 RC正式版下载华为内部的Web安全原则近期评论imjcoder 发表在(总结)CentOS 6.x使用yum快速安装Apache+PHP+Tomcat(JSP)+MySQLLosywee 发表在关于博主sun 发表在(总结)Nginx
34、/LVS/HAProxy负载均衡软件的优缺点详解wonderflow 发表在(总结)Nginx/LVS/HAProxy负载均衡软件的优缺点详解国立秀才 发表在关于博主小伦 发表在(推荐)高并发高流量网站架构详解YoninL 发表在关于博主吃勃勃 发表在Linux常用的系统监控shell脚本刘驰 发表在Linux常用的系统监控shell脚本标签2010 Apache centos Chrome Debian Google Linux mysql Nginx oracle PHP RedHat RHEL server Shell VPS Web Windows WordPressyum 下载 互联
35、网 优化 全球 原创 参数 命令 国内 安装 工具 常用 开源 总结 数据库 方法 服务器 架构 简介 系统 经典 脚本 腾讯 解决方法 详解 配置博文浏览排名英国BBC科教片21世纪性爱指南全集下载 - 230,952 views(总结)Nginx配置文件nginx.conf中文详解 - 149,892 views系统吞吐量(TPS)、用户并发量、性能测试概念和公式 - 108,649 views(总结)CentOS Linux下VNC Server远程桌面配置详解 - 62,941 views(总结)CentOS Linux搭建SVN Server配置详解 - 62,339 views(原
36、创)Oracle 9i所有版本的最新下载地址(已验证!) - 57,242 viewsRedHat Enterprise Linux (RHEL) 6正式版发布下载(很快) - 53,480 views最流行最好玩的十大经典单机游戏排行榜 - 49,665 viewsLinux抓包工具tcpdump详解 - 40,703 views(分享)RedHat Enterprise Linux (RHEL) 6.3正式版发布下载 - 36,360 views分类目录Apple (3)Browser (20)Google Chrome (15)Mozilla Firefox (7)DataBase (9
37、5)DB2 (1)MySQL (52)Oracle (21)Google (54)Hadoop (5)IDC (12)IT精英 (34)Linux (418)Android (3)Debian/Ubuntu/Mint (17)Gentoo/Arch/Slackware (15)LFS/ALFS/BLFS/CLFS (5)RHEL/CentOS/Fedora (49)SLES/SLED/openSUSE (2)MicroSoft (38)Office (1)Windows (32)Security (112)SEO (22)Server Application (3)Shell (61)1/25
38、/2016 (总结)CentOS Linux搭建SVN Server配置详解http:/ 12/14Shell (61)Tools (68)UNIX (167)AIX (1)BSD (18)Mac OS X (3)SCO UNIX (2)Solaris (9)VPS (14)Web (154)Web Server (129)Apache (47)IIS (4)Lighttpd (7)Nginx (68)Resin (2)Tomcat (11)WebLogic (1)WebSphere (1)WordPress (39)个人日记 (322)书评影评 (8)互联网 (223)人文历史 (58)人生
39、百态 (96)佛道易学 (10)创业投资 (78)原创总结 (126)外文翻译 (72)大数据应用 (3)奇闻异事 (29)开源世界 (42)数据存储 (3)旧文存档 (199)服务器架构 (74)未分类 (6)游戏研究 (42)科技资讯 (54)经济管理 (25)编程开发 (112).NET (1)HTML/CSS (31)Java (5)PHP (50)网络应用 (14)虚拟化与云计算 (32)资源分享 (126)运维经验 (36)随笔杂记 (42)集群与负载均衡 (8)项目管理 (9)文章归档2015 年十一月 (1)2014 年八月 (2)2014 年七月 (5)2014 年六月 (2
40、)2014 年五月 (5)2014 年四月 (1)2013 年十月 (2)2013 年九月 (5)2013 年七月 (1)2013 年六月 (1)2013 年三月 (2)2013 年二月 (1)2013 年一月 (2)2012 年十二月 (4)2012 年十一月 (10)2012 年十月 (2)2012 年九月 (5)2012 年八月 (12)2012 年七月 (21)2012 年六月 (23)2012 年五月 (21)1/25/2016 (总结)CentOS Linux搭建SVN Server配置详解http:/ 13/142012 年五月 (21)2012 年四月 (7)2012 年三月
41、(2)2012 年二月 (1)2012 年一月 (2)2011 年十二月 (5)2011 年十一月 (6)2011 年十月 (5)2011 年八月 (2)2011 年七月 (27)2011 年六月 (24)2011 年五月 (37)2011 年四月 (28)2011 年三月 (19)2011 年二月 (1)2011 年一月 (14)2010 年十二月 (3)2010 年十一月 (17)2010 年十月 (24)2010 年九月 (100)2010 年八月 (119)2010 年七月 (184)2010 年六月 (157)2010 年五月 (154)2010 年四月 (42)日历2016 年一月
42、一二三四五六日 十一 1 2 34 5 6 7 8 9 10111213141516171819202122232425262728293031LinuxCentOSChina Linux ForumChinaUnixDebianGentooGNULinux KernelLinuxSir开源中国社区常用网站Google SSLMySQLPHPSourceForge豆瓣技术blogDBA Notes张宴博客服务器运维与架构素包子羽飞博客技术手册LFS 6.6中文手册Nginx中文维基Unix Toolbox中文版开源世界旅行手册鸟哥的Linux私房菜(简体版)1/25/2016 (总结)Cent
43、OS Linux搭建SVN Server配置详解http:/ 14/14鸟哥的Linux私房菜(简体版)科技资讯EngadgetGigaOM奇客的资讯链接表绿盟科技日志存档2015 年十一月2014 年八月2014 年七月2014 年六月2014 年五月2014 年四月2013 年十月2013 年九月2013 年七月2013 年六月2013 年三月2013 年二月2013 年一月2012 年十二月2012 年十一月2012 年十月2012 年九月2012 年八月2012 年七月2012 年六月2012 年五月2012 年四月2012 年三月2012 年二月2012 年一月2011 年十二月2011 年十一月2011 年十月2011 年八月2011 年七月2011 年六月2011 年五月2011 年四月2011 年三月2011 年二月2011 年一月2010 年十二月2010 年十一月2010 年十月2010 年九月2010 年八月2010 年七月2010 年六月2010 年五月2010 年四月博主站点服务器运维与架构Powered by ha97 3.2.1 - 服务器运维与架构 by 博客教主 Google地图 百度地图 站长统计 - 0.91 秒