在CentOS7服务器上部署SVN服务端

环境

[root@slave1 ~]# cat /etc/redhat-release 
CentOS Linux release 7.8.2003 (Core)
[root@slave1 ~]# svn --version
svn,版本 1.7.14 (r1542130)
[root@slave1 ~]# ip addr
net 192.168.0.201/24 brd 192.168.0.255 scope global noprefixroute ens33

一、安装svn

[root@slave1 ~]# yum -y install subversion
[root@slave1 ~]# rpm -ql subversion
/etc/subversion
/etc/sysconfig/svnserve
/run/svnserve
/usr/bin/svn
/usr/bin/svnadmin
/usr/bin/svndumpfilter
/usr/bin/svnlook
/usr/bin/svnrdump
/usr/bin/svnserve
/usr/bin/svnsync
/usr/bin/svnversion
……

二、自定义数据路径

SVN默认的数据路径在“/var/svn”目录下,在配置文件/etc/sysconfig/svnserve中声明。这里自定义到“/home/subversion”,因为/home目录挂载了一块存储容量较大的硬盘:

[root@gitlab ~]# cat /etc/sysconfig/svnserve 
OPTIONS="-r /home/subversion"

三、启动SVN服务端

启动时加-d选项放在后台运行。SVN服务端启动后,默认监听3690端口,也可以通过--listen-port指定端口:

[root@slave1 ~]# svnserve -d -r /home/subversion
[root@slave1 ~]# ps -ef | grep svn
root        882      1  0 16:55 ?        00:00:00 svnserve -d
[root@slave1 ~]# netstat -tlnp | grep svn
tcp        0      0 0.0.0.0:3690            0.0.0.0:*               LISTEN      882/svnserve 

四、创建版本库

在第二步中定义了版本库的路径为/home/subversion。

[root@slave1 ~]# mkdir -p /home/subversion
[root@slave1 ~]# svnadmin create /home/subversion/
[root@slave1 ~]# ls /home/subversion/
conf  db  format  hooks  locks  README.txt

五、创建用户并授权

新建一个管理员用户和一个普通权限用户user1:

[root@slave1 ~]# cat /home/subversion/conf/passwd
[users]
admin = 123123      #设置用户名密码,格式“用户名 = 密码”
user1 = 123123
user2 = 123123
user3 = 123123

为用户授权:

[root@slave1 ~]# cat /home/subversion/conf/authz 
[groups]                #首先为用户分组
admingroup = admin      #用户admin归属于admingroup组
uigroup = user1,user2   #user1和user2归属于uigroup组

[/]                     #为根目录授权
@admingroup = rw        #admingroup组对根目录拥有读写权限
*=                      #其他用户对根目录没有访问权限

[/ui]
@admingroup = rw        #admingroup组对/ui目录有读写权限
@uigroup = rw           #uigroup组对/ui目录拥有读写权限
user3 = r               #单独为user3用开放读权限
*=                      #其他用户没有访问权限

最后编辑svnserve配置:

[root@slave1 ~]# cat /home/subversion/conf/svnserve.conf | grep -v '^$' | grep -v '^#'
[general]
anon-access = read     #匿名用户可读
auth-access = write    #认证用户可读写
password-db = passwd   #使用passwd文件作为password database
authz-db = authz       #使用authz文件作为认证规则数据库
realm = test           #uuid

六、管理员创建/ui目录

经过以上步骤,只创建了版本库的根目录,/ui目录尚未创建。作为管理员为ui部门创建文件目录:

[root@slave1 ~]# mkdir /root/svn
[root@slave1 ~]# cd /root/svn/
[root@slave1 svn]# svn co svn://192.168.0.201/
认证领域: <svn://192.168.0.201:3690> test      #这里显示出了在svnserve.conf文件中定义的“realm”用户名: admin
“admin”的密码: 
……
保存未加密的密码(yes/no)?yes
取出版本 0。                                   #因为当前版本库中没有内容,当前版本为0
[root@slave1 svn]# ls
[root@slave1 svn]# mkdir ui                  #创建ui目录
[root@slave1 svn]# svn add ui                #将ui目录增加到“缓冲区”
A         ui
[root@slave1 svn]# svn ci -m 'add ui'        #提交。-m选项说明了本次提交的信息
正在增加       ui
提交后的版本为 1。 
[root@slave1 svn]# mkdir ops                 #再增加一个ops目录
[root@slave1 svn]# svn add ops
A         ops
[root@slave1 svn]# svn ci -m 'add ops'
正在增加       ops
提交后的版本为 2。 
[root@slave1 svn]# touch ui/1.txt            #ui目录下创建一个测试文件
[root@slave1 svn]# echo 'Hello' > ui/1.txt
[root@slave1 svn]# svn add ui/1.txt
A         ui/1.txt
[root@slave1 svn]# svn ci -m 'add ui/1.txt'
正在增加       ui/1.txt
传输文件数据.
提交后的版本为 3。

七、在Windows上进行测试

在Windows上安装TortoiseSVN。下载页面:https://tortoisesvn.net/downloads.html
新建一个空白文件夹,在右键菜单中选择“SVN Checkout”,在弹出的界面中,填写svn地址,如下图:
svn co

点击“ok”,弹出认证窗口,输入用户名和密码,如下图:
认证

点击“ok”,文件就下载下来了,如下图:
下载

用user3提交一个文件,因为user3对/ui目录只有读权限,当他执行commit时,出现认证失败的错误。

八、我提交到SVN服务器的文件去了哪里

SVN服务器多是以FSFS格式保存数据。每次commit时,会有对应的版本号,提交的数据被压缩保存到以版本号命名的文件。

[root@slave1 ~]# cat /home/subversion/db/fs-type 
fsfs
[root@slave1 ~]# ls -l /home/subversion/db/revs/0/
总用量 16
-r--r--r-- 1 root root 115 7月   2 17:01 0
-r--r--r-- 1 root root 272 7月   2 17:37 1
-r--r--r-- 1 root root 303 7月   2 17:39 2
-r--r--r-- 1 root root 624 7月   2 17:42 3
[root@slave1 ~]# cat /home/subversion/db/revs/0/3 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值