Linux CentOS 7 安装Apache Subversion

–>

前言

好久没写博客了,由于今年一直忙着装修房子,结婚, 一大堆的事情,附上一张蜜月旅行的照片,哈哈..

随着生活渐渐稳定下来,近期也刚好要换工作,所以准备继续把博客码起来,继续坚持学习并积累技术中的点点滴滴,今天简单记录一下在centos7中搭建svn服务器的过程。

下载svn

svn(subversion)和git作为当前最流行的开源集中式和分布式的版本控制系统,应用广泛,svn的官网地址是:http://subversion.apache.org/,我们可以通过下载源码编译安装下载二进制包的方式来安装svn,svn官方并不提供任何二进制包:

The Apache Subversion project does not officially endorse or maintain any binary packages of the Subversion software.

但社区的志愿者们帮我们做了这件事,所以我们只用通过yum命令去下载安装即可:

如上图所示,在安装之前我们需要通过命令rpm -qa subversion先检查下服务器是否已经安装svn,如果已安装则需要通过命令yum -y remove subversion先卸载旧版本再继续安装。依照官方guide,我们需要执行以下两条命令来安装svn:

  1. yum -y install subversion
  2. yum -y install mod_dav_svn

运行如上命令后,通过svnserve --version即可查看svn的版本情况:

如上图就说明svn已经安装成功,二进制包的版本相对较低(1.7.14),如果想用最新的稳定版(1.9.6)需要下载源码来编译安装,本篇博客暂且只介绍通过二进制包的方式来安装svn。

创建svn版本库

安装好之后,接下来要做的就是创建svn版本库,版本库可以看作是服务器上集中存放和管理数据的地方,这里我们选择usr/local/dev/svn作为所有版本库的根目录,然后在这个根目录下创建一个版本库raito-platform-master,用来存放raito-platform-master项目的代码并作为源码库,首先通过命令创建好文件夹:

接下来通过命令svnadmin create就可以初始化版本库了,也就是在这个目录生成svn的相关配置文件:

如上图,这样就已经说明初始化成功,db目录是数据文件存放目录,我们上传至svn的代码文件都是以特定格式压缩后存放在这里,而conf目录就是配置目录,下面我们要做的就是配置用户权限。

配置用户权限

进入conf目录,我们可以看到3个配置文件:

如上图,authz是svnserve的授权文件,我们打开它具体看一下这个文件可以配置的内容:

上图是authz文件的描述,可以清晰的看到authorizations for the path即是“基于路径的授权策略”,在上图的列表中我们还可以看到授权的对象,可以是单个用户(a single user)、一组用户(a group of users)或是任意用户(anyone)等等。但授权之前需要先有用户,而用户相关的配置文件是passwd,我们打开这个配置文件看一下:

如上图,这个配置文件相对就简单多了,仅仅需要定义用户名和密码追加在文件中即可,我们这里定义了一个新用户raitowang,接下来要做的是给raitowang这个用户授权,回到的authz这个配置文件,我们刚才已经知道了svn是“基于路径的授权策略”,但说明中并没有具体告诉我们配置的格式,那么我们在svn的官方文档中(“the Subversion book”)来找找,在官方文档中的Chapter 6.Server Configuration中的Path-Based Authorization章节中我们可以找到答案。首先看一下该小节的这一段概括性的介绍:

