Linux SVN服务器搭建和使用

SVN配置管理

1.SVN版本库目录说明

以/home/subversion/projects/ob_import/为例

[admin@ChunkServer-4 ob_import]$ tree
.
├── conf
│   ├── authz
│   ├── passwd
│   └── svnserve.conf
├── db
│   ├── current
│   ├── format
│   ├── fsfs.conf
│   ├── fs-type
│   ├── min-unpacked-rev
│   ├── rep-cache.db
│   ├── revprops
│   │   └── 0
│   │       └── 0
│   ├── revs
│   │   └── 0
│   │       └── 0
│   ├── transactions
│   ├── txn-current
│   ├── txn-current-lock
│   ├── txn-protorevs
│   ├── uuid
│   └── write-lock
├── format
├── hooks
│   ├── post-commit.tmpl
│   ├── post-lock.tmpl
│   ├── post-revprop-change.tmpl
│   ├── post-unlock.tmpl
│   ├── pre-commit.tmpl
│   ├── pre-lock.tmpl
│   ├── pre-revprop-change.tmpl
│   ├── pre-unlock.tmpl
│   └── start-commit.tmpl
├── locks
│   ├── db.lock
│   └── db-logs.lock
└── README.txt

conf:存放版本库所用配置文件目录

db:版本数据存储目录

db/fs-type:版本库数据真实存储格式,SVN有fsfs和bdb两种存储格式

db/recprops:记录版本属性

db/revs:版本库数据存储真实目录,revs下面以目录组织的版本结构,每1000个版本组成一个目录,每个版本自成一个文件,文件名即为commit后生成的版本号;即使删除掉部分版本也不会影响版本库的读取和显示;但是基础版本丢失会使版本库无法访问。

db/uuid:存储版本库唯一标识号

db/txn-currrent:记录当前事务

format:存储一个整数的文件,此整数代表库层次结构版本

hooks:存放版本库钩子目录,比如我们要实现同步更新的操作,在这里实现

locks:存放库锁目录,用来跟踪库的访问者

README.txt

2.conf下配置文件

conf目录下有三个文件:svnserver.conf、authz、以及passwd

SVN服务配置文件:svnserver.conf

查看该文件,首先是匿名用户的权限配置:

anon-access = none

auth-access = write

表示:对匿名用户,无访问权限;对授权用户,有写权限


接下来的一段用于配置使用哪种授权登录方式:

可选的有password-db,就是用户名和密码都是明文存放在统计目录下的passwd文件中;优点是高效配置简单,缺点是安全性弱,明文总不是那么让人感觉可靠;

另一种是authz-db,这种方式的用户密码使用了sasl加密,安全上有保证;

选择这种方式的设置,将password-db注释掉:

#password-db = passwd

authz-db = authz

#指定授权所属的域,可以理解为命名空间

realm = examPro

接下来是[sasl]段,用于标识是否进行SASL加密处理;

use-sasl = true

min-encryption = 128

max-encryption = 256

变量min-encryption和max-encryption控制服务器所需要的加密强度

明文设置用户和密码:passwd

[users]

user1 = passwd1

user2 = passwd2

显示地设置用户和密码,用户user1密码passwd1,用户user2密码passwd2,以此类推,可以添加更多用户

详细权限配置文件:authz

这个就是授权数据库,用于配置指定目录对用户的访问权限;

首先是指定一个用户组,按组来分配权限总是方便的,即使目前你的团队一个组只有一个人。在新加入成员的时候,你就能体会到按组分配权限的便利性;

[groups]

g_fronter=lyf,gl

g_vip=jj

g_doc=ptz

[ob_import:/]

@g_vip=rw

@g_fronter=r

@g_doc=r

[ob_import:/trunk]

@g_vip=rw

@g_fronter=

*=

[ob_import:/branches]

@g_doc=

对于以上代码的配置的详细说明,可以参考

SVN使用SASL加密

1.配置svnserver.conf,注释掉passwd-db = passwd,并启用sasl: use-sasl = true

2.新建一个svn.conf文件,一般放在/usr/lib/sasl2或者/etc/sasl2,内容为:

pwcheck_method:auxprop

auxprop_plugin:sasldb

sasldb_path:/home/svnadmin/config/sasldb

mech_list:DIGEST-MD5

其中sasldb_path指定你打算将sasl加密数据存放的位置;

注释:pwcheck_method指明检查方法,这里是auxprop,这个pwcheck_method还对应了如启动一个代理作为认证服务等方式,而现在的意思就是使用本文件说的方式检查。然后我们指明auxprop_plugin为sasldb,也就是使用一个文件存放用户名密码,也就是/home/svn/svnjiami/sasldb,其他的认证信息存放plugin还有sql和ldapdb。而mech_list指明了认证信息传递机制。

如果svnserver已经在运行,需要重启服务,并确保读取更新后的配置参数

killall svnserver //停止svnserver服务

svnserver -d -r /home/subversion/projects

3.创建用户和密码

使用saslpasswd2程序

语法:saslpasswd2 -c -f /home/svn/jiami/sasldb -u [svnserver.conf里面配置的realm名字] [username]

eg: saslpasswd2 -c -f /home/svnadmin/config/sasldb -u ob_import lyf

会出现交互界面,提示输入两次密码;

附:

saslpasswd2 -c -f /home/svn/jiami/sasldb -u 用户名 //删除用户

sasldblistusers2 -f /home/svn/jiami/sasldb   //查询用户

PS:如果访问库的时候出现以下提示“Could not obtain the list of SASL mechanisms”,原因是Linux默认没有安装DIGEST-MD5,此时,可用以下命令安装更新:yum install cyrus-sasl-md5

cyrus-sasl-md5首页: http://asg.web.cmu.edu/sasl/安装包下载地址:ftp://ftp.andrew.cmu.edu/pub/cyrus/

配置完成


SVN上传时同步到服务器其他目录

hooks/目录下:

能看到一堆模板钩子文件,我们需要的是post-commit.tmpl,copy一份,命名为post-commit。然后修改:

1.设置语言环境

#这行比较重要,需要根据你的服务器环境正确选择语言环境,否则,这个update不会工作;

#export LANG=zh_CN.UTF-8

export LANG=en_CN.UTF-8

2.设置SVN更新时需要同步更新的目录

svn update /home/admin/ob_import --username yoursname --password yourpwd

以上这行表明,当svn服务器版本有更新时,则同步更新到/home/admin/ob_import目录下的对应文件;yoursname和yourpwd是在sasl中设置的用户名和密码;(这里还是是涉及明文存放,对此,可以分配一个用户对svn版本库只有全局的读权限)

3输出日志,便于跟踪查询

echo 'whoami',$REPOS,$DEV >> /home/subversion/projects/hooks/svn_hook.log

每当有更新时,更新日志就会插入一条语句,表明何时有过更新;(这个也可以用来配置环境时调试,用来查询同步是否起效)


我们的配置到这里就全部完成;

现在,SVN就实现了版本管理的功能,同时,同步更新的目录有利于测试人员集成测试;

开发人员需要保证的是,任何时候签入到svn库中的版本是可运行的代码


参考:

[1] SVN权限配置:http://hi.baidu.com/victorlin23/item/f3f42f276e9c810a42634a94

[2] SVN使用SASL加密:http://www.cnblogs.com/linn/archive/2011/08/04/2127014.html


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值