最近团队需要一个项目管理软件,最合适的当然是 JIRA。

但 JIRA 运行需要的资源开销不小,且费用昂贵,遂放弃。SAAS 服务体验了一圈,觉得都太挫了。

功能都很好,就是打开页面的速度巨慢。那种慢不是网络的慢或者是机器运行的慢,而是体验的慢。现代的 SPA 应用已经被玩坏了。

思来想去,决定还是装一个 Redmine。

我的服务器是 Ubuntu 20.04,本文参考 官方文档 完成。

首先确保安装了 ruby 和 ruby-dev。

$ ruby -v
ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-linux-gnu]

# 如果未安装
$ apt install ruby ruby-dev

注意如果没有安装 ruby-dev,会遇到 “Gem::Ext::BuildError: ERROR: Failed to build gem native extension.” 这种错误,后面文中会提到。

另:如果你用的是 sqlite3 数据库,则需要安装 libsqlite3-dev 这个包:

apt install libsqlite3-dev

否则会遇到 fatal error: sqlite3.h: No such file or directory 这个错误。

第一步: 下载解压

cd /opt
wget https://www.redmine.org/releases/redmine-5.0.0.zip
unzip redmine-5.0.0.zip

本文的 Redmine 的安装目录: /opt/redmine-5.0.0

第二步: MySQL 数据库配置

PS: 也可以使用 sqlite 数据库。

创建数据库:

CREATE DATABASE redmine CHARACTER SET utf8mb4;

创建专用账户并分配权限:

CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'redmine2022@tcore.cloud';
GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';

第三步: 数据库连接配置

复制配置文件:

cp config/database.yml.example config/database.yml

编辑内容:

production:
  adapter: mysql2
  database: redmine
  host: localhost
  username: redmine
  password: "redmine2022@tcore.cloud" 

如果是 SQLite 数据库:

production:
  adapter: sqlite3
  database: db/redmine.sqlite3

第四步: 安装依赖

cd /opt/redmine-5.0.0
gem install bundler
bundle install --without development test

如果发现 gem 安装依赖很久不动,你懂的,又是傻逼 GFW 搞事情了,需要改为国内源了。

# 查看当前使用的源地址。
gem sources
*** CURRENT SOURCES ***

https://rubygems.org/

# 删除默认源
gem sources --remove https://rubygems.org/

# 添加国内源
gem sources -a https://gems.ruby-china.com/

# 或者使用这个
gem sources --add https://mirrors.tuna.tsinghua.edu.cn/rubygems/

# 更新源的缓存
gem sources -u

更新源的缓存后即完成了 Ruby 的 gem 源修改,重新执行 gem install bundler 命令安装,很快搞定。

同样,Bundle 的源也需要修改。

新增映射:

bundle config mirror.https://rubygems.org https://gems.ruby-china.com

如果需要删除,则可以执行下面的命令删除映射:

bundle config --delete 'mirror.https://rubygems.org'

bundle 安装期间出现了一个错误:

Retrying download gem from https://gems.ruby-china.com/ due to error (2/4): Gem::RemoteFetcher::UnknownHostError timed out (https://gems.ruby-china.com/gems/marcel-1.0.2.gem)
Installing marcel 1.0.2
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    current directory: /var/lib/gems/2.7.0/gems/racc-1.6.0/ext/racc/cparse
/usr/bin/ruby2.7 -I /usr/lib/ruby/2.7.0 -r ./siteconf20220510-886298-1g7m6a8.rb extconf.rb
mkmf.rb can't find header files for ruby at /usr/lib/ruby/include/ruby.h

You might have to install separate package for the ruby development
environment, ruby-dev or ruby-devel for example.

extconf failed, exit code 1

看起来是网络错误,导致下载超时失败。重新执行一次 bundle install --without development test,仍然报错:

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

发现是因为没有安装 ruby-dev 导致的,遂执行:

apt install ruby-dev

安装后再次执行,问题解决。

第五步: 生成 Session 存储密钥

bundle exec rake generate_secret_token

第六步: 初始化数据库及默认数据设置

RAILS_ENV=production bundle exec rake db:migrate
RAILS_ENV=production bundle exec rake redmine:load_default_data

第七步: 文件系统权限设置

mkdir -p tmp tmp/pdf public/plugin_assets
sudo chown -R redmine:redmine files log tmp public/plugin_assets
sudo chmod -R 755 files log tmp public/plugin_assets

第八步: 测试安装

bundle exec rails server webrick -e production

注意:按照官方的命令,始终提示多一个参数。

开始我怀疑是因为本地的 3000 端口被占用导致的,于是修改了端口,但还是报错,最后发现要移除掉 webtrick 这个参数,且需要放在后台跑,需要加上 -d ,最终我实测能用的命令是:

bundle exec rails server -p 3100 -e production -d

PS: 我是跑在 3100 端口上。

第九步: 登录

默认账户密码: admin/admin

登录后修改密码即可。

标签: redmine