微信群里怎么@别人:CentOS下Redmine与SVN的整合——基于Apache和Mysql安全认证与读写控制

来源:百度文库 编辑:中财网 时间:2024/04/24 01:57:55

CentOS下Redmine与SVN的整合——基于Apache和Mysql安全认证与读写控制

 來源:http://www.emsym.com/blog/?p=1567

概述

最近安装了redmine,一个灵活的项目管理系统,使用Ruby on Rails框架进行开发,跨平台且可以使用多种数据库(MySQL,PostgreSQL,SQLite)。然后安装了subversion版本控制系统,使用Apache的mod_auth_mysql模块为subversion做出认证以及验证,最后成功的将redmine与svn整合在一起,使用统一的用户进行读写权限的控制。

使用到的相关应用程序

CentOS 5.3平台

redmine-0.9.3

subversion 1.4.2

Apache 2.2.14

MySQL 5.0.77

安装redmine

redmine的官方网站上有详细的资料,无须多言。http://www.redmine.org/wiki/redmine/RedmineInstall 

提几个注意的地方:

  • 在database.yml配置文件里面

production:
  adapter: mysql
  database: redmine
  host: localhost
  username: root
  password: yourPassword
  encoding: utf8
  socket:  /var/lib/mysql/mysql.sock //跟自己的my.cnf一致

  • 由于redmine-0.9.3只支持ruby 1.8.6或ruby 1.8.7的版本,yum 安装的是ruby 1.8.5, 所以需要编译源代码安装,下载地址:http://rubyonrails.org/download 在此之前,需要安装GCC编译器。
  • 然后安装rubygems,解压后进入当前目录执行 ruby setup.rb
  • 数据库使用mysql,首先需要安装mysql,mysql-server,mysql-devel,然后需要 gem install mysql,ruby-mysql-2.9.2

 

安装subversion

yum安装,非常方便

在安装完subversion后,在var/www/svn目录下创建一个repos版本库,作为测试所用。

然后编辑/etc/httpd/conf.d/subversion.conf配置文件,如下:

LoadModule dav_svn_module     modules/mod_dav_svn.so


    DAV svn
    SVNPath /var/www/svn

这样,你就可以通过Apache访问subversion版本库了,地址如下:http://yourIP/repos

使用Apache为subversion做出认证

首先需要下载Apache的mod_auth_mysql模块,在成功安装后重新启动Apache服务器会把该模块加载进来。

修改subversion.conf配置文件,如下:

LoadModule dav_svn_module     modules/mod_dav_svn.so

LoadModule authz_svn_module   modules/mod_authz_svn.so

LoadModule mysql_auth_module modules/mod_auth_mysql.so


        DAV svn
        SVNParentPath /var/www/svn 
        AuthType Basic
        AuthName Subversion
        AuthMySQLHost localhost
        AuthMYSQLEnable on
        AuthMySQLPwEncryption sha1 //用户密码的加密类型
        AuthMySQLUser redmine
        AuthMySQLPassword yourPassword
        AuthMySQLDB redmine
        AuthMySQLUserTable svn_user
        AuthMySQLNameField user_name
        AuthMySQLPasswordField user_passwd
        AuthMySQLGroupTable svn_group
        AuthMySQLGroupField user_group
        Require valid-user

include /etc/httpd/conf.d/svn_htaccess/*.htaccess //导入控制所有版本库读写权限的配置文件

然后在针对redmine的数据库表创建两个视图

create view svn_user as SELECT users.login AS user_name, users.hashed_password AS user_passwd
FROM users
WHERE users.status =1
and users.type=’user’

create view svn_group as
select DISTINCT  users.login as user_name,concat(projects.identifier,"_",roles.name) as user_group from
users,roles,projects,members,member_roles where
users.status=1 and
users.type = ‘user’ and
users.id=members.user_id and
members.id= member_roles.member_id and
projects.id =members.project_id

经过以上配置文件的修改及数据库视图的创建,重新启动Apache服务器,即可以通过Apache进行svn的安全认证。

对特定版本库读写权限的控制

对每一个版本库创建添加一个访问控制文件,如在/etc/httpd/conf.d/svn_htaccess下的.htaccess文件,

       
                Require valid-user//所有的合法用户有读的权限 
       

       
         Require group edu_Developer //只有edu_Developer组有读写权限
       

重新启动Apache服务器后,管理人员可以控制repos1版本库的读写访问权限。同理可以扩展到其他的版本库。