windows和linux下安装redmine

前日觐见老板,拿到一个任务:给学院的实训系统搞一个像模像样的demo。功能有项目生命周期管理(要求有需求、设计、实现和测试阶段),角色权限控制(老师和学生),wiki,issue tracking,计划,时间记录等等不一而足。因为时间比较紧,月底就要拿出来,老板也建议我在一个现有的开源项目管理工具的基础上进行修改。

回头立马在网上找资料。google上搜,很多都是广告和软文,不靠谱。维基上的这个页面倒是很不错。以前老板要我就apis调查工具的时候就看过。最后就功能和开发两个方面遴选,有四个候选者:

project.net:老牌强队,有丰厚的历史底蕴,获得多种省优部优荣誉。页面上的六大功能都占全了,Java开发,正好我最熟悉。嗯,一号种子。

trac:功能简单易用,虽然不多但基本足够。没有历史包袱,以前曾经多次部署,也有改造的经验,Python开发。二号种子。

redmine:开起来挺不错的工具,功能比较贴心。有一些自定义的功能,很有潜力。RoR开发,显然是新同学。三号种子。

apis改造:持外卡参赛,最熟悉,功能也还行,唯独缺少wiki。非种子选手。

首先淘汰掉的是apis。在项目管理工具中,wiki的功能还是很重要的,可偏偏wiki的实现比较麻烦,虽然有现有的wiki引擎,可是想到要驱动hibernate,改造数据库的事情就头大。界面其实也不是很好看,呵呵。

第二个毙掉了trac。无奈功能不够丰富,界面也不够好看。

剩下project.net和redmine PK。虽然project.net使用Java开发我最熟悉,但正因为我最熟悉,所以知道Java做的网站修改起来不是一般的费事,相对于php,python,ruby这些脚本语言自然不用说,连和ASP.NET相比,也占不到什么便宜。要找到一个功能的逻辑所在基本上都要花掉好几分钟在配置文件、页面文件和Java代码里刨。在看project.net的介绍时发现其致命伤:数据库仅支持Oracle。直接退出了PK。

先上几张redmine的截图:

问题列表,加了subtask插件

编辑问题:

论坛系统 .png

日历功能:

test.png

代码评审插件

论坛系统 - - xforum4j-xforum4j.ipr - Diff - 实训系统.png

下面简单介绍下Windows下redmine的安装步骤(一台服务器,一台本机开发)。另外我安装的时候是按照这篇文章的指导,译言上的,居然原文还是日文。

首先安装ruby/gem/rails。Windows下首选InstantRails,无需配置直接上手,缺点就是一些gem的版本比较低,比如rails似乎只有2.1.1,而代码库中的redmine(0.9.x)要求2.2.2以上的rails。不过最新稳定版的redmine-0.8.4可以直接用。

把下载的redmine解压到InstantRails的rails_apps目录。在config目录下新建一个database.yml文件,内容如下:

production:
   adapter: mysql
   database: redmine
   host: localhost
   username: redmine
   password: redmine
   encoding: utf8

如果是0.9.x的版本,需要在config/environment.rb里添加ession_key_secret:

config.action_controller.session = { :session_key => "_myapp_session", :secret => "some secret phrase of at least 30 characters" }

接下来添加MySQL的数据库的内容。InstantRails可以从I -> Configure -> Database (via phpMyAdmin)。打开SQL窗口,输入如下语句:

create database redmine character set utf8;
grant all privileges on redmine.* to redmine@localhost identified by 'redmine';

建立数据库之后是导入初始数据,使用I -> Rails Applications -> Open Ruby Console打开设置了环境变量的命令行窗口:

>cd redmine
>rake db:migrate RAILS_ENV="production"
>rake load_default_data RAILS_ENV="production"

第二个rake任务会要求选择一个默认语言。之后就可以启动Rails了。InstantRails默认启动Mongrel服务器。

>ruby script\server -e production

这时候就可以使用浏览器访问http://localhost:3000/,默认帐号建有admin:admin

另外,Windows下除了使用命令行启动Rails服务之外,还可以参考robbin的这篇文章使用Apache+mod_proxy+Mongrel部署Rails服务。

===================Linux和Windows的分割线====================================

Linux下,对于ruby/gem/rails,编译安装/apt-get/yum自便,国内用户看哪个速度快就用哪个。由于Linux主要作为服务器使用,不太可能采用Windows下命令行启动服务器的方式来跑服务,因此需要把ruby服务挂到某个Web服务器上,比如Apache和Lighttpd。下面仅介绍使用mod_rails(Phusion Passenger)来使用Apache跑Rails的配置。

mod_rails的安装文档在这里,并不复杂。只需要:

gem install passenger
passenger-install-apache2-module

后一步会告诉你把Apache的几行配置代码给拷贝到Apache的配置文件里,形如:

LoadModule passenger_module ...
PassengerRoot ...
PassengerRuby ...

Apache的配置文档在这里,部署RoR程序的部分在这里。部署是通过虚拟主机的方式来弄。具体就不多说了,用Linux部署的同学看看文档就会了。

评论:看到这篇文章末尾的提及的感想,不得不说说redmine强大的插件系统。感想里说到的事件跟踪管理和图表的不足,都有插件来解决这个问题,这些插件也有可能在以后被纳入主程序的功能中。而code_review这个插件非常适合实训系统中教师浏览学生的作业代码的工作。从这几天对RoR的接触来看,不得不承认Ruby开发Web系统的确是如鱼得水,相同水平的Ruby和Java程序员之间的生产率差几倍并不奇怪。以插件经常要用到的AOP而言,Rails的alias_method_chain的扩展使用起来非常优雅;使用Ruby的mixin特性来扩展原来的功能也是恰到好处。

p.s. 今天忽然想到,以后找工作会不会直接整个python或者ruby的活?虽然现在这两门语言的经验还很不足,但兴趣浓厚。