一、前言

用了很久的svn客户端,但是没有自己搭建过svn服务器,准备在自己的服务器搭建一个svn服务器,所以现在虚拟机上搭建了一遍,然后在服务器上开始搭建(都是基于centos7系统)

二、SVN简介

SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的。

三、centos上安装svn服务器

安装subversion

1、查看是否已经安装过svn

[root@VM_0_16_centos /]# svnversion --version

如果出现下图提示则未安装
请输入图片描述

2、yum安装

[root@VM_0_16_centos /]# yum install subversion

安装成功提示

}{XWLC2FZNZUBF7[JQ3SN02.png

或者安装成功后,用subversion -v测试,如下图所示就是安装成功

[root@VM_0_16_centos /]# svnversion --version

[BNH$`@QA}WIEN_UP2(I$YE.png

新建仓库

创建SVN仓库的命令

svnadmin create 仓库路径

如果想在指定目录创建仓库(我现在演示在/svn/目录创建projects仓库)

[root@VM_0_16_centos /]# cd /                         #进入/根目录
[root@VM_0_16_centos /]# mkdir svn                    #创建svn文件夹
[root@VM_0_16_centos /]# cd /svn                      #进入svn目录
[root@VM_0_16_centos svn]# svnadmin create projects   #创建projects仓库

在projects文件夹下面ls出来如下文件则表示创建成功

123![][4]

配置SVN服务器

subversion目录说明

db目录:就是所有版本控制的数据存放文件。
hooks目录:放置hook脚本文件的目录。
locks目录:用来放置subversion见艰苦锁定数据的目录,用来追踪存取文件库的客户端。
format文件:是一个文本文件,里面只放了一个整数,表示当前文件库配置的版本号。
conf目录:是这个仓库的配置文件(仓库的用户访问账号、权限等)

配置文件详解

conf/passwd            #用户文件,配置用户名和密码
conf/authz             #用户权限文件,用于配置用户权限
conf/svnserve.conf     #配置启动参数

编辑svnserve.conf配置文件,如图

[root@VM_0_16_centos conf]# vim svnserve.conf

`[}Y8}AIXG(HLIB7MP(6[8P.png

编辑passwd用户文件
添加用户以及用户的密码:用户名=密码**

[root@VM_0_16_centos conf]# vim passwd

JZ~<code>5)DKPLEZZILKWT</code>@Z4C.png
编辑用户授权文件authz

[root@VM_0_16_centos conf]# vim authz

[groups]模块下配置分组信息
[/dir]模块下配置分组权限/个人权限信息,r代表读,w代表写
配置说明:

@分组名 = rw    # 分组权限配置
&用户名 = rw    # 单个用户权限配置
* = rw         # 所有用户权限配置

2S@ME2)B8F51`HO3[8S8I5N.png

运行以及测试

运行SVNSERVE

svnserve是一个服务端程序,启动后就能向其他人提供SVN服务

命令

svnserve -d -r /路径 –listen-port 端口号

参数说明:

-d             表示守护进程
-r             表示SVN服务根路径
–listen-port   可指定端口号

运行以及检查运行是否成功

[root@VM_0_16_centos conf]# svnserve -d -r /svn/
[root@VM_0_16_centos conf]# ps -fe | grep svnserve
 root      6736     1  0 19:45 ?        00:00:00 svnserve -d -r /svn/
 root      6746  4077  0 19:45 pts/1    00:00:00 grep --color=auto svnserve

0{GX4[JLDZU5~_)Q9AYG[LT.png

防火墙设置

查看svnserve端口,可以看到默认端口是3690,所以需要开启INPUT链 dport 3690和OUTPUT链 sport 3690

[root@VM_0_16_centos sysconfig]# netstat -antp | grep svn
 tcp        0      0 0.0.0.0:3690            0.0.0.0:*               LISTEN      6736/svnserve

开放3690端口

[root@VM_0_16_centos sysconfig]# firewall-cmd --permanent --zone=public --add-port=3690/tcp
success
[root@VM_0_16_centos sysconfig]# firewall-cmd --reload
success
[root@VM_0_16_centos sysconfig]#

以上是通过命令开启,当然也可以通过修改/etc/sysconfig/iptables文件开启,具体操作这里就不说明了

windows环境测试

wondows安装svn客户端软件

下载对应自己系统的版本并安装
https://tortoisesvn.net/downloads.html

新建或者选择一个空文件夹右击鼠标选择SVN Checkout
输入仓库地址

02_LWXEOAYCHH@{B{H24BEC.png

输入刚才设置的用户和密码,我这里用admin登录

AL2V)K7H6)N_~FQ9LEUIY`E.png

成功!

L8OMM_9ZEA{`3WO)VRJHXTA.png

设置开启svn开机自启动

安装好 svn 服务后,默认是没有随系统启动自启动的, CentOS7 的 /etc/rc.d/rc.local 是没有执行权限的,系统建议创建 systemd service 启动服务,于是查看 systemd 里 svn 的配置文件 /lib/systemd/system/svnserve.service

[root@VM_0_16_centos projects]# systemctl cat svnserve.service

NYDW3RVAFNBEOCI5XBUN~MV.png

编辑配置文件/etc/sysconfig/svnserve

81$8D7D@}(G$0YU~TF0(V%8.png

设置开机自启动

systemctl enable svnserve.service

总结

防火墙设置

firewall-cmd --permanent --zone=public --add-port=3690/tcp    #开放端口
systemctl start firewalld.service                             #开启防火墙
systemctl stop firewalld.service                              #关闭防火墙
systemctl restart firewalld.service                           #关闭防火墙
systemctl disable firewalld.service                           #禁止开机自启动
systemctl enable firewalld.service                            #设置开机自启动
firewall-cmd --reload                                         #重启防火墙

svn操作

ps aux|grep svnserve                       #查看状态
ps -aux |grep svn                          #查看svn进程
kill -9 {进程id}                           #关闭进程
svnserve -d -r /svn/                      #开启svnserve

认证失败

1、检查防火墙设置
2、检查authz配置
3、[/]分组的权限配置问题,先改为* = rw试一下

报URL错误

svn: E170000: URL 'svn://118.25.177.194/projects' doesn't exist

可能是启动svn时指向错误

svnserve -d -r /svn/projects
svnserve -d -r /svn/          改成这个试试

本文由 一切随风 创作,可自由转载、引用,但需署名作者且注明文章出处。

3 条评论

  1. 啦啦啦
    啦啦啦

    抢沙发

    1. 一切随风
      一切随风

      小傻子

      1. 啦啦啦
        啦啦啦

        小智障

添加新评论