Chinaunix首页 | 论坛 | 博客
  • 博客访问: 115668
  • 博文数量: 28
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 277
  • 用 户 组: 普通用户
  • 注册时间: 2014-10-20 16:21
文章分类
文章存档

2019年(1)

2018年(2)

2017年(22)

2016年(3)

我的朋友

分类: 系统运维

2016-08-10 14:32:31

一、svn备份方案


方案说明:目前svn采用实时同步热备的备份方式,当主库宕机时,可以启用备份库,备份库上只需替换授权文件,开发只需更改checkout的url即可正常使用。

 主库:

 备份库:

注意事项:因为备份是单向的,当启用备份库时,同步关系被破坏,备份方案需要重新部署。


二、部署


1、制作本地yum源

因为办公网络无法用网络上的yum源,需要制作本地yum源

[root@lvs-test-master yum.repos.d]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
[root@lvs-test-master yum.repos.d]# vi /etc/yum.repos.d/CentOS-Base.repo
# CentOS-Media.repo
#
# This repo can be used with mounted DVD media, verify the mount point for
# CentOS-6. You can use this repo and yum to install items directly off the
# DVD ISO that we release.
#
# To use this repo, put in your DVD and use it with the other repos too:
# yum --enablerepo=c6-media [command]
#
# or for ONLY the media repo, do this:
#
# yum --disablerepo=\* --enablerepo=c6-media [command]

[c6-media]
name=CentOS-$releasever - Media
baseurl=file:///data/dsk1/CentOS_6.5_/                                                            ##这是CentOS 6.5 DVD1的rpm包文件位置
file:////data/dsk2                                                                                                ##这是CentOS 6.5 DVD2的rpm包文件位置
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6


2、安装依赖包

2.1、关闭selinux

2.2 、安装依赖包

[root@lvs-test-master yum.repos.d]# yum install subversion httpd php mysql mysql-server  mod_dav_svn php-mysql php-pear php-mbstring

2.3、安装VersionControl_SVN-0.5.1

注意:因为svnmanager的各种bug,VersionControl 用版本0.5.1比较好点。

[root@lvs-master hooks]# pear install VersionControl_SVN-0.5.1 
WARNING: channel "pear.php.net" has updated its protocols, use "pear channel-update pear.php.net" to update
downloading VersionControl_SVN-0.5.1.tgz ...
Starting to download VersionControl_SVN-0.5.1.tgz (31,559 bytes)
.........done: 31,559 bytes
install ok: channel://pear.php.net/VersionControl_SVN-0.5.1


3、创建版本库

3、1 创建版本库根目录

[root@lvs-master hooks]# mkdir /home/svn/svnReps

3、2 创建授权文件

[root@lvs-master svn]# touch access passwd

4、http集成subversion

4、1编辑/etc/httpd/conf.d/subversion.conf,修改以下内容

[root@lvs-master conf.d]# vi /etc/httpd/conf.d/subversion.conf 


                                                                  #通过像这样的URL()来访问Subversion版本库

DAV svn                                                                               #告诉Apache哪个模块负责服务上面的URL-在这里就是Subversion模块

SVNParentPath /home/svn/svnReps                                    #告诉Subversion在目录/data/svn下寻找版本库,这是版本库的父目录

# # Limit write permission to list of valid users.
#
# # Require SSL connection for password protection.

# # SSLRequireSSL                                                            #版本库必须通过SSL连接才能访问,URL中必须加入HTTPS

AuthType Basic                                                                  #启用基本的验证,比如用户名/密码对
AuthName "Authorization Realm"

AuthzSVNAccessFile /home/svn/access                              #用这个密码文件来验证用户,这个文件由svnmanager来维护,下面讲述如何创建它

AuthUserFile /home/svn/passwd                                         #控制这个用户的访问权限,这个文件由svnmanager来维护

Require valid-user                                                               #限定用户只有输入正确的用户名及密码后才能访问这个路径
#


4.2、改版本库父目录权限

chown  -R apache:apache  /home/svn/Reps 


5、安装配置svnmanager

5.1、svnmanager安装

将svnmanager-1.10.zip 解压到apache 访问目录 /var/www/html/svnmanager

[root@lvs-test-master tmp]# unzip -d /var/www/html/ svnmanager-1.10.zip

修改svnmanager配置文件

mv  config.php.linux   config.php

修改以下内容:

$svn_repos_loc = "/data/svn";
$svn_passwd_file = "/data/svn/passwd";
$svn_access_file = "/data/svn/access";

$dsn                            =       "mysqli://svnmanager:11111111@localhost/svnmanager";

5.2、创建mysql  svnmanager库,添加同步用户

创建mysql  svnmanager库

create database  svnmanager;

授权

grant all on svnmanager.*  to 'svnmanager'@'localhost' identified by "11111111";

flush privileges;

6、访问svnmanager

6.1、访问svnmanager的url    

第一次访问这个url时,会提示你重新加载,重新刷新一下这个url就好了。

刷新后就正常访问了,初始用户和密码都是admin。

6.2、用svnmanager创建用户以及和主库相同的版本库

7、同步

7.1、在备份库的版本库中修改pre-revprop-change.tmpl文件

将pre-revprop-change.tmpl  文件更名为pre-revprop-change,赋执行权限,并修改为以下内容:

#!/bin/bash

exit 0

7.2、同步初始化

在备份库上执行

svnsync  init   备份库url    主库url

[root@lvs-test-master hooks]# svnsync init  /android  

输入用户密码验证。

将所有的版本库都同步初始化。

7.3、同步

在从库上执行

[root@lvs-test-master hooks]# svnsync sync  /android    --username=username  --password=password

将所有的版本库都同步。

7.4、执行热备

关掉主库selinux
在主库上,修改版本库文件post-commit.linux

将post-commit.linux 更名为post-commit,赋执行权限,并修改为以下内容:

#!/bin/bash

svnsync sync  --non-interactive     --username=username  --password=password

上面的url为备份库的url

将每个版本库的post-commit.linux都做类似修改。

8、测试

随意在主库中其中一个版本库提交一个文件,检查在备份库是否能update出提交的这个文件,其实看主库的提交会不会报错就可以了。



阅读(2410) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~