前提条件:
请先关闭防火墙或者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
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”路径下相应的内容。
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