基于Centos 7搭建支持HTTP协议的svn服务器

5月 21, 2015 |

前提条件:

请先关闭防火墙或者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>"中的"/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

Posted in: Linux | Tags:

Comments are closed.