搭建Redmine「项目管理」服务
Redmine是一款以Ruby on Rails撰写的项目管理和缺陷跟踪工具,和国产的禅道可能有几分类似,但和业内顶尖的Jira应该还是有一定差距的吧?但毕竟人家是开源免费的,相应的功能,诸如项目排期,Bug跟踪,Wiki什么的,对我们这种小团队而言基本也够用了。
现在我们来部署Redmine。先扯一句,网上挺多建议用Bitnami来部署的,的确也是,按照官方的教程来步骤真的挺复杂的,不过既然已入坑,就不半途而废了。首先当然是要下载好Redmine,才2M多,厉害啊,下载完后照例解压缩到/opt目录,另外,安装过程中要下载不少依赖,确保你的服务器能访问外网哈~
检查Ruby和Rails环境
我们即将部署的是最新的Redmine 3.3,这个版本要求Ruby 1.9.3+、Rails 4.2。绝大部分Linux发行版都是预装了Ruby的,可用这两个命令检查服务器上的Ruby和Rails版本,在我们的环境中,两者的版本分别是2.3.1和4.2.7.1,符合Redmine要求。
配置数据库
Redmine同样提供了对多种数据库的支持,我们还是选用MySQL。
MySQL侧,自然还是建立一个名为redmine的数据库和用户并授权了,这一步已经重复太多次了。
Redmine侧呢,将./config目录下的database.yml.example文件重命名为database.yml,打开它可以看到这个文件是按着环境分级的,目前我们只需要production环境
注意adapter字段是mysql2而不是mysql,据说前者性能高于后者,相关的依赖下一步中我们会安装;port字段默认是没有的,但当你改变了数据库服务器默认的3306端口时就需要加上了;password字段本身的引号最好不要误删。
关于gem
这一段其实是写到后面又回过头来补充的。
后文中会多次出现一个叫做gem的东西。gem是以标准格式封装好的ruby程序或库,可以和java的jar做类比;但如果是在命令行中执行gem,其实是调用ruby的包管理器rubygem来管理gem包的行为,可以和nodejs的npm做类比。
在国内,由于某些原因,下载gem包的速度就两个字:呵呵,除了FQ,或者不停地retry,更直接的方法应当是更换国内的gem源。网上大部分资料都建议用淘宝源,但淘宝已经停止对这个源的维护了,后续的维护交由ruby-china进行,所以我们应该更换成ruby-china的源。对gem源的操作使用gem sources命令
安装依赖
Redmine的基本安装过程需要不少依赖,某些依赖又有别的依赖[汗……],但总的来看,初期安装还不算多,就3个,mysql2、rmagick和rbpdf-font。
首先安装mysql2
一开始我直接执行了第2步,好在mysql2也是蛮贴心的,提示我需要先执行第1步[赞],安装前置依赖libmysqlclient-dev。
然后是安装RMagick,因为redmine处理一些图片时用到了一个叫做ImageMagick的库,而RMagick作为Ruby和ImageMagick的中间接口,自然也是必不可少的。
但这个的安装就没有mysql2那么幸运了,报错就提示我“可能缺少某些依赖”,可到底缺了啥,谁也不知道,幸好官方文档中说了它还依赖于libmagickwand-dev(咳咳,这个依赖又依赖好多组件哇……)
最后剩下rbpdf-font了,这个倒没影响我的安装,给我整了个在配置的时候报错[无语],看在它没啥太复杂依赖的份上,原谅它吧
安装redmine
redmine使用gem bundler来管理自身的gem依赖,所以首先要安装bundler,然后方可使用bundler安装redmine所需的其他依赖
注意哦,执行第2步的时候会去读取redmine目录下的Gemfile文件,所以要在redmine目录下执行~然后就静静看着bundler刷刷刷又下载了一堆依赖好了……
安装后的几个步骤
我直接罗列出来了,每一步是干什么的也都给了注释
这里我报了2个错
warning: duplicated key at line 466 ignored: “inodot”
LoadError: cannot load such file – rbpdf-font
第1个错误解决的办法是打开报错的这个文件(expanded.rb),按照提示,465行和466行重复了,不知道是个bug还是咋回事,注释掉其中一行就好了;
而第2个错一开始我还挺纠结了,也才有了安装依赖那一小节里边安装rbpdf-font的过程。其实,对于这种扩展依赖,还应该新建一个Gemfile.local文件,在里边加上对rbpdf-font的依赖
其他几个配置
至此redmine基本上已经安装完成了,确实也没那么简单,但还有几个可选的配置可以看一下。打开./config/configuration.yml(由configuration.yml.example重命名而来,和database.yml一样),里面有3个配置
- 邮件通知
- 版本控制
- 附件目录
其中,邮件通知,根据smtp服务不同,配置文件中已经提供了数种示例,肯定有适合的一种;版本控制,主要是配置同redmine整合的版本控制程序的路径等,默认自动检测一般不会有什么问题;附件目录相对比较重要,因为用户上传的东西什么的都在这里,应当要移动到安全性高一点、空间大一点的目录。
在configuration.yml中没有关于日志的配置,查阅官方文档可知,这个配置是可选的,应当配置在additional_environment.rb中,格式形如
最后还有一个名为setting.yml的配置文件,我们无需直接修改它,其中的配置项都可以在redmine运行起来以后,以管理员身份登录去修改。
运行redmine
万事俱备只欠东风
这个命令是用webrick作为http服务器来运行redmine,-e参数指定环境(我们也只有production环境),-b参数指定绑定的ip地址,-p参数指定绑定的端口号。redmine启动后即可通过浏览器访问,初始的用户名密码都是admin。
但是!webrick只适合测试环境使用,据说它有性能问题,网上更多的建议使用thin、puma、mongrel等代替。本着哪个简单用哪个,试试thin吧。
首先自然是安装thin
和rbpdf-font相似,在Gemfile.local中再加入一行
然后重新运行就可以了
使用thin作为http服务器后,redmine的启动方式有所改变,-e和-p的含义没变,-a指定绑定的且默认就是0.0.0.0,-d在后台运行
一般地,还需要将redmine配置成service。