通过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. 邓_ phpcms_

    {pc:content action="lists" catid="$catid" num="10" order="id DESC ...

  2. div流加载

    var hasNext=true;//触发开关,防止多次调用事件 var nScrollHight = 0; //滚动距离总长(注意不是滚动条的长度) var nScrollTop = 0; //滚动 ...

  3. 详解javascript中的闭包

    全局变量与局部变量 在说闭包之前先说明全局变量与局部变量 全局变量:变量声明时如果不使用 var 关键字,那么它就是一个全局变量,即便它在函数内定义. 局部变量:使用var关键字定义 全局变量/局部变 ...

  4. numpy 解一道简单数学题

    题目 A group took a trip on a bus, at 3 per child and 3.20 per adult for a total of 118.40. They took ...

  5. java 重写与重载

    一.方法重写: 参数列表必须完全与被重写方法的相同: 返回类型必须完全与被重写方法的返回类型相同: 访问权限不能比父类中被重写的方法的访问权限更低.例如:如果父类的一个方法被声明为public,那么在 ...

  6. 尝试Spring Data Jpa--告别CRUD

    前言 说到我们的web开发架构分层中,持久层是相对底层也是相对稳定的一层,奠定好根基后,我们才能专注于业务逻辑和视图开发.而自从ORM思想蔓延开来后,全自动ORM的Hibernate和半自动ORM的M ...

  7. PHP与XML

    代码: <?php $dom= new DomDocument('1.0'); $books=$dom->appendChild($dom->createElement_x_x('b ...

  8. 主函数特别之处:public static void main(String[] args)

    public static void main(String[] args) public class Test_java {//主函数特殊之处 public static void main(Str ...

  9. iOS项目——自定义UITabBar与布局

    在上一篇文章iOS项目——基本框架搭建中,我们详细说明了如何对TabBarItem的图片属性以及文字属性进行一些自定义配置.但是,很多时候,我们需要修改TabBarItem的图片和文字属性之外,还需要 ...

  10. 浅谈对SpringMVC的认识

    SpringMVC概念:     他是一个轻量级的开源框架,应用于表现层,基于MVC的设计模式. SpringMVC的特点:     1.他是单例的可以设置成多例.     2.他的线程是安全的    ...