通过HTTP协议访问版本库是Subversion的亮点之一,这种方式具备许多svnserve服务器所没有的特性,使用上更加灵活。

关于mode_day_svn模块:

由于Subversion需要版本化的控制,因此标准的HTTP协议不能满足需求。要让Apache与Subversion协同工作,就要使用WebDAV(Web-based Distributed Authoring and Versiong)Web分布式创作和版本控制协议。WebDAV是HTTP 1.1的扩展,关于WebDAV的规范和工作原理,可以参考IETF RFC 2518。
mod_dav_san模块就是作为Subversion与Apache之间的接口,通过它,Apache就可以访问版本库,并且可以让客户端也使用HTTP的扩展协议WebDAV/DeltaV进行访问。

1.安装apache

yum install -y httpd
[root@localhost ~]# httpd -version
Server version: Apache/2.2.15 (Unix)
Server built: May 11 2016 19:28:33

2.安装mode_day_svn模块

 yum install mod_dav_svn

前往 /etc/httpd/modules/ 下,检查是否包含mod_dav_svn.so和mod_authz_svn.so,如果有,mod_dav_svn安装成功。

3.将上篇博客的通过svn:协议访问的库,改成可以通过http协议访问

3.1将上次创建的repo0库的所有者改为apache

chown -R apache.apache /home/svn/repo0

3.2.修改apache的配置,将svn路径设置进来

需要激活Apache加载mod_dav_svn模块。修改/etc/httpd/conf.d/subversion.conf配置文件的内容为:
# 加载相应的模块

vim /etc/httpd/conf.d/subversion.conf
LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so    DAV svn
   SVNPath /home/svn/repo0

然后重启apache服务器,访问浏览器可以看到:

4.授权和认证

上面定义的版本仓库,默认是任何人都可以匿名访问,并且拥有完全的写入、读取、修改、提交、删除版本库中信息的权限。
因此,我们需要加入认证信息以做权限的管理。HTTP协议版本就提供了简单的客户端认证方式,这可通过Apache配置完成。

4.1设置密码

Apache提供了一个htpasswd工具来管理,使用该工具可以创建一个文件,其中存放着用户名和加密后的密码信息。而这些就是Subversion可以引用的用户了,根据这些用户信息,配合mod_authz_svn模块即可进行目录的访问控制。

htpasswd -c /home/svn/svn.passwd xiajun
New password:
Re-type new password:
Adding password for user xiajun

还可以利用htpasswd添加用户,或修改密码,删除用户名等:

# htpasswd -m /home/svn/svn.passwd lisi
# htpasswd -m /home/svn/passwd OldUserName
# htpasswd -D  /home/svn/passwd OldUserName

-m 是可选的参数,当用-c创建用户名信息文件后,即可修改或添加用户信息。

4.2将修改密码的文件加入apache的配置文件中

<Location /repos>
DAV svn
SVNPath /home/svn/repo0
# Limit write permission to list of valid users.
#<LimitExcept GET PROPFIND OPTIONS REPORT> #注意这个要注释掉(这样就只有我们制定的用户可以看到)否则所有的用户可以浏览下载
AuthType Basic #使用基本认证方式,即用户名、密码认证
AuthName "Authorization Realm" # 在认证对话框中出现的提示信息
AuthUserFile /home/svn/svn.passwd # 指定上面创建好的存放用户名信息的文件路径
Require valid-user # 限定只有用户输入正确的用户名和密码后才能访问该标签所指向的路径
#</LimitExcept>
</Location>

4.3 控制权限

主要用于控制哪些用户对于哪些目录有哪些权限:

vim /home/svn/accesspolicy.conf

写入内容如下:

### This file is an example authorization file for svnserve.
### Its format is identical to that of mod_authz_svn authorization
### files.
### As shown below each section defines authorizations for the path and
### (optional) repository specified by the section name.
### The authorizations follow. An authorization line can refer to:
### - a single user,
### - a group of users defined in a special [groups] section,
### - an alias defined in a special [aliases] section,
### - all authenticated users, using the '$authenticated' token,
### - only anonymous users, using the '$anonymous' token,
### - anyone, using the '*' wildcard.
###
### A match can be inverted by prefixing the rule with '~'. Rules can
### grant read ('r') access, read-write ('rw') access, or no access
### (''). [groups]
team0=xiajun
team1=lisi #注意表示这个库下面所有的东西都可以访问,用[repo0:/]这种方式不对,因为SVNPath是指向具体路径,如果apache里面的配置文件是指向SVNParentPath的话,才用[repo0:/]表示哪个库的路径
[/] #表示根目录及所有的的目录team0组有读写权限,而team1组只有读权限
@team0=rw
@team1=r

将这个权限控制文件的路径配置apache的配置文件里面

<Location /repos>
DAV svn
SVNPath /home/svn/repo0 AuthType Basic
AuthName "Authorization Realm"
AuthUserFile /home/svn/svn.passwd
Require valid-user
AuthzSVNAccessFile /home/svn/accesspolicy.conf
</Location>

然后重启apache,权限文件生效,可以访问,发现xiajun有读写权限,而lisi只有读权限。至此基本完成。