The syntax of the file is the same familiar one used by svnserve.conf and the runtime configuration files. Lines that start with a hash (#) are ignored. In its simplest form, each section names a repository and path within it, as well as the authenticated usernames are the option names within each section. The value of each option describes the user’s level of access to the repository path: either r (read-only) or rw (read/write). If the user is not mentioned at all, no access is allowed.

To be more specific: the value of the section names is either of the form [repos-name:path] or of the form [path].

如上所示,上面这一段简单介绍了整个配置文件的构成,即每一个section都命名了一个版本库(repository)和其对应的路径(path),option name是已认证的用户名(即在passwd文件中定义的用户),而option value是用户对仓库指定路径的访问级别,分为r(read-only)只读和rw(read/write)读写这两种。注意下最后一句,即特别强调每一部分配置的名称可以是[repos-name:path][path]这两种格式。首先有必要区分一下配置中的几个概念,如下图:

如上所示,文档中多次提到的section name代表权限配置中的某一个配置,格式可以是[访问路径][版本库名:访问路径]option name即已在passwd文件中定义的用户名,而option value就是该用户的访问权限的级别。搞清楚了这些概念后,回到我们的需求,我们需要给ratiowang这个用户授权,让他有权限操作raito-platform-master版本库下的所有文件,那么这样配置权限即可:

如上图,配好权限之后,最后还要配置一下svnserve.conf,这是一个整体性的配置文件,以第一项配置为例:

如上图,前两项配置分别定义了匿名用户(anon)授权用户(auth)的访问权限,可设置的权限有三种,分别是readwritenone,这很容易理解就不做过多说明,此处我个人的配置是匿名用户无法访问,而授权用户可以进行读写操作(注意write权限可以同时进行读写)。下面还需要配置两项来指定权限文件和授权文件的位置:

如上图,这里使用默认的文件位置。最后还有一项realm需要配置,该选项指定了版本库的位置:

配置好路径后,所有的配置工作就算全部结束了,最后通过命令svnserve -d -r /usr/local/dev/svn启动即可(特别强调这里的启动路径是svn版本库的根目录,而并非是某个具体版本库的目录):

如上图,可以看到svn已经启动成功,停止svn服务的命令是killall svnserve,最后我们就可以通过TortoiseSVN客户端来测试一下。

TortoiseSVN连接测试

关于TortoiseSVN客户端就不做介绍了,在windows下安装好之后右键可以看到TortoiseSVN的菜单:

点击Repo-browser即可进行版本库浏览,点击后会弹出一个版本库的地址栏,我们输入我们之前创建的raito-platform-master版本库后点击【OK】:

之后会弹出一个认证窗口让我们输入用户名密码:

如上图,输入我们之前配置的用户,点击【OK】,如果授权认证没有问题的话就会看到如下的版本库浏览窗口,目前是空的没有任何文件:

最后我们就尝试把我们的这个raito-platform-master项目导入svn服务器。

项目上传

raito-platform-master是一个简单的基于maven的web项目,如下图:

我们现在把这个项目上传到svn服务器,首先打开Settings,在Version Control中添加一个目录映射,如下图:

点击【OK】之后我们就能看到我们添加好的映射:

如上图,建立完目录映射就会发现项目文件都变成红色,这就说明项目文件已经和svn成功关联,接下来点击【Share Project】就可以把项目上传至svn服务器,如下图:

接下来需要选择svn服务器的目录,这里我通过客户端在版本库中创建了一组标准结构的文件夹,我们把项目放在trunk目录下即可:

如上图,确定目录ok之后需要选择版本,这里用默认的1.8即可:

然后就可以提交代码了,点击Commit Changes图标完成上传:

如上图,确认项目文件无误后点击Commit即可将代码提交至svn服务器:

紧接着由于在提交过程中会对代码进行语法检查等操作,可以无视这些提示,直接commit:

第一次提交会花费一些时间,提交成功后我们在TortoiseSVN的版本库浏览器就可以看到我们提交的代码了:

或者在idea的SVN Repositories这个Tool Window中也可以看到:

至此关于Linux CentOS 7中安装配置与应用svn的全部内容就暂且介绍到这里。

总结

简单记录一下在Linux CentOS 7中关于svn的安装、配置与应用,并针对授权部分的用法做了详细解析,希望对遇到类似问题的朋友有所帮助,The End。(ps:刚好今天离职,期待下一个全新的开始!)

本文来源 互联网收集,文章内容系作者个人观点,不代表 本站 对观点赞同或支持。如需转载,请注明文章来源,如您发现有涉嫌抄袭侵权的内容,请联系本站核实处理。

© 版权声明

相关文章