Update (2011-11-29):

各位看官请注意,Win下的解决方案,instantRails已经不是首选,换Railsinstaller 感谢EngineYard 技术支持,winror一个强大支持

没有Devkit在win下安装gem会别扭死

当前支持如下:

(我可不想我的老文坑人,所以夜猪,会尽可能更新自己的老文)

本文旨在对相关资料整理

 

使用ROR开发的项目管理系统Redmine-中文版  

http://chaoqun2003.iteye.com

http://218.107.133.32:5000/wiki/ezwork

http://github.com/zouchaoqun

 

      ● Redmine 0.8.2: http://rubyforge.org/projects/redmine/
  ● InstantRails-2.0-win: http://rubyforge.org/projects/instantrails/

 
  本文介绍了如何在局域网的服务器上安装Redmine,文中一部分是是网上下载的,一部分是自己的原创。由于本人要在公司的内部服务器上安装一个Redmine,然而在网上找到的介绍Redmine的安装的文章都大同小异,实践过程中遇到了不少问题。经过几天的奋战,终于把Redmine完全安装好了,现在把我自己的心得总结一下,以便大家在遇到同样的问题时少走一些弯路。
  首先总结一下本文解决了哪些别人没有解决的问题:(1)将Redmine集成到了已有的PHPNow系统中;(2)总结了安装InstantRails后应该修改哪些配置文件;(3)在非上网机上将RedMine安装为Windows服务,使其能开机自动运行。
  
  1 Redmine介绍
  是一个基于web的项目管理软件,用Ruby开发的。(可以想象成用php写的n个文件,可以在网页上浏览,就像wordpress。)
  
  Redmine:这是基于ROR(Ruby on Rails)框架开发的一套跨平台项目管理系统,是项目管理系统的后起之秀,据说是源于Basecamp的ror版而来,支持多种数据库,除了和DotProject的功能大致相当外,还有不少自己独特的功能,例如提供wiki、新闻台、时间跟踪、feed聚合、导出pdf等待,还可以集成其他版本管理系统和BUG跟踪系统,例如SVN、CVS、TD等等。配置功能强大而且方便,自定义属性和更新通知也很实用,详细的介绍可以看看清华同方的redmine站点。中文版Redmine在线演示:ezWORK、英文版可看Redmine提供的官方演示。
  
  协作对于一个团队来说至关重要,尤其是产品开发的团队,项目化的管理方式已经深入人心,MS Project 所有做过项目管理的人都应该了解,但是每天面对一张静态的甘特图来分配资源、调整进度的做法已经不合时宜了,在 Web 服务盛行的时代,以沟通为核心概念的小型团队项目管理服务 Basecamp 取得了成功,同时还捧红了 Ruby on Rails 框架。
  沟通与共享是现代项目管理的核心,这种 Web 形式的项目管理系统通过“项目(Project)”的形式把成员、任务(问题)、文档、讨论以及各种形式的资源组织在一起,大家参与更新任务、文档等内容来推动项目的进度,同时系统利用时间线索(Timeline)和各种动态的报表(Report)形式来自动给成员汇报项目进度。
  在技术开发领域,Bug 追踪、Wiki 和 版本控制的集成对于项目管理系统来说必不可少,当然能够实现这些功能的系统也有很多,例如:
  ● Trac:基于 Python 的开源程序,应该是最早将 Ticket 与项目结合起来的开发管理系统,支持 Wiki、Timeline、Report 和项目模块分级与里程碑定义,还能够绑定查看SVN内容,简单易用,但是团队开发速度太慢,很多功能确实,无法进行权限分配、多项目管理,配置不够灵活,实在有些遗憾
  ● Jira + Confluence:基于 Java 的 Bug 追踪和企业 Wiki 系统,需要购买,而且很贵,Jira 的 Bug 和事务流管理能力很强大,Confluence 应该是目前最好的企业 Wiki 系统,扩展性强,但是某些操作和体验显得有些跟不上时代
  ● ActiveCollab:基于 PHP 的 Web 项目管理程序,曾经是开源版本的,后来给商业化了,需要购买,Trac 与 Basecamp 的模仿者,安装和使用简单
  还有许多 SaaS 方式的在线项目管理服务,例如:Comindwork、LiquidPlanner 、MyQuire、ProjectSpaces、Huddle、PlanHQ、Goplan 等,不过介于中国的出口带宽情况和用户心态问题,将重要的项目数据放在遥远的第三方目前来说还是有些不现实的…
  啰嗦了很多,下面介绍主角 Redmine,一个 Trac + Basecamp 的混合体,吸取了两个系统的有点,基于 Ruby on Rails 框架开发,开放源代码,可以跨平台部署,indigo 觉得它应该是小型开发团队项目管理的首选系统。
  功能:
  ● 多项目和子项目支持
  ● 可配置的用户角色控制
  ● 可配置的问题追踪系统
  ● 自动日历和甘特图绘制
  ● 支持 Blog 形式的新闻发布、Wiki 形式的文档撰写和文件管理
  ● RSS 输出和邮件通知
  ● 每个项目可以配置独立的 Wiki 和论坛模块
  ● 简单的任务时间跟踪机制
  ● 用户、项目、问题支持自定义属性
  ● 支持多种版本控制系统的绑定(SVN、CVS、Git、Mercurial 和 Darcs)
  ● 支持多 LDAP 用户认证
  ● 支持用户自注册和用户激活
  ● 多语言支持(已经内置了zh简体中文)
  ● 多数据库支持(MySQL、SQLite、PostgreSQL)
  ● 外观模版化定制(可以使用 Basecamp 的主题,感觉上就像是自己架设的 Basecamp 服务)
  
  2 Redmine安装与配置
  下载InstantRails,解压出来。可以把InstantRails想象成要在本机配置php服务器,里面有mysql,phpmyadmin等等。国内我觉得比较好的有“PHPNOW”)下载的包是绿色包,里面有mysql数据库phpmyadmin等等,直接复制到任意一个文件夹里面即可。注意,路径中不要有空格!

  2.1 Redmine安装
  现在redmine用到的数据库和Instantrails里面的MySQL数据库是脱离的,也就是说,接下来的任务,实际上是将redmine的数据与数据库关联,即:导入一些数据库到MySQL里面。仅此而已!(可以想象如同在phpMyAdmin里面导入*.sql的文件,导入数据库。)
  
  方法:
  1) “PHPnowCNGR/rails_apps/redmine/config"下,有文件“database.yml.example”,重命名一下,改成“database.yml”。我的想法是大概将如同*.doc.bak文件的bak去掉吧。这个是redmine数据库的配置文件,里面有数据库的相关信息。
  内容包括:

