> CentOS > CentOS服务器 > 文件同步 >

CentOS 7 搭建支持 HTTP 协议的 SVN 服务器

前提条件:

请先关闭防火墙或者selinux,当然你也可以进行相应的配置,让某些端口通过

我比较暴力,采用关闭处理

systemctl disable firewalld
systemctl stop firewalld

disable是让其不下次开机启动,stop是结束它。

对于selinux

改/etc/selinux/config文件的”SELINUX=enforcing”为”SELINUX=disabled”

然后执行”setenforce 0″不用重启地关闭selinux

一、安装相应的软件

#svn服务器
yum install subversion
#apache服务器,让我们的svn 服务器支持http协议访问,而不仅是svn://协议
yum install httpd
#apache操作svn模块
yum install mod_dav_svn

二、相应的配置

1、创建仓库

默认安装的svn服务器的根仓库(root repository)为/var/svn,所以我们在这个目录创建我们的仓库

svnadmin create repo1

将创建/var/svn/repo1 目录,在repo1目录下有相应的配置文件

2、仓库配置

/var/svn/repo1/conf下的三个配置文件的作用为

svnserve.conf :存放svn服务器的认证授权策略:比如匿名可读,认证的用户可写,以及指定相应的用户信息存储位置(passwd)和认证规则文件的位置(authz)

passwd:用户信息存储文件,以username=password键值对的方式存储

authz:认证规则

注意 键值对的等号(=)前后的空格

对于svnserve.conf,取消以下行的注释即可

anon-access = read
auth-access = write
password-db = passwd
authz-db = authz

对于passwd,添加一个用户

root = 123456

对于authz,添加如下信息:

[repo1:/]
root = rw
* = r

表示root具有读写权限,’*’任何人都能读,如果没有这个配置,那么查看log会报异常。

3、测试

启动服务器:

systemctl start svnserve.service

使用tortoiseSVN, svn://ip/repo1 ,如果能正常访问,那么配置OK,

三、Http访问方式的配置

httpd的默认的配置文件为/etc/httpd/conf/httpd.conf

1、先备份一下,防止改错:

cp httpd.conf httpd.conf.bak

 

2、修改

找到文件的’LoadModule’
在该附近加载mod_dav和mod_dav_svn模块的配置:

LoadModule dav_module modules/mod_dav.so
LoadModule dav_svn_module modules/mod_dav_svn.so

在该文件的结尾处添加如下配置

<Location /svn>
DAV svn
SVNParentPath  /var/svn
# Authentication: Basic
AuthName "Subversion repository"
AuthType Basic
AuthUserFile /etc/httpd/svn-auth.htpasswd

# Authorization: Authenticated users only
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>

“<Location /svn>”中的”/svn”表示我们的svn的访问URL为”http://ip/svn”,

“DAV svn”表示使用”mod_dav_svn”模块,dav是一种http 1.1扩展协议,mod_dav_svn只是该协议的一种应用。

“SVNParentPath /var/svn”表示服务”http://ip/svn”请求时,使用”/var/svn”路径下相应的内容。

AuthName 表示输入用户名和密码时的提示信息

AuthType 认证类型,这里我们使用基本的认证类型

AuthUserFile 表示认证文件的位置,我们待会创建它。

LimitExcept节点指示只对写请求需要用户认证。

3、创建svn-auth.htpasswd 文件

htpasswd   -c -m /etc/httpd/svn-auth.htpasswd root

按提示输入两次密码,我们就创建了一个’root’,

4、让apache用户对”/var/svn/repo1″目录拥有写权限。

httpd以apache用户启动的,所以我们要让其拥有对”/var/svn/repo1″的写权限。由于我的环境的”/var/svn/repo1″的拥有者是”root:root”,所以我将apache加入到root组中,让回让root组也拥有权限来解决的。

#将用户apache加入root组
usermod -a -G root apache
#让group对/var/svn/repo1目录也有写权限
chmod -R g+w  /var/svn/repo1
#查看apache用户属于的组
groups apache

5、测试

systemctl start httpd.service

现在就可以通过”http://ip/repo1″来访问我们的svn 服务器了

提示:

httpd 的错误日志文件为/var/log/httpd/error_log,如果出现问题,随时查看该文件获得提示。

参考文献:

http://svnbook.red-bean.com/en/1.7/svn.serverconfig.httpd.html




(责任编辑:IT)