redmine
Redmine 是一个基于Web项目的管理和权限管理和跟踪工具,与其他主流的项目管理平台不同的是 Redmine 是一个开源的。它用日历和甘特图辅助项目及进度可视化显示。同时它又支持多项目管理。Redmine 是一个自由开放 源码软件解决方案,它提供集成的项目管理功能,问题跟踪,并为多个版本控制选项的支持。需要注意的是 Redmine 是建立在 Ruby and Rails 的框架之上,因此他支持跨平台和多种数据库,但是缺点是安装的过程会非常折腾。
安装 redmine
下载
最新版的 redmine 可以通过https://www.redmine.org/projects/redmine/wiki/RedmineInstall#Step-9-Test-the-installation 内进行下载,本文使用 4.0.9 (2021-04-26) 作为演示。
需要注意的是下面的所有步骤均在 redmine 文件下进行(除了你 ruby 编译安装)
mysql
首先按照 redmine 官方文档的意思是,我们需要创建一个 redmine 的用户,并创建一个 redmine 库,为了让操作变得简单我们忽略新建用户的这个步骤,需们需要创建一个库:
1 | create database redmine |
当然你如果非常讲究我们也可以根据官方文档中一样,创建一个 redmine 用户:
1 | CREATE DATABASE redmine CHARACTER SET utf8mb4; |
redmine
之后进入到 redmine-4.0.9/config目录,之后将 database.yml.example 文件下的 production 复制到 database.yml文件下(需要创建一个 database.yml)
1 | production: |
此时也是一个必然的过程,你还需要修改 production内的username、password等信息,来配置你的数据库帐号密码。
ruby
值得注意的是 redmine 所依赖的 ruby&gem and bundle 如果你选择使用 MySQL数据库作为数据存储方式的话还需要有一个 MySQL 的环境。通常在 debian 的系统中已经内置了ruby&gem 的语言环境,如果没有您还需要执行 apt-get install ruby来进行安装,如果您已经存在了ruby&gem则不需要重新安装。
自动安装
本文使用的 ruby版本为2.5.5p157,gem 的版本为 3.2.16,通常 gem 版本可通过使用gem update --system直接进行升级,但需要注意的是
编译安装
本文基于 debian bunsen labs 发行版进行演示,通常除了Arch Linux系的系统基本上都可以进行安装,需要注意的是由于 Arch Linux 滚动更新的缘故,因此他的软件包都非常的新。
现在是 2021年05月11日,此时 debian 系官方提供的 ruby 版本是 2019-03-15 所发布的2.5.5p157版本,而此时的 Arch Linux 可能已经用上了前年,即2020-12-25所发布的 ruby 3.0了,而值得庆幸的是 redmine 也支持 ruby 3.0:
| redmine 版本 | 支持的 ruby 版本 | 使用的 rails 版本 |
|---|---|---|
| trunk (>= r20913) | Ruby 2.5, 2.6, 2.7, 3.0 | Rails 6.1 |
| 4.2 | Ruby 2.4, 2.5, 2.6, 2.7 | Rails 5.2 |
| 4.1 | Ruby 2.3, 2.4, 2.5, 2.6 | Rails 5.2 |
| 4.0 | Ruby 2.2, 2.3, 2.4, 2.5, 2.6 | Rails 5.2 |
- Redmine 4.2不支持Ruby 2.7.0和2.7.1。使用Ruby 2.7.2或更高版本
- 24.0.6 之前的 Redmine 支持 Ruby >= 2.2.2。Redmine 4.0.6及更高版本不支持Ruby 2.2。
下载&安装
下载 ruby 2.4.2 版的压缩文件,更多全新版本你可以在 https://cache.ruby-lang.org/pub/ruby/ 进行下载。
1 | wget https://cache.ruby-lang.org/pub/ruby/ruby-2.4.2.tar.gz |
之后解压并进入文件
1 | tar -zxvf ruby-2.4.2.tgz |
进入后配置并编译源代码
1 | ./configure |
最后通过使用 ruby -v来验证是否安装成功,如果你本机中已经存在了 ruby或其他版本,您需要注意下安装的位置不要与其他版本冲突,否则你无论使用 ruby&gem都会报错:
如果遇到这个问题我会选择将所有 ruby 文件删除,只安装一个 ruby 版本。这个时候你 google 就会有人让你执行 gem install bundler,但是你换个思路想:“我执行 gem update 都报错了,我还能执行 gem install bundler 来安装 bundler 吗?”,很明显这个方法并不适用。如果你有其他的方法欢迎联系我 kl@sif.one。
gem
RubyGem(gem),是一个Ruby 的一个包管理器,他提供了一个分发 ruby 程序和库的标准格式,还提供了一个管理程序包的安装工具,类似于 npm、pip。
配置源
RubyGems 一直以来在国内都非常难访问到,在本地你或许可以翻墙,当你要发布上线的时候,你就很难搞了。RubyGems 是由一个非常高端也非常有优越感的一个社区,他们为此提供了一个 Gem 的 CDN,来确保几乎无延迟的同步。
在本文中我们除了使用 RubyChina 所提供的 CDN,以及由 Ruby 官方社区所提供的 GemCDN 源,https://rubygems.org/ 国内是可以访问的,因此我们不需要移出,只需要添加一个 https://gems.ruby-china.com/ 源即可:
1 | gem sources -a https://gems.ruby-china.com/ |
之后通过gem sources来查看源列表存在 rubychina社区所提供的源即可:
1 | gem source |
bundler
安装&配置
bundler 是一个能够跟踪并安装所需特定版本的 gem,以此来为 ruby 项目提供一致的运行环境,安装 bundler 安装的方式可以通过 gem 也可通过外部文件安装:
1 | gem install bundler |
当然我们也可以制定安装 bundler 版本2.2.17,只需要在安装时指定版本即可:
1 | gem install bundler:2.2.17 |
安装完成后我们需要新的 bundle,来以防下面的操作报错。
1 | bundle install |
在
bundler install时你可能会出现两个错误Gem::Ext::BuildError: ERROR: Failed to build gem native extension error
gem install jaro_winkler -v ‘1.5.2’ –source ‘https://cernerrepos.net/api/gems/rubygems/'Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
如果出现了这种错误我们需要通过 apt-get 安装install build-essential patch ruby-dev zlib1g-dev liblzma-dev以及nokogiri等依赖:
sudo apt-get install build-essential patch ruby-dev zlib1g-dev liblzma-dev
gem install nokogiri
然后安装 redmine 所需的所有 gem 依赖:
1 | bundle install --without development test |
接着我们来生成一个随机密钥,rails 使用他来编码存储会话数据的 cookies,从而防止被篡改(重新启动后生成的令牌将会使得现有会话无效)
1 | bundle exec rake generate_secret_token |
依赖项
本文所使用的 redmine 4.2 版本,因此我们需要使用下面步骤来跳过 rmagick gem 的安装
rmagick 对于 redmine 4.1.0 之前的版本主要用于将甘特图导出至 png 或 pdf 格式文件
1 | bundle install --without development test rmagick |
rails
在上述配置 redmine 库的时候你可能非常疑问为什么又有新建表,因此在下面的步骤中会给你一个非常好的答案。我们在 redmine 项目下运行下述命令来创建数据结构:
1 | RAILS_ENV=production bundle exec rake db:migrate |
之后通过下属命令,在数据库中插入默认的配置数据:
1 | RAILS_ENV=production bundle exec rake redmine:load_default_data |
run

