一、前言

用了很久的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/          改成这个试试

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

8 条评论

  1. pbfzbhicid
    pbfzbhicid

    倚天屠龙记之九阳神功

  2. oqjrcmxrpx
    oqjrcmxrpx

    全能的宙斯

  3. kjqlmhpgyt
    kjqlmhpgyt

    乱战交叉

  4. lqacwonsfo
    lqacwonsfo

    新假面骑士

  5. zvnlzbiwas
    zvnlzbiwas

    神雕侠侣问世间

  6. 啦啦啦
    啦啦啦

    抢沙发

    1. 一切随风
      一切随风

      小傻子

      1. 啦啦啦
        啦啦啦

        小智障

添加新评论