安装说明
系统环境: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
进入创建的目录下,可以看见有如下文件:
配置步骤
一、配置文件说明
进入conf目录,该目录下存放三份重要的配置文件,如下:
authz:负责账号权限的管理,控制账号是否读写权限
passwd:负责账号和密码的用户名单管理
svnserve.conf:svn服务器配置文件
二、配置文件修改
一、passwd文件
通过vi命令进入编辑模式,在最下面按照
用户名 = 密码
的格式定义用户。
二、authz文件
该文件控制哪些用户或者哪些分组可以访问哪些目录权限。
1.在[groups]下面直接写[/],代表可以访问全部目录,如果需要指定不同的目录,可以再详细指定目录。
2.可以直接指定个别用户也可以指定分组
3.r:读取权限
w:写入权限
4.分组内多个人员可以用,分割
如下图所示:指定development分组下的人员可以访问全部目录,有读写权限
三、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端口添加到安全组内。做完最后一步,终于可以使用了。
后记
后来将svn改为https方式连接,相应的创建用户也调整了:
htpasswd -m /var/svn/conf/httpd-passwd testuser