官方原文:
1.How to upgrade the full Stack migrating the data?
具体步骤:
1.下载新版本的安装程序(以下命令中的installdir均指bitnami redmine安装的目录)
2.将redmine服务停止
./installdir/ctlscript.sh stop
3.只启动redmine的mysql服务
./installdir/mysql/scripts/ctl.sh start
4.找到installdir/apps/redmine/config/database.yml文件,并记下其中production部分的信息,这里包含了你的redmine使用的数据库,用户名及密码。如果有需要,可以把其他几部分的数据库信息也记下来
5.执行如下命令
./installdir/mysql/bin/mysqldump -u username -p -S installdir/mysql/tmp/mysql.sock application_database > backup.sql
其中的username和application_database(默认bitnami_redmine)分别为之前记录下来的数据库名及用户名,执行后会提示输入密码,将之前记录的密码输入后,命令即会执行
6.停止mysql服务
./installdir/mysql/scripts/ctl.sh stop
7.安装新版本的安装程序在新的路径,必须与原版本的区分,如原来安装在redmine-1.2.1-1,新的安装在redmine-1.3.0-1,或将原来的备份后移除,将新的安装在原来的位置(安装完后提示是否要启动的时候选择No)
8.将原来的配置文件 config/configuration.yml 复制到新程序的对应位置覆盖(如果更新前的版本早于1.2.0,则将原来config/email.yml中的内容自己配置到新的config/configuration.yml文件中)
cp redmine-old/apps/redmine/config/configuration.yml installdir/apps/redmine/config/
9.复制上传附件到新的位置
cp redmine_old/apps/redmine/files/* installdir/apps/redmine/files/
10.将之前备份的sql脚本还原到新的数据库
./installdir/mysql/bin/mysql -u username -p -S installdir/mysql/tmp/mysql.sock application_database < backup.sql
注意,这里的密码要到新安装的database.yml中找
11.执行数据库的更新操作(这步可能会遇到些麻烦)
首先将目录切换到installdir/apps/redmine
cd installdir/apps/redmine
然后执行更新数据库的命令操作
./installdir/ruby/bin/rake db:migrate RAILS_ENV=production
注意:在这步数据库更新的操作中,我遇到过如下的几个问题,这里将经验分享下
首先遇到提示
Some gems may need to be installed or updated. Please run `bundle install --without development test`.
由于我们使用的是Bitnami打包的程序,所以这里所有提示的命令其实安装包中都已经提供,千万不要直接执行bundle install --without development test命令
这是Redmine提供的帮助提示,但我们用bitnami redmine,使用的是mysql,所以应该这样执行命令
./installdir/ruby/bin/bundle install --without development test postgresql sqlite
看到提示Your bundle is complete!表示命令成功执行。这之后重新执行一次更新数据库的命令即可
另外,在执行更新命令中遇到提示
== CreateChangesetParents: migrating ========================================= -- create_table(:changeset_parents, {:id=>false}) rake aborted! An error has occurred, all later migrations canceled: Mysql::Error: Table 'changeset_parents' already exists: CREATE TABLE `changeset_parents` (`changeset_id` int(11) NOT NULL, `parent_id` int(11) NOT NULL) ENGINE=InnoDB Tasks: TOP => db:migrate (See full trace by running task with --trace)
不知道怎么回事,可能是之前摸索的时候,创建过表了,但别的表创建没有这样的问题,也可能是这个更新方法写的有问题,没有判断表是否创建
然后只能去把创建这个表的脚本文件删除,过程如下:
#以下命令均在installdir/apps/redmine路径下执行 ls db/migrate/*changeset_parents* #显示结果db/migrate/20110902000000_create_changeset_parents.rb,显然这正式我们要找的创建脚本 #根据显示结果执行删除 rm db/migrate/20110902000000_create_changeset_parents.rb
最后重新执行数据库更新命令即可。遇到类似问题,可以使用相同的方法来解决该问题
最后,完成后启动即可使用,这里略过了一些SVN的更新动作,具体可以根据官方文档自行操作