Linux下搭建SVN服务器

安装说明

系统环境:Centos7
安装方式:yum安装

基于安全考虑,需要将SVN代码库从windows环境迁移至Linux环境,在此记录一下所踩过的各种坑。
在这之后也参考了网上的很多情况,但是每个人都会遇见不同的问题,所以在此总结一下,其实安装过程很简单,但是安装之后的设置过程,却是坎坎坷坷。

安装步骤

一、安装SVN

通过yum命令安装svnserve,命令如下:

>yum -y install subversion

此命令会全自动安装svn服务器相关服务和依赖,安装完成会自动停止命令运行

若需查看svn安装位置,可以用以下命令:

>rpm -ql subversion

二、创建版本库目录

注:此仅为目录,为后面创建版本库提供存放位置
选择在var路径下创建版本库(该目录可以根据自己情况定义),当前处于根目录下,一次性创建如下:

>mkdir /var/svn/svnrepos

三、创建SVN版本库

在第二步建立的路径基础上,创建版本库,命令如下:

>svnadmin create /var/svn/svnrepos

进入创建的目录下,可以看见有如下文件:
Linux下搭建SVN服务器

配置步骤

一、配置文件说明

进入conf目录,该目录下存放三份重要的配置文件,如下:
Linux下搭建SVN服务器

authz:负责账号权限的管理,控制账号是否读写权限
passwd:负责账号和密码的用户名单管理
svnserve.conf:svn服务器配置文件

二、配置文件修改

一、passwd文件

通过vi命令进入编辑模式,在最下面按照
用户名 = 密码
的格式定义用户。
Linux下搭建SVN服务器

二、authz文件

该文件控制哪些用户或者哪些分组可以访问哪些目录权限。
1.在[groups]下面直接写[/],代表可以访问全部目录,如果需要指定不同的目录,可以再详细指定目录。
2.可以直接指定个别用户也可以指定分组
3.r:读取权限
w:写入权限
4.分组内多个人员可以用,分割
如下图所示:指定development分组下的人员可以访问全部目录,有读写权限
Linux下搭建SVN服务器

三、svnserve.conf文件

该文件只需要将以下几个注释放开即可:

anon-access = read #匿名用户可读

auth-access = write #授权用户可写

password-db = passwd #使用哪个文件作为账号文件

authz-db = authz #使用哪个文件作为权限文件

realm = /var/svn/svnrepos # 认证空间名,版本库所在目录

做完这些就可以启动svn版本库了

svnserve -d -r /var/svn/svnrepos

三、需要避免的坑

1.SVN默认的端口号是3690端口,本来启动SVN之后我们就可以通过SVN 客户端进行访问了,直接访问
svn://192.168.1.1/
就可以,但是由于Centos7默认不对外开放3690,所以我们访问的时候可能会报
svn: E000113: Unable to connect to a repository at URL 'svn://IP/repos’无法连接主机“IP”: 由于连接方在一段时间后没有正确答复
所以我们需要先将3690端口开放出来。
centos7 设置防火墙:

//开放3690端口
firewall-cmd –permanent –zone=public –add-port=3690/tcp
//重启防火墙
firewall-cmd –reload

2.当走到这一步的时候,本该已经圆满了,但是我自己测试的时候,还是提示连接不上,到最后才想到还有产品的关系。
因为是在阿里云上开通的ECS云服务,结果阿里云本身就有自己的安全组,还需要在控制台将3690端口添加到安全组内。做完最后一步,终于可以使用了。