SVN安装配置说明文档

1、svn服务器安装环境说明:

 	centos7系列

2、检测服务器是否安装SVN

[root@node2 ~]# rpm -qa |grep subversion

3、安装SVN服务端

[root@node2 ~]# yum -y install subversion

4、查看安装结果

[root@node2 ~]# rpm -qa |grep subver
subversion-1.7.14-14.el7.x86_64
subversion-libs-1.7.14-14.el7.x86_64

5、创建SVN工作区域主目录

[root@node2 ~]# mkdir -p /data/svn

6、创建SVN的project项目

[root@node2 ~]# svnadmin create /data/svn/project

7、svn 的配置主要就是对conf 目录下的三个文件配置:

svnserve.conf、passwd、authz。
进入project项目配置文件目录,并查看文件
[root@node2 ~]# cd /data/svn/project/conf/
[root@node2 conf]# ls
authz passwd svnserve.conf

Ps:

简单介绍一下三个配置文件的主要内容,可以根据自己的项目名称和权限需求进行配置,另外,在结尾附上之前写的一个定期备份SVN的shell脚本

附录:对SVN三个配置文件的讲解:

a.svnserve.conf 文件讲解

[general]配置段中配置行格式: <配置项> = <值> ,常用的配置项是以下5
项:
(1)anon-access 控制非鉴权用户访问版本库的权限。
取值范围为”write”、”read”和”none”。即”write”为可读可写,”read”为
只读,”none”表示无访问权限。
缺省值:read
(2)auth-access 控制鉴权用户访问版本库的权限。
取值范围为”write”、”read”和”none”。即”write”为可读可写,”read”为
只读,”none”表示无访问权限。
缺省值:write
(3)password-db 指定用户名口令文件名。
除非指定绝对路径,否则文件位置为相对conf 目录的相对路径。
缺省值:passwd
(4)authz-db 指定权限配置文件名,通过该文件可以实现以路径为基础的访问控制。
除非指定绝对路径,否则文件位置为相对conf 目录的相对路径。
缺省值:authz
(5)realm 指定版本库的认证域,即在登录时提示的认证域名称(就是个作为提示用的,不用太纠结)。

b.passwd 文件讲解

用户名口令文件,该文件名在文件svnserve.conf 中指定,缺省为同目录下的passwd。
该文件仅由一个[users]配 置段组成。
[users]配置段的配置行格式如下: <用户名> = <密码>
注意:配置行中的密码是未经过任何处理的明文。
例:用户名密码文件passwd 的内容如下,
配置了两个用户,用户名分别为”test”和”zhangsan”。
其中”test”用户的密码为”111111”,”zhangsan”用户的密码为”222222”:
[root@node2 ~]# cat /data/svn/project/conf/passwd
[users]
test=111111
zhangsan=222222

c.authz 文件讲解

权限配置文件,该文件名也在文件svnserve.conf 中指定,缺省为同目录的
authz。
该配置文件由一个[groups]配置段和 若干个版本库路径权限段组成。
[groups]配置段中配置行格式如下:
<用户组> = <用户列表>
用户列表由若干个用户组或用户名构成,
用户组或用户名之间用逗号”,”分隔,引用用户组时要使用前缀”@”(如:引
用用户组”all”要使用字符 串”@all”)。
版本库路径权限段的段名格式如下:
[<版本库名>:<路径>]
如版本库abc 路径/tmp 的版本库路径权限段的段名为”[abc:/tmp]”。
可省略段名中的版本库名。若省略版本库名,则该版本库路径权限段对所有版本
库中相同路径的访问控制都有效。
如:段名为”[/tmp]”的版本库路径权限段 设置了所有引用该权限配置文件的
版本库中目录”/tmp”的访问权限。
版本库路径权限段中配置行格式有如下三种:
<用户名> = <权限>
<用户组> = <权限>
(注意一个*,文本编辑器用星号开头为啥不显示)= <权限>
其中,”*”表示任何用户;
权限的取值范围为’r’和’rw’和空
’r’表示具有只读权限,’rw’表示有读写权限,空表示对该版本库路径无任何权限,
注意:每行配置只能配置单个用户或用户组。

例3:权限配置文件authz 的内容如下:

[groups]
g_it=test,zhangsan
[project:/]
@g_admin=rw
dev=r
*=
此配置文件表示,it组中test和张三对项目project有读写权限,dev用户对此项目只有只读权限

每日定时备份SVN项目的shell脚本

#!/bin/bash

# Filename:    svnbak.sh
# Revision:    1.0
# Date:        2017/06/12
# Author:      fantasyslf
# Email:		[email protected]
# Description: SVN完全备份
# Tips:       加入crontab中,crontab -e

# SVN备份保留日期
DAYS=7                       
TIME=`date +'%Y%m%d%H'`
# 定义仓库repos路径1
SVNPATH1="/data/svn/jfshop"
# 定义仓库repos路径2
SVNPATH2="/data/svn/cmbd"
# 定义备份主目录1
BAKDIR1="/data/bakdir/svn/jfshop"
# 定义备份主目录2
BAKDIR2="/data/bakdir/svn/cmbd"
# 定义备份日志路径
BAKLOG="/data/bakdir/svn/logs"
if [ ! -d $BAKLOG ]
        then
        mkdir -p $BAKLOG
fi
# 检查备份目录是否存在,不存在则创建
if [ ! -d $BAKDIR1,$BAKDIR2 ]
        then
        mkdir -p $BAKDIR1 $BAKDIR2
fi
 
set -x
# 删除7天之前的备份以及日志文件
find ${BAKDIR1}/ -type d -mtime +${DAYS} -exec echo "Delete {}" \; -exec rm "{}" \;
find ${BAKDIR1}/ -type d -mtime +${DAYS} -exec echo "Delete {}" \; -exec rm "{}" \;
find ${BAKLOG}/ -type f -mtime +${DAYS} -exec echo "Delete {}" \; -exec rm "{}" \;
# 全备份
svnadmin hotcopy ${SVNPATH1} ${BAKDIR1}/${TIME}
svnadmin hotcopy ${SVNPATH2} ${BAKDIR2}/${TIME}

# 如果能打印版本号说明备份正确
svnlook youngest ${BAKDIR1}/${TIME} && svnlook youngest ${BAKDIR2}/${TIME}
if [ $? -ne 0 ]
then
	exit 1
else
	echo "svn bak success at $TIME" > $BAKLOG/$TIME.log
fi

你可能感兴趣的:(svn,subversion)