Chinaunix首页 | 论坛 | 博客
  • 博客访问: 703126
  • 博文数量: 95
  • 博客积分: 1773
  • 博客等级: 上尉
  • 技术积分: 1653
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-17 23:28
文章分类
文章存档

2018年(2)

2017年(10)

2016年(7)

2015年(48)

2014年(2)

2013年(2)

2012年(2)

2011年(7)

2010年(7)

2009年(3)

2008年(1)

2007年(4)

分类: LINUX

2017-01-09 15:32:59

近日,需迁移一台老的服务器,上面有apache2.2 下mysql认证的subverison应用。遂进行了研究。
以往apache2的配置均不能使用,主要是因为apache2.4.x和apache2.2.x中利用mysql完成认证的模块有了较大变化。以往是auth_mysql模块,这个模块在apache2.4.x中已经失效,需要用authn_dbd 和 authz_dbd模块进行替换,相应的配置也需要进行修改。
下面详述相应设置。
环境:debian8u2,所有的包均是利用apt-get安装。
-------------------------------------------------------------
安装需要的软件包,注意,本文没有涉及mysql服务的搭建,认为已经搭建好了mysql服务(可以是本机或者其他服务器主机)。

点击(此处)折叠或打开

  1. apt-get install apache2 libapache2-mod-svn mysql-client libaprutil1-dbd-mysql
设置apache2的相关模块加载(注意,安装libapache2-mod-svn时已经自动加载了一些模块了,否则还需要增加dav_svn.load和dav_svn.conf),下面的模块主要是利用数据库进行认证的。

点击(此处)折叠或打开

  1. a2enmod auth*_dbd dbd
修改apache2的一个主机配置,以完成subversion的认证访问。
下面是一个例子

点击(此处)折叠或打开

  1. <VirtualHost>
  2. ...
  3.     # 数据库的一些访问的基本配置
  4.     # 数据库模式
  5.     DBDriver mysql
  6.     # 数据库访问连接信息,要根据实际情况配置,host是数据库服务主机,port对应服务端口,dbname对应要访问的数据库,user是访问用户名,pass是访问密码(密码是明文的)
  7.     DBDParams "host=192.168.1.150 port=3306 dbname=svnauth user=authuser pass=dbpasswd"
  8.     DBDMin 4
  9.     DBDKeep 8
  10.     DBDMax 20
  11.     DBDExptime 300
  12.     # 一个subversion项目的配置
  13.     
  14.     <Location /svnprj>
  15.       # 配置为采用DAV访问的subversion仓库
  16.       DAV svn
  17.       # 仓库数据放置位置,注意采用的是FSFS数据结构的仓库
  18.       SVNPath /var/svnlibs/svnprj
  19.       # 一个解析XSLT数据定义,在浏览器中引用(相对于web路径的)
  20.       SVNIndexXSLT /svnindex.xsl
  21.       SVNAutoversioning on
  22.       AuthName "Svnprj MySql"
  23.       AuthType Basic
  24.       # 认证方式为dbd,即数据库
  25.       AuthBasicProvider dbd
  26.       require valid-user
  27.       # 认证用户查询语句,要根据实际情况修改,这里表名为users ,用户名字段为user_name ,用户密码字段为user_passwd
  28.       AuthDBDUserPWQuery "SELECT user_passwd FROM users WHERE user_name = %s"
  29.     
  30.       # 为认证用户开放读权限
  31.       <LimitExcept GET PUT DELETE POST PATCH MKCOL COPY MOVE LOCK UNLOCK REPORT >
  32.             # 用户组权限配置
  33.             # 用户组采用数据库查询
  34.             require dbd-group work
  35.             # 用户组查询语句,要根据实际情况修改,这里表名为groups ,用户名字段为user_name ,用户组字段为user_group
  36.             AuthzDBDQuery "SELECT user_group FROM groups WHERE user_name = %s"
  37.       </LimitExcept>
  38.       <LimitExcept GET PUT DELETE POST PATCH MKCOL COPY MOVE LOCK UNLOCK REPORT >
  39.             # 个别用户权限配置
  40.             require user auser
  41.       </LimitExcept>
  42.       <Limit GET OPTIONS PROPFIND REPORT>
  43.        require valid-user
  44.       </Limit>
  45.     </Location>
  46. ...
  47. </VirtualHost>
至此,一个支持mysql认证的apache2.4集成subversion仓库服务就配置完成。这是对于一个仓库的配置,如果要配置为多库,只需要把

点击(此处)折叠或打开

  1. SVNPath /var/svnlibs/svnprj
修改为

点击(此处)折叠或打开

  1. # 指定多个仓库的上级目录
  2. SVNParentPath /var/svnlibs
  3. SVNListParentPath on
即可。







阅读(8230) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~