实例配置:

[root@localhost test]# vim /etc/httpd/conf.d/subversion.conf

LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

<Location /repos>
DAV svn
SVNPath /svn/test
#
# # Limit write permission to list of valid users.
# <LimitExcept GET PROPFIND OPTIONS REPORT>
# # Require SSL connection for password protection.
# # SSLRequireSSL
#
AuthType Basic
AuthName "Authorization Realm"
AuthUserFile /svn/test/svn.passwd
Require valid-user
# </LimitExcept>
</Location>

配置可以通过http协议访问的svn服务器的更多相关文章

  1. Apache Httpd + Subversion 搭建HTTP访问的SVN服务器

    最近要搭建一个SVN服务器.简单安装之后,本地访问没有问题,但作为服务器肯定是需要HTTP访问.搜索之后,以下是我按照网上的资料搭建的过程,以备后用和参考.(所有软件安装步骤略,没有特殊的,如果没有特 ...

  2. Http协议访问DataSnap Rest 服务器

    用TIDHttp访问DataSnap Rest服务器,在服务器采用了用户验证的情况下,客户端需要注意下面的细节,否则不能正常连接. 假如服务器有如下的用户验证: procedure TSC.DSAut ...

  3. centos7下配置iptables实现外网访问内网服务器

    说明:Centos 7 默认的防火墙是 firewall,安装iptables之前需关闭Firewall 外网机器:外网ip:120.25.71.183内网ip:10.1.1.23 内网机器:内网ip ...

  4. centos7搭建SVN并配置使用http方式访问SVN服务器

    一.检查SVN是否安装 centos7系统自带SVN # rpm -qa subversion [root@localhost ~]# rpm -qa subversion subversion--. ...

  5. 【转】Linux下nginx配置https协议访问的方法

    一.配置nginx支持https协议访问,需要在编译安装nginx的时候添加相应的模块--with-http_ssl_module 查看nginx编译参数:/usr/local/nginx/sbin/ ...

  6. Linux下nginx配置https协议访问

    一.配置nginx支持https协议访问,需要在编译安装nginx的时候添加相应的模块--with-http_ssl_module 查看nginx编译参数:/usr/local/nginx/sbin/ ...

  7. Linux下nginx配置https协议访问的方法

    一.配置nginx支持https协议访问,需要在编译安装nginx的时候添加相应的模块--with-http_ssl_module 查看nginx编译参数:/usr/local/nginx/sbin/ ...

  8. Linux服务之nginx服务篇四(配置https协议访问)

    一.配置nginx支持https协议访问 编译安装nginx的时候需要添加相应的模块--with-http_ssl_module和--with-http_gzip_static_module(可通过/ ...

  9. ubuntu下配置SVN服务器

    自己买的阿里云服务器.可是我老感觉没有SVN上传代码下载代码太不方便!决定配置个SVN服务器! 1.安装Subversion $ sudo apt-get install subversion $ s ...

随机推荐

  1. 织梦CMS安装分享插件

    获取百度分享按钮织梦系统插件 点击下载:dedecms 5.* 插件 更新日期:2011.09.05 1.下载百度分享插件的织梦cms版本. 2.使用管理员账号登录您的站点后台管理中心,单击" ...

  2. DESTOON B2B标签(tag)调用手册

    路径:include/tag.func.php 1.标签格式的大致说明 {tag("moduleid=9&table=article_9&length=40&cond ...

  3. Sencha Touch vs jQuery Mobile

    Sencha Touch:重量级框架,类似于Flex SDK;组件封装较多;在各平台交互表现统一(内部封装);入门门槛较高 jQuery Mobile:轻量级框架,实质是jQuery插件;组件较少;交 ...

  4. MapReduce 原理与 Python 实践

    MapReduce 原理与 Python 实践 1. MapReduce 原理 以下是个人在MongoDB和Redis实际应用中总结的Map-Reduce的理解 Hadoop 的 MapReduce ...

  5. SSH的jar包下载地址

    spring http://repo.spring.io/libs-release-local/org/springframework/spring/ 条理清晰的搭建SSH环境之添加所需jar包 ht ...

  6. 【Android】版本的名称

    http://www.cnblogs.com/imlucky/archive/2011/10/21/2220596.html

  7. start tomcat with debugging mode

    For this, you must run your application in debug mode, which requires below parameters. -Xdebug -Xru ...

  8. js随机生成验证码及其颜色

    今天迎来了2018年第一场雪,这个美好的日子,总的写点什么纪念一下,在这里写了一个在js中使用Math.random()函数,随机生成四位数的验证码及其验证码换颜色. js代码如下: var arra ...

  9. 移动端 -webkit-user-select:text; ios10 bug 解决方案

    移动端一般body的css.会设置 作用就不解释了: body{ height:100%;min-height:100%; font-family: "微软雅黑",'Helveti ...

  10. Python中变量和常量的理解

    一.变量的定义:把程序运算的中间结果临时存到内存里,以备后面的代码继续调用,这几个名字的学名就叫做"变量". 二.变量的作用:变量用于存储要在计算机程序中引用和操作的信息.它提供了 ...