redmine-0.9.x配置过程

项目管理系统redmine对我来说,有一种特别的感情。它使我去接触了ROR,使我重新认识了ubuntu,并且也是它,让我得到了第一份工作。值此3月,距redmine-0.8.4发布已经过去了10个月,现在的最新稳定版已经更新到了0.9.3,并且rails的版本也已升至2.3.5,而且发布了3.0 beta。虽然ruby的黄金时期已经过去了几个年头,但是它的发展势头还是不减。

于是当初我写的关于redmine-0.8.x配置文档已经略显过时了。

今天看到了redmine-0.9.3,于是就像当年一样看着官方wiki里的指导走了一遍过程。中间遇到了不少问题,所以本文不是一个标准的配置文档,而是我自己的整个配置过程——包含着遇到的各种问题,以及解决方案。

官方网站:http://www.redmine.org/ 有很多好的资料,下载wiki:http://www.redmine.org/wiki/redmine/Download 也能带来很多帮助,最后,redmine在rubyforge上的下载地址:http://rubyforge.org/frs/?group_id=1850

从0.9.x开始,redmine的需求变成了ruby-1.8.6,1.8.7 Rails-2.3.5 Rack-1.0.1,而Rails-2.3.5已经包含在了vender目录里了。这次的配置平台式ubuntu-9.10-server-i386,并预装了LAMPserver。

进入工作目录,这里选择主目录。

cd -

下载redmine-0.9.3

wget http://rubyforge.org/frs/download.php/69449/redmine-0.9.3.tar.gz

解压

tar zxvf redmine-0.9.3.tar.gz

进入解压后的redmine根目录

cd redmine-0.9.3

MySQL数据库设置

mysql -u root -p
mysql> create database redmine character set utf8;
mysql> grant select,insert,delete,update,create,drop,alter,index on redmine.* to redmine
mysql> SET PASSWORD FOR 'redmine' = PASSWORD('redminePASSWORD');
mysql> flush privileges;
mysql> exit;

配置redmine数据库配置文件

cp config/database.yml.example config/database.yml
vim config/database.yml
production:
  adapter: mysql
  database: redmine
  host: localhost
  username: redmine
  password: redminePASSWORD

如果数据库不是使用标准的端口(3306),使用port指定端口号:

production:
  adapter: mysql
  database: redmine
  host: localhost
  port: 3307
  username: redmine
  password: redminePASSWORD

生成会话存储密码

RAILS_ENV=production rake config/initializers/session_store.rb

这会报出一个rake尚未安装的错误,使用下面的命令安装rake。

apt-get install rake

同时附带安装了

libruby1.8 ruby ruby1.8 unzip zip

再次运行rake,仍然报错

rake aborted!
no such file to load -- rubygems

跟着报错信息继续安装缺失的包

apt-get install rubygems

同时附带安装了

irb1.8 libreadline-ruby1.8 rdoc1.8 rubygems1.8

再次运行rake,成功执行。
注:r3055之后的版本移除了config/initializers/session_store.rb,使用下面的命令替代。

rake generate_session_store

完成了会话存储密码生成后,就可以开始创建数据库表,在redmine的根目录下运行

RAILS_ENV=production rake db:migrate

然而又报错了

rake aborted!
Could not find RubyGem rack (~> 1.0.1)

如果这个时候安装rack,必须指定版本,因为redmine-0.9.3需求的事rack-1.0.1,如果直接

gem install rack

这将会安装rack-1.1.0,这种情况下运行rake的报错信息会说明这点

rake aborted!
RubyGem version error: rack(1.1.0 not ~> 1.0.1)

所以必须指定版本安装rack,用--version参数

gem install rack --version=1.0.1

再次运行rake,发觉报错信息变成了

rake aborted!
no such file to load -- net/https

这时联想到https,可能是缺少了SSL的某些文件,对于ruby,执行

apt-get install libopenssl-ruby

再次运行rake,报错信息再次变化

rake aborted!
no such file to load -- mysql

对此,执行

apt-get install libmysql-ruby

运行rake后执行成功,数据库表被创建。
然后插入默认配置数据到数据库里

RAILS_ENV=production rake redmine:load_default_data
Select language: bg, bs, ca, cs, da, de, el, en, es, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sr, sv, th, tr, uk, vi, zh, zh-TW [en]zh
====================================
Default configuration data loaded.

运行redmine的用户必须可以读写files, log, tmp这三个目录,假设由redmine这个用户运行,就需要执行下面的命令

mkdir tmp public/plugin_assets
sudo chown -R redmine:redmine files log tmp public/plugin_assets
sudo chmod -R 755 files log tmp public/plugin_assets

最后在redmine的根目录运行下面的命令,启动redmine。

ruby script/server webrick -e production

这个WEBrick是一个轻量的web服务器,一般总是用作开发和调试。再验证了redmine安装后,就可以考虑把它迁移到apache上去了。
验证http://localhost:3000/来验证redmine的配置。用户名admin,密码admin。

关于SMTP邮件服务器的配置,官方也有说明。因为0.9.x和0.8.x相比这部分没有变化,所以可以参看我以前写的关于0.8.x文章。

数据备份方面,文档真的很贴心。之前0.8.x版本还不曾有的备份步骤,现在也提供的比较完善了。甚至直接提供了命令:

# Database
/usr/bin/mysqldump -u <username> -p<password> <redmine_database> | gzip > /path/to/backup/db/redmine_`date +%y_%m_%d`.gz

# Attachments
rsync -a /path/to/redmine/files /path/to/backup/files

将命令里的/path/to/redmine和/path/to/backup换成实际情况里的目录。这两条命令很明确的指出了redmine的备份,只需要备份数据库以及file文件夹。

至此,redmine已经能很好地工作了。如果打算把它部署到apache上,可以参看我之后写的文章。