当上述步骤完成之后,我们可以试着通过下述命令运行 redmine:
1 | bundle exec rails server webrick -e production |
在此时你可能还会遇到一个错误
RubyGems warning/error: Gem::Specification# default_executable = is deprecated with no replacement. It will be removed
这是一个 RubyGem 团队的最新公告声明,这是在 RubyGem 1.8 之后才有的,因此我们需要通过使用下述命令进行更新。
gem pristine –all –no-extensions
当该命令运行成功后,我们可以通过使用localhost:3000进入到 redmine 页面,如果可以看到程序 view 则表示已经部署完成。可以通过使用 admin\admin来登入你的管理员帐号。
redmine-run
读者在运行时可能非常迷惑 redmine 的启动命令太长而记不住,导致每次需要时都需要找到资料粘贴上去。因此为了解决这个问题国内开发者为此开发了 redmine-run 脚本来解决 redmien 启动的问题。
需要注意的是,此项目基于 Linux 4.19.0-16-amd64 #1 SMP Debian 4.19.181-1 (2021-03-19) x86_64 GNU/Linux 环境进行开发,理论上来讲系统只要存在ln以及mv和支持 .sh 脚本基本上就可以使用本项目。
通过使用 redmine run ,可以直接通过redmine来启动 redmine 项目管理平台,避免输入长且毫无规律的 bundle exec rails server webrick -e production,还需要进入到 redmine 目录中运行。
下述操作需要全部使用 root 权限运行
首先我们需要拉取 redmine run:
1 | git clone https://gitee.com/analysis-of-river-snow/radmine-run.git |
将里面的 install.sh以及redmine.sh拖到 redmine 目录中
redmine 目录即你可以执行
bundle exec rails server webrick -e production
让 install.sh 和 redmine.sh 成为可执行文件:
1 | chmod 777 install.sh |
之后我们先修改 install.sh 文件内容,并将/opt/redmine/redmine-4.0.9/修改为你的 redmine 所在目录即可:
1 | #!/bin/bash |
然后执行./install.sh即可,之后通过使用redmine 来运行项目。
