redmine 迁移、升级
背景
当前环境 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 。
重要注意事项:
- Ruby 社区已经终结对 Ruby 2.5 及更早版本的支持。参见官方消息: 2.2, 2.3, 2.4, 2.5.
- Redmine 不支持 JRuby 因为 activerecord-jdbc-adapter and loofah 不支持 Rails 4.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
二、检查依赖
三、升级
-
下载
可以下载稳定版发行包,也可以svn checkout。这里选择下载。
下载后,解压。配置正确的属组关系。赋予files
,log
andtmp
目录 写权限。 -
数据库配置文件
拷贝数据库配置文件config/database.yml
到新的配置目录config
。
如果运行Redmine >= 1.4 with mysql and ruby1.9,变更数据库驱动为mysql2
。 -
基础配置文件
拷贝配置文件config/configuration.yml
到新的配置目录config
。
如果升级的版本早于1.2.0,拷贝config/email.ym
内的邮件配置到config/configuration.yml
。 -
files 目录
拷贝 files 目录内容到新安装目录(该目录包含所有的上传文件) -
插件
从plugins
目录拷贝你的自定义插件 folders 到新的plugins
目录。
确保只复制后来安装的,而不是初始化Redmine安装捆绑在一起的插件。 -
安装依赖的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
的时候自动被加载。
- 更新密钥
如果是从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
- 主题
检查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
- 清空缓存
bundle exec rake tmp:cache:clear RAILS_ENV=production
-
重启服务 (e.g. puma, thin, passenger)
-
检查 "Admin -> Roles & permissions" 权限,以及新特性。
升级过程
一、备份
快照、镜像、数据文件复制、数据库备份
mysqldump -h localhost -u root -proot@1qaz redmine > /opt/redmine.sql
二、环境准备
- 安装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环境变量
- 安装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
- 下载 redmine stable release 4.2.3 ,解压到/opt目录下
wget --no-check-certificate https://www.redmine.org/releases/redmine-4.2.3.tar.gz
- 创建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
四、配置迁移
- 数据库配置文件
拷贝数据库配置文件 config/database.yml 到新的配置目录 config 。
- 基础配置文件
拷贝配置文件 config/configuration.yml 到新的配置目录 config 。
-
修改附件配置
-
修改邮箱配置,改成smtp
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'
-
插件
同步插件目录 -
安装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
- 更新密钥
bundle exec rake generate_secret_token
-
主题
-
更新数据库
bundle exec rake db:migrate RAILS_ENV=production
bundle exec rake redmine:plugins:migrate RAILS_ENV=production
- 清空缓存
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;
}