本教程系统环境:CentOS Linux release 7.3.1611 (Core)
安装
通过yum安装subversion
$ yum -y install subversion
检查一下subversion是否安装成功
$ svnserve --version
svnserve, version 1.7.14 (r1542130) compiled Aug 23 2017, 20:43:38 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.
建立版本库
subversion默认以/var/svn作为数据根目录,可以通过/etc/sysconfig/svnserve修改这个默认位置
$ vi /etc/sysconfig/svnserve
# OPTIONS is used to pass command-line arguments to svnserve.
#
# Specify the repository location in -r parameter:
OPTIONS="-r /data/svn"
使用svnadmin建立版本库web
$ mkdir -p /data/svn
$ svnadmin create /data/svn/web
配置
编辑用户文件passwd,新增两个用户:admin和guest
$ vi /data/svn/web/conf/passwd
[users]
admin = admin888 #账号admin,密码admin888
guest = guest666 #账号guest,密码guest666
编辑权限文件authz,用户admin设置可读写权限,guest设置只读权限
$ vi /data/svn/web/conf/authz
[/] #SVN目录
admin = rw #读写权限,r代表读权限,w代表写权限
guest = r #只读权限
* = #重要!除了上面提到的那些人之外的其余所有人,没有读写权限
编辑svnserve.conf
$ vi /data/svn/web/conf/svnserve.conf
[general]
anon-access = none #控制非鉴权用户访问版本库的权限,注意:这里默认是read,需要修改为none,否则日志无法显示
auth-access = write #控制鉴权用户访问版本库的权限
password-db = passwd #指定用户名口令文件名
authz-db = authz #指定权限配置文件名
realm = web #指定版本库的认证域,即在登录时提示的认证域名称
启动
启动SVN服务
$ systemctl start svnserve.service
检查服务是否启动成功
$ ps aux | grep svnserve
root 7925 0.0 0.0 162200 896 ? Ss 17:57 0:00 /usr/bin/svnserve --daemon --pid-file=/run/svnserve/svnserve.pid -r /data/svn
设置成开机启动
$ systemctl enable svnserve.service
通过netstat可以看到SVN打开了3690端口
$ sudo netstat -tnlp
tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 7925/svnserve
连接
客户端通过TortoriseSVN测试
提示无法链接
测试端口是否开放
$ telnet 116.85.34.193 3690
防火墙开放3690端口
$ firewall-cmd --permanent --add-service=telnet
$ firewall-cmd --permanent --add-port=3690/tcp
$ firewall-cmd --reload
再次测试,成功!