写道
  production:
  adapter: mysql
  database: redmine
  host: localhost
  username: root
  password:
  encoding: utf8
  
  development:
  adapter: mysql
  database: redmine_development
  host: localhost
  username: root
  password:
  encoding: utf8
  
  test:
  adapter: mysql
  database: redmine_test
  host: localhost
  username: root
  password:
  encoding: utf8

 

  2) 点击“InstantRails”目录里面的“InstantRails.exe”文件。这就是启动环境(Apache)的主程序了。
  
  3) 进入phpMyAdmin下,新建三个数据库(用sql命令方式):
  create database redmine character set utf8;
  (注:进入phpmyadmin下有两种方式。法1:浏览器输入http://127.0.0.1/mysql/    法2:InstantRails界面(就是刚才点击InstantRails.exe后的程序界面)的I→Configure→Database (via PhpMyAdmin)”。如果该栏是灰色的,表示你安装后没重启机器。重启一下即可。这个问题郁闷了我N个小时)
  
  4) 往数据库里面导入数据
  点击InstantRails界面(就是刚才点击InstantRails.exe后的程序界面)的I→Rails Applications→Open Ruby Console Window栏目,然后会跳出dos窗口。在里面输入命令:

  cd redmine-0.8.2 
  rake db:migrate RAILS_ENV="production" 
  rake load_default_data RAILS_ENV="production" 

 
  其中rake db:migrate RAILS_ENV="production" 是创建数据库;rake load_default_data RAILS_ENV="production" 是指明当前项目运行环境为production ,中间会提示选择语言,选择 zh(中文) 。
