Redmine 是非常流行的项目管理工具。Redmine 的安装、升级、备份和恢复操作虽然简单,但是需要记住很多操作系统和数据库命令。在生产环境中,安装和恢复操作使用频率较低,而备份和升级操作频率较高。要完成经常需要频繁执行的任务,可以自己编写脚本,而更好的方式是使用经过验证的工具。
Redmine installer 就是一款易于使用的 Redmine 安装、升级、备份和恢复工具,使用 Redmine installer 能轻松完成日常的 Redmine 管理工作。本文介绍使用 Redmine installer 安装、升级、备份和恢复 Redmine 的方法。
环境要求
Redmine installer 由 Easy Software Ltd. 开发,以 Ruby gem 的形式发布,在 GitHub 上可以查看其源代码。
安装使用 Redmine installer 前应安装设置好 Ruby, 此外,Redmine 安装运行所需的数据库也应提前准备好。Ruby 环境和数据库环境的详细操作可参考 Linux下安装Redmine 前半部分的描述。
Redmine installer 的安装
Redmine installer 的安装非常简单,在联网状态下,运行以下命令即可:
gem install redmine-installer
查看帮助
运行以下命令可以查看帮助提示:
redmine help
主要的命令有:
- backup: 备份 Redmine 文件目录和数据库
- install: 安装 Redmine 或 Easy Redmine
- restore-db: 删除旧的数据并恢复数据库
- upgrade: 升级 Redmine 或 Easy Redmine
全局的选项主要有:
- -d, --debug: 在控制台显示日志信息
- -s, --silent: 显示较少的输出
- -v, --version: 显示 Redmine installer 的版本信息
- -t, --trace: 出现错误时显示函数调用回溯信息
如果需要查看特定命令的使用方法,可在 help 后加上相应的指令,如查看安装方法,可运行以下命令:
redmine help install
安装 Redmine
安装命令用于安装 Redmine 或 Easy Redmine,运行安装命令将在空目录下创建新的 Redmine 项目。
安装命令的所有参数都是可选的,如果未提供所需的参数,安装过程中会提示输入这些参数。
目标目录应是空目录,安装命令可能会删除目标目录的文件。此外,如果目标目录不存在,当前用户应有创建该目录的权限;如果目标目录存在,当前用户应有该目录的运行和读写权限。
安装过程中会提示选择数据库类型,并提示输入数据库连接参数。在正式环境下,最好先建立数据库并分配合适的数据库访问权限给数据库连接参数中的用户;在开发测试环境下也可由 Redmine installer 建库,这时需要数据库连接参数中的用户具有建库权限,如直接使用 MySQL 的 root 用户。
安装出错时会有提示是否重试,这时可以多开一个终端窗口修复错误,再返回运行 Redmine installer 的终端继续操作。
安装命令的语法如下:
redmine install [PACKAGE PATH or URL] [REDMINE_ROOT] [options]
常用的安装选项有:
- --bundle-options OPTIONS: bundle install 选项
- --database-dump DUMP: 在数据库迁移前载入 DUMP 数据,当前还在试验阶段
- --keep PATH(s): 保留选择的文件和目录
例如:
redmine install ~/redmine-3.4.6.tar.gz ~/redmine2/ --bundle-options '--path ~/vendor/bundle'
bundle install 选项将被传递给 Redmine 安装的 bundle install 过程,例子中的 --path 选项如果为相对路径,将是相对 Redmine 根目录的路径 ~/redmine2/。设置路径的目的是为了避免需要给安装 Redmine 的 Linux 用户分配更大的文件系统权限,建议不要使用 Redmine 根目录路径 ~/redmine2/ 下的目录,以便在多个 Redmine 安装实例中共享文件,减少备份耗费的资源。
安装过程中会被提示数据库和电子邮箱设置:
图1. 安装过程中的提示和输入
邮件配置的修改
如果需要在 Redmine 中使用 smtp 发送邮件通知,还有两处需要进行修改。
1. 配置文件的修改
多数情况下,按照提示信息正确输入配置后就不必再修改配置文件了。但如果不小心出现输入错误,或者有的邮箱需要配置一些未被提示输入的项目,则需要修改配置文件 config/configuration.yml。
以腾讯企业邮为例,修改后的配置文件如下:
---
default:
email_delivery:
delivery_method: :smtp
smtp_settings:
ssl: true
address: smtp.exmail.qq.com
port: 465
authentication: :login
domain: smtp.exmail.qq.com
user_name: your_name@eaglesoftware.cn
password: 'your_password'
enable_starttls_auto: true
2. 邮件发件人地址的修改
要能成功在 Redmine 中发送邮件,还需要修改 Redmine “配置” -> “邮件通知”中的邮件发件人地址,与以上配置文件中的 user_name 保持一致。
启动 Redmine 以管理员身份登入系统,在管理配置中修改邮件发件人地址:
图2. 修改邮件发件人地址
保存后点击该页面右下角的“发送测试邮件”连接测试邮件通知配置。
升级 Redmine 版本
Redmine 升级包括从低版本的 Redmine 升级到高版本的 Redmine,以及从免费版的 Redmine 升级到 Easy Redmine。
升级时 Redmine 根目录中的文件可能会被删除,如果需要保留某些文件,可提前备份,或者使用 --keep 选项指定要保留的文件。
升级命令的语法如下:
redmine upgrade [PACKAGE PATH or URL] [REDMINE_ROOT]
常用的升级选项有:
- --bundle-options OPTIONS: bundle install 选项
- --profile PROFILE_ID: 使用 id 为 PROFILE_ID 的 profile. 在升级过程中会提示是否保存,数据保存在隐藏文件 ~/.redmine-installer-profiles.yml 中
- --keep PATH(s): 保留选择的文件和目录
- --copy-files-with-symlink: 使用符号链接引用文件,而非复制文件,仅供高级用户使用
假定 ~/redmine2/ 为Redmine 根目录,~/redmine-3.4.6.tar.gz 为要升级版本的的安装包,升级命令为:
redmine upgrade ~/redmine-3.4.6.tar.gz ~/redmine2/ --bundle-options '--path ~/vendor/bundle'
升级过程中会提示备份类型和备份路径:
图3. 升级过程选择备份类型和备份目录
备份 Redmine 文件目录和数据库
备份现有 Redmine 的安装文件和数据库,或者只备份数据库。
备份命令的语法如下:
redmine backup [REDMINE_ROOT]
备份命令很简单,如同升级过程中的备份提示一样,会被提示选择备份类型和备份路径。
如果备份上面安装的 Redmine 实例,备份命令命令应为:
redmine backup ~/redmine2/
如果设置定时自动备份,可以创建一个输入文件,利用 Linux 的定向输入特性,避免等待用户输入。
redmine backup ~/redmine2/ < my_input.txt
每次备份都会在备份路径下创建一个新的子目录,以备份时间命名,如 backup_19112018_183110/。其中有两个文件,一个是数据库的 DUMP 备份,以 .sql 作为文件名后缀;另一个是 Redmine 根目录的压缩包,以 .zip 作为文件名后缀。
恢复数据库
恢复数据库命令将删除旧的数据并恢复备份的数据文件,语法如下:
redmine restore-db DATABASE_DUMP [REDMINE_ROOT] [options]
以刚刚备份的数据库为例,命令如下:
redmine restore-db ~/redmine-backups/backup_19112018_160525/redmine2.sql ~/redmine2/
后记
以上命令在阿里云主机进行过测试,测试环境的主要软件版本如下:
- Ubuntu 16.04 LTS
- ruby: ruby 2.3.1p112 (2016-04-26)
- mysql: Ver 14.14 Distrib 5.7.24
- gem: 2.5.2.1
- bundle: 1.17.1
- Redmine installer: 2.2.4
Redmine installer 由 Easy Software Ltd. 开发并提供支持,在 GitHub 发布。正因为有商业公司支持,Redmine installer 才能迅速对缺陷和新增特性做出响应。本文作者曾于 2018 年 11 月对 2.2.3 版的 Redmine installer 提交了一个小缺陷,2 天后就在 GitHub 上看到了修复缺陷后的新版软件。