以往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
点击(此处)折叠或打开
- a2enmod auth*_dbd dbd
下面是一个例子
点击(此处)折叠或打开
-
<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>
点击(此处)折叠或打开
- SVNPath /var/svnlibs/svnprj
点击(此处)折叠或打开
-
# 指定多个仓库的上级目录
-
SVNParentPath /var/svnlibs
- SVNListParentPath on