使用apache、mod_dav_svn和mod_perl管理版本库的访问权限¶
概述¶
在此篇说明中,我们将配置apache使其通过mod_perl来进行访问控制。使用apache2和mysql及postgresql测试通过,但对所有可以提供perl DBD模块的数据库来说应该都可以使用。
您需要Redmine的r860以上版本。如果您的Redmine版本低于r916,需要下载 Redmine.pm
您的SVN服务器上需要安装apache,并安装以下模块:mod_dav_svn, mod_perl2, DBI 和 DBD::mysql (或者您所使用的数据库的DBD驱动)
在Debian/ubuntu上,您必须执行:
aptitude install libapache2-svn libapache-dbi-perl libapache2-mod-perl2 libdbd-mysql-perl libdigest-sha1-perl
启用apache模块¶
在Debian/ubuntu上:
a2enmod dav a2enmod dav_svn a2enmod perl
Apache配置¶
您需要将 "Redmine.pm" 复制到SVN服务器上,并在apache配置文件(例如 /etc/APACHE_DIR/conf.d/ )中添加一些参数。
您必须将下列参数中的 Redmine.pm 的路径和数据库信息修改为与实际一致:
PerlRequire /usr/local/apache/Redmine.pm
<Location /svn>
DAV svn
SVNParentPath "/var/svn"
AuthType Basic
AuthName redmine
Require valid-user
PerlAccessHandler Apache::Authn::Redmine::access_handler
PerlAuthenHandler Apache::Authn::Redmine::authen_handler
## for mysql
PerlSetVar dsn DBI:mysql:database=databasename;host=my.db.server
## for postgres
# PerlSetVar dsn DBI:Pg:dbname=databasename;host=my.db.server
PerlSetVar db_user redmine
PerlSetVar db_pass password
</Location>
# a private location in read only mode to allow Redmine browsing
<Location /svn-private>
DAV svn
SVNParentPath "/var/svn"
Order deny,allow
Deny from all
# only allow reading orders
<Limit GET PROPFIND OPTIONS REPORT>
Allow from redmine.server.ip
</Limit>
</Location>
这将添加2个Location参数,一个是 svn (同时配置了使用Redmine数据库中的用户信息进行认证和访问控制的参数),另一个是 svn-private (只读并通过IP限制只允许Redmine的浏览)
这样配置就完成了,您可以试着浏览一些项目的版本库,例如:
svn ls http://my.svn.server/svn/myproject
如果你访问的是非公开项目的版本库,将需要输入密码。