近日,需迁移一台老的服务器,上面有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服务(可以是本机或者其他服务器主机)。
-
apt-get install apache2 libapache2-mod-svn mysql-client libaprutil1-dbd-mysql
设置apache2的相关模块加载(注意,安装
libapache2-mod-svn时已经自动加载了一些模块了,否则还需要增加dav_svn.load和dav_svn.conf),下面的模块主要是利用数据库进行认证的。
修改apache2的一个主机配置,以完成subversion的认证访问。
下面是一个例子
-
<VirtualHost>
-
...
-
# 数据库的一些访问的基本配置
-
# 数据库模式
-
DBDriver mysql
-
# 数据库访问连接信息,要根据实际情况配置,host是数据库服务主机,port对应服务端口,dbname对应要访问的数据库,user是访问用户名,pass是访问密码(密码是明文的)
-
DBDParams "host=192.168.1.150 port=3306 dbname=svnauth user=authuser pass=dbpasswd"
-
DBDMin 4
-
DBDKeep 8
-
DBDMax 20
-
DBDExptime 300
-
# 一个subversion项目的配置
-
-
<Location /svnprj>
-
# 配置为采用DAV访问的subversion仓库
-
DAV svn
-
# 仓库数据放置位置,注意采用的是FSFS数据结构的仓库
-
SVNPath /var/svnlibs/svnprj
-
# 一个解析XSLT数据定义,在浏览器中引用(相对于web路径的)
-
SVNIndexXSLT /svnindex.xsl
-
SVNAutoversioning on
-
AuthName "Svnprj MySql"
-
AuthType Basic
-
# 认证方式为dbd,即数据库
-
AuthBasicProvider dbd
-
require valid-user
-
# 认证用户查询语句,要根据实际情况修改,这里表名为users ,用户名字段为user_name ,用户密码字段为user_passwd
-
AuthDBDUserPWQuery "SELECT user_passwd FROM users WHERE user_name = %s"
-
-
# 为认证用户开放读权限
-
<LimitExcept GET PUT DELETE POST PATCH MKCOL COPY MOVE LOCK UNLOCK REPORT >
-
# 用户组权限配置
-
# 用户组采用数据库查询
-
require dbd-group work
-
# 用户组查询语句,要根据实际情况修改,这里表名为groups ,用户名字段为user_name ,用户组字段为user_group
-
AuthzDBDQuery "SELECT user_group FROM groups WHERE user_name = %s"
-
</LimitExcept>
-
<LimitExcept GET PUT DELETE POST PATCH MKCOL COPY MOVE LOCK UNLOCK REPORT >
-
# 个别用户权限配置
-
require user auser
-
</LimitExcept>
-
<Limit GET OPTIONS PROPFIND REPORT>
-
require valid-user
-
</Limit>
-
</Location>
-
...
-
</VirtualHost>
至此,一个支持mysql认证的apache2.4集成subversion仓库服务就配置完成。这是对于一个仓库的配置,如果要配置为多库,只需要把
-
SVNPath /var/svnlibs/svnprj
修改为
-
# 指定多个仓库的上级目录
-
SVNParentPath /var/svnlibs
-
SVNListParentPath on
即可。
阅读(8252) | 评论(0) | 转发(0) |