svn是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的。
当主服务器宕机之后,可以切换到从服务器上,由从服务器继续提供服务。
最近应公司要求,我负责迁移svn,以此记录。
CentOS release 6.8 (Final)
IP:192.168.60.69
IP:192.168.60.70
IP:192.168.60.71
subversion-1.6.11-15.el6_7.x86_64
在192.168.60.69服务器上进行:
[root@6069 ~]# yum install -y subversion
[root@6069 ~]# svnserve --version
svnserve, version 1.6.11 (r934486)(svn的版本号)
[root@6069 ~]# mkdir /home/svnroot
进入该目录
[root@6069 ~]# cd /home/svnroot/
创建一个库,命名为document
[root@6069 svnroot]# svnadmin create /home/svnroot/document
[root@6069 svnroot]# cd document
[root@6069 document]# ls
hooks目录:放置hook脚本文件的目录
locks目录:用来放置subversion的db锁文件和db_logs锁文件的目录,用来追踪存取文件库的客户端
format目录:是一个文本文件,里边只放了一个整数,表示当前文件库配置的版本号
conf目录:是这个仓库配置文件(仓库用户访问账户,权限)
[root@6069 document]# cd conf/
[root@6069 conf]# ls
authz是管理用户权限的;
passwd是svn用户及密码的;
svnserve.conf是svn的配置文件;
A.修改SVN的svnserver.conf文件
[root@6069 conf]# vim svnserve.conf
#匿名访问的权限,可以是read,write,none,默认为read
anon-access=none
#使授权用户有写权限
auth-access=write
#密码数据库的路径
password-db=passwd
#访问控制文件
authz-db=authz
B.配置访问用户及密码
[root@6069 conf]# vim passwd
C.配置新用户的授权文件
[root@6069 conf]# vim authz
[root@6069 conf]# svnserve -d -r /svn
[root@6069 conf]# service iptables stop
[root@6069 ~]# chkconfig iptables off
[root@6069 ~]# vi /etc/rc.d/rc.local
添加以下信息:
同单机版主节点安装svn的步骤 (192.168.60.70)
1. 确保两边的svn都是启动状态 并且防火墙是关闭状态
2. 在从节点执行以下操作
进入到hooks目录
[root@6070 svn]# cd hooks/
[root@6070 hooks]# cp pre-revprop-change.tmpl pre-revprop-change
[root@6070 hooks]# vi pre-revprop-change
[root@6070 hooks]# chmod +x pre-revprop-change
3.svn库的父目录中建立钩子
a)[root@6070 /]# cd /
b)[root@6070 /]# svnsync init svn://192.168.60.70 svn://192.168.60.69/document
c)按提示输入root密码;
d)输入两边svn都有的用户名和密码,例如:admin,admin;
e)Store password unencrypted (yes/no)?
输入yes储存密码,储存后以后再拉就不需要登录了,写自动同步的脚本也方便。
出现Copied properties for revision 0.表示钩子建立成功!
4. 开始同步
[root@6070 /]# svnsync sync svn://192.168.60.70/document
5. 结果
手动同步满足不了需求,采用每天凌晨2点定时同步。
A. 编写执行同步的脚本并保存
[root@bogon /]# vim svnsync.sh
B. 编写计划任务并保存
crontab –e编辑
crontab –l 查看
C. 给予脚本权限
chmod 755 svnsync.sh
D. 结果
实现定时同步。
重复node1整个过程即可。