当前位置: 首页 > Linux系统 > 正文

SVN的自动化安装和迁移备份

创业公司就是累,啥都需要自己干。作为默安科技的首席资深实习生,这一年走来,我可以基本啥工作都有涉及了。今天这篇博文讨论的SVN服务器迁移与安全也是我的日常一点点的工作内容之一了。当然,这个当对比较简单。参考一些其他人整理的资料,笔者也写了几个脚本将这份工作自动化处理了。便于后期自己备忘。

一、SVN服务器的安装部署

SVN服务器有2种运行方式:

(1)独立服务器,采用SVN自带的协议运行,即  svn://domain/repository的形式

(2)借助Apache,即建立一个这样的通过http://或https://来访问的版本库服务器

这里仅讨论使用第一种方式的安装,这篇文章介绍了第二种的安装:《用 Apache 和 Subversion 搭建安全的版本控制环境》

1、通过yum安装subversion:

# yum install subversion

安装完成可以通过svnserve –version检查是否安装成功:

[root@localhost ~]# svnserve --version
svnserve, version 1.7.14 (r1542130)
 compiled Nov 20 2015, 19:25:09

Copyright (C) 2013 The Apache Software Foundation.
This software consists of contributions made by many people; see the NOTICE
file for more information.
Subversion is open source software, see http://subversion.apache.org/

The following repository back-end (FS) modules are available:

* fs_base : Module for working with a Berkeley DB repository.
* fs_fs : Module for working with a plain file (FSFS) repository.

Cyrus SASL authentication is available.

2、创建svn仓库

mkdir -p /home/svn
svnadmin create /home/svn

svn仓库建立完成后,会自动生成一些配置文件,我们需要修改这些配置文件。

3、设置svn账户和权限

的配置文件都在所创建的仓库的/conf目录下。有以下几个文件authz, passwd, svnserve.conf。其中authz 是权限控制的,可以设置哪些用户可以访问哪些目录, passwd是设置用户和密码的, svnserve.conf是设置svn相关操作的。

3.1  配置svnserve.conf:

anon-access = read #是否允许匿名用户可读,设置为“none”,取消可读权限
auth-access = write #认证的可写权限
password-db = passwd  #指定passwd文件位置
authz-db = authz  #指定authz文件位置
realm = Welcome to moresec's SVN! #指定登陆提示

3.2  配置用户名和密码(passwd文件):

[users]
s0nnet = heheda

3.3  配置权限authz:

[groups]
manager = admin
project_1 = admin,s0nnet


[/]# 基于根目录的控制,同时可以设定组权限和单个用户权限
@manager = rw #读写
* = r  #只读,如果什么都没有设置,则什么权限都没有

[/pro_2]
admin = rw
s0nnet = rw
* = r

### 例子 ###:
#如果SVN的库地址是: /var/svn_server. 根目录下有个svn_home作为根,则authz文件可以配置如下:
[groups]
manager = admin,s0nnet
project_1 = s0nnet

[svn_home:/project_1]
@manager = rw

[svn_home:/project_2]
s0nnet = rw
* = r

4. SVN服务的启动与停止

svnserve -d -r /home/svn # 启动
killall svnserve # 停止

也可以设置 svnserve 随系统启动,添加 /etc/init.d/svnserve 文件:

svnserve -d -r /home/svn

然后添加到系统启动项中:

chmod +x svnserve
chkconfig –add svnserve

另外,在防火墙上开放 svnserve 使用的端口,默认是 3690 端口。

5、访问测试

启动svn: 
# svnserve -d -r /var/svn_server

如果已经有svn在运行,可以换一个端口运行
# svnserve -d -r /var/svn_server --listen-port 3391

这样同一台服务器可以运行多个svnserver
建议采用TortoiseSVN, 连接地址为: svn://127.0.0.1:3391/ (如果指定端口需要添加端口  :端口号)
连接后可以上传本地的文件,有效的管理你的代码。

# 测试连接
svn checkout svn://domain/project_1

相应自动化脚本,可以参考笔者Github:https://github.com/Lingerhk/linux-shell/blob/master/install_svn.sh

 

二、SVN迁移(双机冷备)

之所以需要进行SVN迁移,是因为公司的SVN服务器不太稳定,容易出故障。但是限于资源有限,又无法实时开启双机进行热备。所以当有故障发生时,就需要紧急执行这个自动化迁移脚本,对SVN服务器进行临时紧急迁移。

#!/bin/bash

# >  SVN服务器迁移脚本
# >  desc: 采用 svnadmin hotcopy的方式进行
# >  by: s0nnet<www.s0nnet.com>


SVN_DIR=/var/svn_server
SVN_BAK=/var/svn_backup

SSH_ADDR=root@172.16.94.130
SSH_PASS=xxxx

#setup1: hotcopy srouce code
if [ ! -d ${SVN_BAK} ];then
    mkdir ${SVN_BAK}
fi
svnadmin hotcopy $SVN_DIR ${SVN_BAK}/svn_data
SVN_PKG=svn_data_`date +%F`.tar.gz
cd $SVN_BAK;
tar zcf ${SVN_PKG} svn_data

#setup2: scp tar package
yg_ssh.exp ${SSH_PASS} ssh ${SSH_ADDR} "mkdir ${SVN_BAK}; mkdir ${SVN_DIR}"
yg_ssh.exp ${SSH_PASS} scp ${SVN_BAK}/${SVN_PKG} ${SSH_ADDR}:${SVN_BAK}
yg_ssh.exp ${SSH_PASS} ssh ${SSH_ADDR} "cd ${SVN_BAK}; tar zxvf ${SVN_PKG}; svnadmin hotcopy svn_data ${SVN_DIR}"
yg_ssh.exp ${SSH_PASS} ssh ${SSH_ADDR} "svnserve -d -r ${SVN_DIR}"

相应自动化脚本,可以参考笔者Github::https://github.com/Lingerhk/linux-shell/blob/master/svn_migration.sh

 

相关文档:

http://www.iitshare.com/linux-svn-migration.html

http://151wqooo.blog.51cto.com/2610898/1256188



这篇博文由 s0nnet 于2017年02月24日发表在 Linux系统 分类下, 通告目前不可用,你可以至底部留下评论。
如无特别说明,独木の白帆发表的文章均为原创,欢迎大家转载,转载请注明: SVN的自动化安装和迁移备份 | 独木の白帆
关键字: ,

SVN的自动化安装和迁移备份:等您坐沙发呢!

发表评论

快捷键:Ctrl+Enter