redmine的本地升级与异地迁移升级

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

最近总监给我一个任务,要求我对1.2.1版本的redmine迁移到另外一个服务器,并升级到当前最新的2.3.1版本redmine。有了这个要求就在网上查看文档,我看的是http://www.redmine.org/projects/redmine/wiki/RedmineUpgrade

当时看的以为就是迁移方面的,没想到折腾了一整天都没有成功,各种错误发现,解决了遇到的各种问题又遇到了另外的问题,总的来说就是一直不成功,所以我决定听30分钟歌曲换个心情再来弄这个玩意。最后当我认认真真的观看了这个文章后,我才发现这个文章是关于在本地为redmine升级的,而不是迁移(就这样浪费了我一天),最后根据经验借鉴,找到了实现迁移的方法,目前已经成功的解决此问题,下面分享一个我的经验,希望对大家有帮助。

本文分2个部分,一个是本地版本更新,一个是异地迁移版本更新。

都是围绕着redmine从1.2.1版本升级到2.3.1版本

系统环境都是centos 5.6

1.2.1版本的redmine使用的ruby为1.8.5

2.3.1版本的redmine使用的ruby为1.9.3

记住在进行版本更新的时候一点要更新ruby,并且版本为1.9.x

一、本地版本更新

1、备份数据库,redmine的数据都是存放到数据库里,所以版本更新的第一步就是备份当前数据库(这步主要是防止升级出现问题,能及时的回复数据,小心为主)

我使用的是mysqldump,我曾经咨询过我公司的dba,他说一般数据库的ibdata日志如果使用共享表空间,大小超过20g的话,他使用xtrabackup备份与恢复,小于的话都是使用mysqldump,我按照他的方法实验了一下,确实在进行备份redmine的时候,使用mysqldump备份与恢复速度更快、更方便。

使用的命令为mysqldump –u 用户名 –p 密码 –database 数据库名称 >/tmp/redmine.sql

使用这个命令是把redmine数据库全库备份到tmp目录的redmine.sql里

2、下载最新的版本并解压

1
2
3
wget http: //rubyforge.org/frs/download.php/76933/redmine-2.3.1.tar.gz
tar zxf redmine- 2.3 . 1 .tar.gz
mv redmine- 2.3 . 1  redmine

3、修改数据库的配置文件

1
2
3
cd redmine
cp config/database.yml.example config/database.yml
vim config/database.yml

修改其中mysql2里的redmine数据库名称、用户名与密码

在这步官网要求

1
Copy your database settings-file config/database.yml into the  new  config directory. If you're running Redmine >=  1.4  with  mysql and ruby1. 9 , change the database adapter to `mysql2`.

但如果你使用mysql的话,根据官网的要求在进行下一步

1
rake generate_secret_token

会出现pg_config找不到,要你安装postgresql,所以没有必要按照官网的做,直接把最新版本的redmine里的数据库配置模板给重命名并修改数据库信息即可。

4从老版本的redmine把config/configuration.yml复制到新版本的config目录里

5、把老版本里的files文件都复制到新版本里的files里(这个文件里包括你所有的上次文件,所以一定要复制的);

6、生成随机的密钥文件来加密会话数据

1
rake generate_secret_token

完成后可以在config/initializers/里看到有secret_token.rb文件

7、使用rake db:migrate RAILS_ENV=production来更新你的数据库,否则运行新版本redmine到使用老版本数据库与数据的时候,在打开settings界面会报错误;

如果你运行了一些插件,也要运行他们的数据运行程序,需要使用下面命令

1
rake redmine:plugins:migrate RAILS_ENV=production

8、更新之前的存储与session

1
2
rake tmp:cache:clear
rake tmp:sessions:clear

9、更新版本完成,运行redmine就可以。

现在就已经完成了你在本地进行redmine的版本更新。

二、异地迁移版本更新

按照第一部分“本地redmine版本更新”的1-5步骤来操作,之后按照下面步骤

1创建数据库与授权用户

1
2
3
CREATE DATABASE redmine CHARACTER SET utf8;
CREATE USER  'redmine' @ 'localhost'  IDENTIFIED BY  'my_password' ;
GRANT ALL PRIVILEGES ON redmine.* TO  'redmine' @ 'localhost' ;

    2、导入老redmine数据库的数据到新的redmine库里    

    使用mysqldump –u 用户名 –p 密码 </tmp/redmine.sql

    3安装依赖

1
2
gem install bundler
bundle install --without development test

同时还得注意Rmagick,它的功能为allows the use of ImageMagick to manipulate images for PDF and PNG export

如果没有安装,需要使用bundle install --without development test rmagick安装

如果在使用gem install rmagick安装的时候,出现

1
Can 't install RMagick 2.13.2. Can' t find Magick-config  in  /usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/apache/bin:/root/bin

需要用以下方法解决

1
yum install ImageMagick-devel

如果你遇到

1
2
3
4
Package MagickCore was not found  in  the pkg-config search path.
Perhaps you should add the directory containing `MagickCore.pc'
to the PKG_CONFIG_PATH environment  var iable
No  package  'MagickCore'  found

用以下方法解决

1
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig gem install rmagick

之后再按照第一部分“本地版本更新”的6-9步操作即可完成异地迁移版本更新redmine。

需要注意的事,在redmine最新的2.3.1版本里,如果你想在后台运行redmine可以使用

1
ruby script/rails server webrick -e production –d
但你在web里登陆的时候会发现打开一个节目会等待5-8秒左右,访问速度非常缓慢,这个问题主要是由于webrick是默认的启动命令是使用webrick服务器,webrick是单进程单线程的,只能一次处理一个请求,当有请求阻塞时,就排队。所以建议使用nginx+Passenger方式或者使用Mongrel,我使用的方法为Mongrel,先介绍一下Mongrel。
Mongrel是一种快速的针对Ruby的Http服务器,专门为部署发布ROR应用而产生的。Mongrel相比Rails自带的纯Ruby服务器Webrick速度快很多并支持并发访问,有望成为Ruby的Tomcat.究其原因是Remine的默认服务器webrick需要解析目标地址的主机名。
现在介绍一下如何实现。

1
gem install mongrel

如果遇到
1
2
ERROR: Error installing mongrel:
ERROR: Failed to build gem  native  extension.

原因在于Mongrel 1.1.5与Ruby 1.9.x 不兼容。可以通过安装另个版本

1
gem install mongrel --pre

安装完成,但发现mongrel并不是redmine依赖文件,redmine启动时候是不会默认载入的。因此要加入配置文件。如下

创建文件Gemfile.local,文件内容如下

1
2
# Gemfile.local
gem  "mongrel"

把这个文件放在redmine的根目录下

1
ruby script/rails server mongrel -e production –d

这样在访问你的redmine界面时候速度就明显上升很多。




 本文转自 reinxu 51CTO博客,原文链接:http://blog.51cto.com/dl528888/1228105,如需转载请自行联系原作者


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
分布式计算 安全 Hadoop
OushuDB 如何安装与升级
OushuDB 如何安装与升级
65 0
|
存储 运维 监控
使用 NineData 快速构建企业容灾备份
使用 NineData 快速构建企业容灾备份。另外,NineData 也突破传统技术方案,推出实时日志备份:基于增量日志监听采集技术,实时获取并备份数据库中的变化数据,实现秒级 RPO 的备份能力,真正做到数据零丢失。有效保护企业的核心数据,构筑企业数据安全的最后一道防线。
283 1
使用 NineData 快速构建企业容灾备份
|
存储 弹性计算 运维
从备份升级到容灾,利用阿里云就可以做到的灾备方案
从备份升级到容灾,利用阿里云就可以做到的灾备方案
从备份升级到容灾,利用阿里云就可以做到的灾备方案
|
测试技术 数据库
手动升级 Confluence - 规划你的升级
1. 确定你的升级路径 使用下面的表格来确定最佳的升级路径来让你的Confluence 从当前版本升级到最新的 Confluence 版本。 你的版本 推荐升级到 Confluence 的升级路径 2.7 或者更早 升级到 2.7.4 然后升级到 3.5.17,然后按照下面的升级路径。
1188 0
手动升级 Confluence 6 - 升级问题解决
升级失败了? 如果你需要对你的升级进行回退,你必须首先恢复你老的 Confluence 备份。不要尝试再次进行升级,也不要尝试再次对升级失败的 Confluence 进行再次启动。  在升级过程中遇到的一些常见问题... 因为许可证过期了而不能进行升级如果你的许可证已经过期了,但是你再升级时候还没有对许可证进行更新,你将会在升级的过程中收到许可证的提示。
861 0
|
应用服务中间件 数据库 Java
手动升级 Confluence - 开始升级之前
在本指南中,我们将会帮助你使用 zip / tar.gz 文件将你的 Confluence 安装实例在 Windows 或者 Linux 版本中升级到最新的版本。 升级到任何最新的版本都是免费的,如果你具有当前的软件维护许可证的话。
1000 0
|
测试技术 Windows 网络安全
手动升级 Confluence 6 - 升级以后
7. 重新安装服务(仅针对 Windows) 如果你的 Confluence 安装实例在 Windows 中是以服务来运行的话,你需要删除已经存在的 Windows 服务,然后重新安装 Windows 服务。
785 0
|
SQL Oracle 关系型数据库
OceanBase迁移服务:向分布式架构升级的直接路径
2019年1月4日,OceanBase迁移服务解决方案在ATEC城市峰会中正式发布。蚂蚁金服资深技术专家师文汇和技术专家韩谷悦共同分享了OceanBase迁移服务的重要特性和业务实践。
|
算法 网络安全 数据安全/隐私保护