梦入琼楼寒有月,行过石树冻无烟

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
2
3
CREATE DATABASE redmine CHARACTER SET utf8mb4;
CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'my_password';
GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';
redmine

之后进入到 redmine-4.0.9/config目录,之后将 database.yml.example 文件下的 production 复制到 database.yml文件下(需要创建一个 database.yml)

1
2
3
4
5
6
7
production:
adapter: mysql2
database: redmine
host: localhost
username: username
password: "password"
encoding: utf8

此时也是一个必然的过程,你还需要修改 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
  1. Redmine 4.2不支持Ruby 2.7.0和2.7.1。使用Ruby 2.7.2或更高版本
  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
2
tar -zxvf ruby-2.4.2.tgz
cd ruby-2.4.2

进入后配置并编译源代码

1
2
3
./configure
make
sudo make install

最后通过使用 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
2
3
4
5
gem source
*** CURRENT SOURCES ***

https://gems.ruby-china.com/
https://rubygems.org/

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
2
chmod 777 install.sh
chmod 777 redmine.sh

之后我们先修改 install.sh 文件内容,并将/opt/redmine/redmine-4.0.9/修改为你的 redmine 所在目录即可:

1
2
3
4
5
6
#!/bin/bash

cd /opt/redmine/redmine-4.0.9/
redmine_run=`bundle exec rails server webrick -e production`
echo "[echo] 正在进入目录" $path_use
echo "[echo] 执行 redmine run 命令 => bundle exec rails server webrick -e production" $redmine_run

然后执行./install.sh即可,之后通过使用redmine 来运行项目。

⬅️ Go back