1、通过yum安装subversion,根据提示完成安装
<span style="color:#333333"><span style="background-color:#f5f5f5">sudo yum install subversion</span></span>
subversion安装在/bin目录
<span style="color:#333333"><span style="background-color:#f5f5f5">which svnserve</span></span>
检查subversion是否安装成功
<span style="color:#333333"><span style="background-color:#f5f5f5">svnserve --version</span></span>
2、建立版本库(subversion默认以/var/svn作为数据根目录,可以通过/etc/sysconfig/svnserve修改这个默认位置)
<span style="color:#333333"><span style="background-color:#f5f5f5">systemctl cat svnserve.service</span></span>
修改/etc/sysconfig/svnserver将默认目录指定到/opt/svn(使用默认值也可以,后面几步的路径保持一致即可)
<span style="color:#333333"><span style="background-color:#f5f5f5">vim /etc/sysconfig/svnserve</span></span>
3、使用svnadmin建立版本库code
<span style="color:#333333"><span style="background-color:#f5f5f5">sudo mkdir -p /opt/svn</span></span>
<span style="color:#333333"><span style="background-color:#f5f5f5">sudo svnadmin create /opt/svn/code</span></span>
版本库code创建成功后,我们看一下/opt/svn/code目录下现在有哪些文件:
创建用户,编辑用户文件passwd,新增两个用户:admin和guest
<span style="color:#333333"><span style="background-color:#f5f5f5">vim /opt/svn/code/conf/passwd</span></span>
编辑权限文件authz,用户admin设置可读写权限,guest设置只读权限
<span style="color:#333333"><span style="background-color:#f5f5f5">vim /opt/svn/code/conf/authz</span></span>
编辑svnserve.conf文件,增加以下配置信息:
<span style="color:#333333"><span style="background-color:#f5f5f5">vim /opt/svn/code/conf/svnserve.conf</span></span>
<span style="color:#333333"><span style="background-color:#f5f5f5">anon-access = none #控制非鉴权用户访问版本库的权限
auth-access = write #控制鉴权用户访问版本库的权限
password-db = passwd #指定用户名口令文件名
authz-db = authz #指定权限配置文件名
realm = spring-hello-world #指定版本库的认证域,即在登录时提示的认证域名称</span></span>
4、启动SVN服务
<span style="color:#333333"><span style="background-color:#f5f5f5">sudo systemctl start svnserve.service</span></span>
检查服务是否启动成功
<span style="color:#333333"><span style="background-color:#f5f5f5">ps aux | grep svn</span></span>
通过netstat可以看到SVN打开了3690端口
<span style="color:#333333"><span style="background-color:#f5f5f5">sudo netstat -tnlp</span></span>
设置成开机启动,完成
<span style="color:#333333"><span style="background-color:#f5f5f5">sudo systemctl enable svnserve.service</span></span>
通过客户端访问下面的svn地址即可:
<span style="color:#333333"><span style="background-color:#f5f5f5">svn://admin@ip-address/svn/code</span></span>
客户端出现无法连接SVN服务器的解决方案:
绝大部分是因为防火墙的原因导致,如果是阿里云等服务器,需要检查服务器的安全组策略中的3690端口是否打开
通过systemctl检查服务器的防火墙配置:
<span style="color:#333333"><span style="background-color:#f5f5f5">firewall-cmd --list-all</span></span>
如果提示"FirewallD is not running",说明防火墙没有开启,可以通过 systemctl start firewalld 开启防火墙,再通过 firewall-cmd --list-all 检查服务器的防火墙配置,结果显示:
<span style="color:#333333"><span style="background-color:#f5f5f5">public (default, active)
interfaces: eno16777736 eno33554984
sources:
services: dhcpv6-client ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:</span></span>
可以看到,没有3690端口,我们在防火墙中增加3690端口:
<span style="color:#333333"><span style="background-color:#f5f5f5">sudo firewall-cmd --permanent --add-port=3690/tcp</span></span>
<span style="color:#333333"><span style="background-color:#f5f5f5">sudo firewall-cmd --reload</span></span>
连接客户端可能会出现:No repository found in 'svn://***.***.***.***/code'
输入命令:
<span style="color:#333333"><span style="background-color:#f5f5f5">svnserve -d -r /opt/svn/code</span></span>
会出现:
<span style="color:#333333"><span style="background-color:#f5f5f5">svnserve: Can't bind server socket: Address already in use</span></span>
解决办法:
输入命令:
<span style="color:#333333"><span style="background-color:#f5f5f5">killall svnserve</span></span>
这个命令是将 svn 相关的服务进程全部杀掉,也就是停止 SVN 服务,然后再执行下面的命令启动版本库code进程
<span style="color:#333333"><span style="background-color:#f5f5f5">svnserve -d -r /opt/svn/code</span></span>
如果要启动所有版本库的进程,可以通过下面的命令启动
<span style="color:#333333"><span style="background-color:#f5f5f5">sudo systemctl start svnserve.service</span></span>
通过客户端连接SVN服务器,已经可以正常连接了: