redmine 迁移、升级

2021-12-30  本文已影响0人  偷油考拉

背景

当前环境 redmine 3.3.3 , ruby 2.3.3 ,Rails 4.2.7.1 , mysql 5.5 。参考官方文档后,目标升级到 redmine 4.2。

当前redmine稳定版本 - 2021年12月

Redmine version Supported Ruby versions Rails version used
trunk (>= r20913) Ruby 2.5, 2.6, 2.7, 3.0 Rails 6.1
4.2 Ruby 2.4, 2.5, 2.6, 2.71 Rails 5.2
4.1 Ruby 2.3, 2.4, 2.5, 2.6 Rails 5.2

1 Redmine 4.2 不支持 Ruby 2.7.0 and 2.7.1。直接使用 Ruby 2.7.2 及更高版本。

2 Redmine 4.0.6 之前支持 Ruby >= 2.2.2。 Redmine 4.0.6 及更高版本不支持 Ruby 2.2 。

重要注意事项:

数据库支持 MySQL 5.5 和 5.7。5.6 和 更高版本,以及MariaDB 有问题。 (#19344, #19395, #17460).

Redmine 版本
建议大部分的用户安装正经版本。Redmine 每6个月发布一个新版本,这些版本是稳定好用的正经版本。不推荐使用 trunk 版本,除非你在 Ruby 和 Rails 上好厉害。

升级参考文档

RedmineUpgrade - Redmine
RedmineInstall - Redmine

一、 备份

RedmineInstall - Redmine
RedmineBackupRestore - Redmine
Redmine备份包含如下:
* 数据 (存储在redmine数据库)
* 附件 (存储在Redmine安装时设置的 files directory )

/usr/bin/mysqldump -u <username> -p<password> -h <hostname> <redmine_database> > /path/to/backup/db/redmine.sql
二、检查依赖
三、升级
  1. 下载
    可以下载稳定版发行包,也可以svn checkout。这里选择下载。
    下载后,解压。配置正确的属组关系。赋予 files, log and tmp 目录 写权限。

  2. 数据库配置文件
    拷贝数据库配置文件 config/database.yml 到新的配置目录 config
    如果运行Redmine >= 1.4 with mysql and ruby1.9,变更数据库驱动为mysql2

  3. 基础配置文件
    拷贝配置文件 config/configuration.yml 到新的配置目录 config
    如果升级的版本早于1.2.0,拷贝config/email.ym内的邮件配置到config/configuration.yml

  4. files 目录
    拷贝 files 目录内容到新安装目录(该目录包含所有的上传文件)

  5. 插件
    plugins目录拷贝你的自定义插件 folders 到新的plugins目录。
    确保只复制后来安装的,而不是初始化Redmine安装捆绑在一起的插件。

  6. 安装依赖的gems

bundle install --without development test

如果系统上没有安装 ImageMagick ,需要跳过 rmagick gem 安装,如下:

bundle install --without development test rmagick

只有在数据库配置文件中指定的adapters需要的 gems 才需要安装(eg. config/database.yml配置使用了'mysql2' adapter,那么只需要安装mysql2 gem)。当变更config/database.yml使用其他database adapters,需要重新运行 bundle install

如果你需要加载一些不是Redmine core需要的gems,你可以在根目录下创建文件Gemfile.local。它会在执行 bundle install 的时候自动被加载。

  1. 更新密钥
    如果是从Redmine 2.x 或更老的版本升级,删除如下文件:
    • config/initializers/secret_token.rb

然后创建新的 secret ,在应用目录执行如下命令:

bundle exec rake generate_secret_token

或者,可以将该 secret 存储在 config/secrets.yml
http://guides.rubyonrails.org/upgrading_ruby_on_rails.html#config-secrets-yml

  1. 主题
    检查public/themes目录,看看安装了哪些主题。可以拷贝过去,但是最好检查下有没有更新的版本。
    非常重要:config/settings.yml文件不能被旧版本覆盖。

四、更新数据库

该步骤会变更数据库的内容。
在新的redmine目录下,migrate数据库:

bundle exec rake db:migrate RAILS_ENV=production 

如果安装了插件,也需要运行数据库migrations:

bundle exec rake redmine:plugins:migrate RAILS_ENV=production
五、Clean up
  1. 清空缓存
bundle exec rake tmp:cache:clear RAILS_ENV=production
  1. 重启服务 (e.g. puma, thin, passenger)

  2. 检查 "Admin -> Roles & permissions" 权限,以及新特性。

升级过程

一、备份

快照、镜像、数据文件复制、数据库备份

mysqldump -h localhost -u root -proot@1qaz redmine > /opt/redmine.sql
二、环境准备
  1. 安装ruby 2.7.5
#安装依赖
yum install openssl-devel  gcc gcc-c++ gdbm gdbm-devel  readline readline-devel 
#编译ruby
mkdir -p /usr/local/ruby
wget https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.5.tar.gz
tar xzvf ruby-2.7.5.tar.gz
cd ruby-2.7.5/
./configure --prefix=/usr/local/ruby 
make
make install
#配置环境变量
echo "PATH=$PATH:/usr/local/ruby/bin" >> /etc/profile.d/ruby.sh

退出ssh terminal,重新连接加载PATH环境变量

  1. 安装rails
#更换gem源
gem sources --add http://mirrors.aliyun.com/rubygems/ --remove https://rubygems.org/

#检索当前gem默认的rails版本
gem list '^rails$' --remote

#列出可用版本
gem list '^rails$' --remote --all

#安装指定版本 rails 5.2.6
gem install rails -v 5.2.6
  1. 下载 redmine stable release 4.2.3 ,解压到/opt目录下
wget --no-check-certificate https://www.redmine.org/releases/redmine-4.2.3.tar.gz
  1. 创建redmine账户,id 1000 (redmine默认解压用户 uid 1000 gid 1000)
三、数据库、文件迁移

创建数据库redmine,设置字符集 utf8mb4。低于mysql 5.5.2的版本,使用utf8。
这里原来使用的utf8,所以只能设置utf8咯~

在新数据库导入备份

mysql -h 10.96.99.9 -u redmine -p redmine < cdb-rpdivrul_backup_20211216165351.sql

将原来的redmine附件目录迁移到新位置,这里设置为/lvmdata/redmine/files

四、配置迁移
  1. 数据库配置文件
    拷贝数据库配置文件 config/database.yml 到新的配置目录 config 。
  1. 基础配置文件
    拷贝配置文件 config/configuration.yml 到新的配置目录 config 。
production:
 email_delivery:
    delivery_method: :smtp
    smtp_settings:
      address: 'smtp.partner.outlook.cn'
      port: 587
      domain: 'smtp.partner.outlook.cn'
      authentication: :login
      user_name: 'user@xxx.com'
      password: 'password'
  1. 插件
    同步插件目录

  2. 安装gems依赖(以root执行)
    首先,安装mysql5.7驱动

#安装mysql 5.7 的客户端和Lib包,否则mysql2安装会因找不到对应Lib文件报错
yum install mysql-community-client mysql-community-devel -y

修改Gemfile里面的source

#source 'https://rubygems.org'
source 'http://mirrors.aliyun.com/rubygems'

在redmine目录下,执行

bundle install --without development test
  1. 更新密钥
bundle exec rake generate_secret_token
  1. 主题

  2. 更新数据库

bundle exec rake db:migrate RAILS_ENV=production 
bundle exec rake redmine:plugins:migrate RAILS_ENV=production
  1. 清空缓存
bundle exec rake tmp:cache:clear RAILS_ENV=production

启动服务

以redmine用户,进入redmine目录下,启动服务

nohup bundle exec rails server webrick -e production -b 127.0.0.1 -p 3000 &

配置反向代理

配置nginx.repo

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

安装nginx,配置文件

upstream redmine {
    server 127.0.0.1:3000;
}

server {
    listen       80;
    root /var/www/redmine/public;

    location / {
            try_files $uri @redmine;
    }

    location @redmine {
            proxy_set_header  X-Forwarded-For $remote_addr;
            proxy_pass http://redmine;
    }
}

老服务器配置redirect

在nginx的conf.d/下面添加 redirect.conf,如下:

server {
    listen       3000;
    rewrite ^/(.*) http://redmine.xxx.com redirect;
}
上一篇下一篇

猜你喜欢

热点阅读