CentOS7下搭建配置SVN服务器


废话不多说,直接上干货


1、通过yum安装subversion,根据提示完成安装

sudo yum install subversion


subversion安装在/bin目录

which svnserve

image.png


检查subversion是否安装成功

svnserve --version

image.png


2、建立版本库(subversion默认以/var/svn作为数据根目录,可以通过/etc/sysconfig/svnserve修改这个默认位置)

systemctl cat svnserve.service

image.png


修改/etc/sysconfig/svnserver将默认目录指定到/opt/svn(使用默认值也可以,后面几步的路径保持一致即可)

vim /etc/sysconfig/svnserve

image.png


3、使用svnadmin建立版本库code

sudo mkdir -p /opt/svn
sudo svnadmin create /opt/svn/code


版本库code创建成功后,我们看一下/opt/svn/code目录下现在有哪些文件:

image.png


创建用户,编辑用户文件passwd,新增两个用户:admin和guest

vim /opt/svn/code/conf/passwd

image.png


编辑权限文件authz,用户admin设置可读写权限,guest设置只读权限

vim /opt/svn/code/conf/authz

image.png


编辑svnserve.conf文件,增加以下配置信息:

vim /opt/svn/code/conf/svnserve.conf

image.png

anon-access = none                     #控制非鉴权用户访问版本库的权限
auth-access = write                    #控制鉴权用户访问版本库的权限
password-db = passwd                   #指定用户名口令文件名
authz-db = authz                       #指定权限配置文件名
realm = spring-hello-world             #指定版本库的认证域,即在登录时提示的认证域名称


4、启动SVN服务

sudo systemctl start svnserve.service


检查服务是否启动成功

ps aux | grep svn

image.png


通过netstat可以看到SVN打开了3690端口

sudo netstat -tnlp


image.png


设置成开机启动,完成

sudo systemctl enable svnserve.service

image.png


通过客户端访问下面的svn地址即可:

svn://admin@ip-address/svn/code


客户端出现无法连接SVN服务器的解决方案:


绝大部分是因为防火墙的原因导致,如果是阿里云等服务器,需要检查服务器的安全组策略中的3690端口是否打开


通过systemctl检查服务器的防火墙配置:

firewall-cmd --list-all


如果提示"FirewallD is not running",说明防火墙没有开启,可以通过 systemctl start firewalld 开启防火墙,再通过 firewall-cmd --list-all 检查服务器的防火墙配置,结果显示:

public (default, active)
  interfaces: eno16777736 eno33554984
  sources: 
  services: dhcpv6-client ssh
  ports: 
  masquerade: no
  forward-ports: 
  icmp-blocks: 
  rich rules:


可以看到,没有3690端口,我们在防火墙中增加3690端口:

sudo firewall-cmd --permanent --add-port=3690/tcp
sudo firewall-cmd --reload


连接客户端可能会出现:No repository found in 'svn://***.***.***.***/code'

输入命令: 

svnserve -d -r /opt/svn/code

会出现:

svnserve: Can't bind server socket: Address already in use

解决办法:

输入命令:

killall  svnserve

这个命令是将 svn 相关的服务进程全部杀掉,也就是停止 SVN 服务,然后再执行下面的命令启动版本库code进程

svnserve -d -r /opt/svn/code

如果要启动所有版本库的进程,可以通过下面的命令启动

sudo systemctl start svnserve.service


通过客户端连接SVN服务器,已经可以正常连接了:

image.png


打赏 支付宝打赏 微信打赏

如果文章对您有帮助,欢迎移至上方打赏按钮...

随手一点
  • 打酱油

    0人

  • 0人

  • 呵呵

    0人

  • 草泥马

    0人

文章评论 抢沙发