5) 现在配置结束了,点击InstantRails界面(就是刚才点击InstantRails.exe后的程序界面)的I→Rails Applications→Manage Rails Applications栏目,如下,点击“Start with Mongrel”(启动redmine这个应用程序)。跳出一个dos窗口,不要关闭。现在就可以浏览你配置好的RedMine了。
  
  6) 浏览器输入:http://localhost:3000/ 即可。(注意:管理员id和密码都是“admin”。界面还是英文界面,登录后可以在“设置”里面更改成“简体中文”。)
  
  zml:如果使用InstantRails启动Redmine,则以下配置文件中的路径需要修改为InstantRails安装的实际路径:

写道
  ● E:\InstantRails\InstantRails.ini
  ● E:\InstantRails\use_ruby.cmd
  ● E:\InstantRails\apache\conf\httpd.conf
  ● E:\InstantRails\apache\php.ini
  ● E:\InstantRails\mysql\my.ini

 

  2.2 配置邮件通知
  Redmin可以为一些操作提供邮件通知如主题改变,新增问题等,这样可以让开发人员及时知道变化。在使用此功能前需要先配置邮件服务器,将C:\InstantRails\rails_apps\redmine-0.8.0\config目录下的email.yml.example更名为email.yml,然后用文本编辑器打开此文件,将内容改为如下:

  # Outgoing email settings 
  production: 
    delivery_method: :smtp 
    smtp_settings: 
      address: smtp.163.com 
      port: 25 
      domain: 163.com 
      authentication: :login 
      user_name: PM@163.com 
      password: 123456 
    
  development: 
    delivery_method: :smtp 
    smtp_settings: 
      address: smtp.163.com 
      port: 25 
      domain: 163.com 
      authentication: :login 
      user_name: PM@163.com 
      password: 123456 

   
  这里我采用的是163的Smtp服务器来发送邮件
  然后就可以在Redmine的界面中启用邮件通知,设置一下发件人地址和签名即可。
  2.3 集成SubVersion
  集成SubVersion就很简单了,在版本库页面选择Subersion,然后填写SVN仓库的url和登录Subversion的用户名,密码即可通过Redmine查看svn仓库中的文件并可比较差异。
  2.4 Redmine的WIKI
  Redmine的Wiki功能比较简单,使用wiki时一定要注意在标记的前后都要留有空格,否则会无效如变粗字体:*Ning* 其中第一个 * 的前面要留有一个空格,而第二个*后面也要留有一个空格,其他标记类似。
  在Redmine中可以自定义工作流程,工作流程是指某一个角色针对某一类问题(如功能,缺陷和支持)的状态迁移规则,此时该类问题就被跟踪(此时该类问题也称之为Tracker),状态迁移规则决定了某类问题是否可以从一个状态迁移到另外一个状态
  2.5 更改Theme
  下载Theme,这里我用黑黑的BaseCamp的Style :)
  1.下载地址
  http://theill.com/stuff/redmine/themes/basecamp/stylesheets/application.css
  2.安装方法
  在public\themes下新建目录basecamp,加入样式目录stylesheets,再把css文件加入其中即可,至于如何选用,下面运行Redmine之后进去玩玩,就能找到了,很easy的:)
  
  2.6 Redmine如何与PHPNow集成
  作者按:网上介绍的安装方法一般都是使用InstantRails的,InstantRails中包含了Apache、MySQL。如果已经安装了PHPNow,则同时启动两套Apache和MySQL总是一件不爽的事。实际上,我们只要把InstantRails中的两个目录拷贝到PHPNow中就可以了:Rails-apps、Ruby。
  
  3 Redmine的启动
  3.1 命令行启动Redmine
  3.1.1 方法1:
  使用如下命令行可以启动Redmine:

    CD E:\PHPnowCNGR 
    PATH E:\PHPnowCNGR\ruby\bin;E:\PHPnowCNGR\mysql\bin;%PATH% 
    cd rails_apps\redmine-0.8.2 
    mongrel_rails start -e production -p 3000 

 
  注意:上面最后一条命令必须在Redmine所在的目录下执行!
  3.1.2 方法2:
  在Redmine目录下执行:

    CD E:\PHPnowCNGR 
    :PATH E:\PHPnowCNGR\ruby\bin;E:\PHPnowCNGR\mysql\bin;%PATH% 
    cd rails_apps\redmine-0.8.2 
    ruby script/server -e production 

 
  要求同方法1。如果在其他目录下执行会出错!
  
  3.2 将RedMine安装为Windows服务,开机自动运行
  前段时间用的RedMine,Ruby on Rails写的,通过命令行ruby命令启动,不太方便。因为当系统自动更新重启之后,所有用户就成了注销状态,用户态下执行的命令行进程自然也就没了。
  RedMine现在在我们组俨然成了最重要的工具,开机不能自动启动可不行。
  Ruby提供一个安装Ruby程序为服务的包:mongrel_service。安装其实很简单,只要命令行下运行gem:
  步骤1:下载和更新mongrel_service
    gem install mongrel_service
  此过程中会下载一些其他必须的包。
  经实验发现如果没有上网,则执行该命令后会产生如下显示:

  E:\PHPnowCNGR>cd rails_apps 
  E:\PHPnowCNGR\rails_apps>gem install mongrel_service 
  ERROR:  While executing gem ... (Gem::RemoteFetcher::FetchError) 
      getaddrinfo: no address associated with hostname. (SocketError) 
          getting size of http://gems.rubyforge.org/Marshal.4.8 

 
  作者按:如果是在没有连接互联网的机器上执行该命令,则显示以上信息后就退出了。解决的办法是:先在上网机上执行以上命令,完成后会下载一些文件到 .\ruby\lib\ruby\gems 目录中,其中 .\ruby\lib\ruby\gems\1.8\gems\mongrel_service-0.3.4-x86-mswin32\bin 目录中有一个文件 mongrel_service.exe(本文的附件即为此文件) ,把这个文件拷贝到 .\ruby\bin 下就可以继续执行后面的命令了!
  
  步骤2:使用mongrel_service安装Redmine服务
  然后将RedMine使用mongrel_service安装成Windows服务:

  mongrel_rails service::install -N RedMine -c D:\WebRoot -p 80 –e production 
  mongrel_rails service::install -N RedMine -c E:\PHPnowCNGR\rails_apps\redmine-0.8.2 -p 80 –e production 

 
  这里,我指定服务名为RedMine,我的RedMine在D:\WebRoot,你的要修改,注意指向truck的根目录。监听80端口。
  
  步骤3:修改RedMine服务
  然后修改启动方式为自动启动,并添加MySQL服务为其依赖服务(如果你的MySQL服务器不是本机就不用麻烦了):

  sc config RedMine start= auto depend= MySQL5_pn 

 
  注意,执行sc config系列指令,服务必须是未启动的才行,否则会出错。
  作者按:特别需要注意的是:”atart=”和”depend=”后面必须有空格,否则不能正确执行
  
  步骤4(删除时使用):删除RedMine服务
  将来如果想去掉这个服务,只要执行:

  mongrel_rails service::remove -N RedMine

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