CentOS 7环境Redmine安装过程记录

CentOS 7环境Redmine安装教程

因软件开发项目管理需要,今天在CentOS服务器上部署了一款B/S架构的开源项目管理工具Redmine。这个工具主要是由Ruby语言开发的(不是那种典型的前后端分离),而Ruby我选择使用rvm安装,数据库采用MySQL

在环境配置过程中遇到了很多的问题,这些问题有的是特定场景的,但也可借鉴用于其他软件安装和环境配置,因此在此记录一下、

1. 环境及版本确认

安装环境 版本号 备注
centOS7 CentOS Linux release 7.9.2009 (Core) 看版本号的命令 : cat /etc/system-release
MySQL mysql-8.0.11 可选5.7或者5.6,无强制要求
Ruby ruby 3.0.3 很重要,关系redmine是否兼容
RubyGems 3.3.3 后期若出现版本不对再重装
Rails Rails 4.2 同上
redmine 4.1 大版本控制好
nginx 1.21.4 没什么要求redmine
  • Redmine与Ruby版本对照:
Redmine version Supported Ruby versions Rails version used
4.1 (upcoming) Ruby 2.3, 2.4, 2.5, 2.6 Rails 5.2
4.0 Ruby 2.2 (2.2.2 and later), 2.3, 2.4, 2.5, 2.6 Rails 5.2
3.4 Ruby 1.9.3, 2.0.0, 2.1, 2.2, 2.3, 2.4 Rails 4.2

2. 基础依赖安装和环境配置

  • 编译软件所需要的一些工具:

    1
    yum -y install gcc gcc-c++ make automake autoconf curl-devel openssl openssl-devel zlib-devel ImageMagick-devel
  • host文件修改加速下载,sudo vim /etc/hosts,sudo /etc/init.d/network restart

    1
    2
    3
    4
    199.232.4.133 raw.githubusercontent.com
    140.82.114.4 github.com
    199.232.69.194 github.global.ssl.fastly.net
    199.232.68.133 raw.githubusercontent.com
  • rvm安装,用于管理ruby版本:
    a. 获取软件curl -L --insecure get.rvm.io | bash -s stable,最终从bitbucket.org获取到1.29.12版本并安装至/usr/local/rvm
    b. 生效rvm配置文件:source /etc/profile.d/rvm.sh
    c. rvm依赖包获取rvm requirements,自动安装了patch, bison, bzip2, libtool, patch, readline-devel, ruby, sqlite-devel

  • 安装ruby
    a. 建立gemset:rvm gemset create
    b. 指定版本安装ruby rvm install 2.7.0,安装过程中提示没有找到合适的二进制版本,通过源码编译(自动)完成的安装
    c. 文档生成 rvm docs generate-ri
    d. gem换源gem sources --remove https://rubygems.org/;gem sources -a https://mirrors.aliyun.com/rubygems/
    e. 通过gem安装bundler、rails和rake gem install bundler rake, gem install rails -v 4.2

  • nginx安装与整合
    如果主机已经安装过nginx这部分可跳过,如果版本低想更新则:
    a. 关闭之前的nginx服务并将文件移至备份目录/usr/local/nginx/sbin/nginx -s quit,mv /usr/local/nginx /usr/local/.nginx_back
    b. wget http://nginx.org/download/nginx-1.21.4.tar.gz获取nginx源码,解压至/usr/local/nginx
    c. gem install passenger,安装passenger(编译工具)
    d. passenger-install-nginx-module,使用passenger安装支持nginx的模块,这一步语言选择Python、手动指定方式、源码位置/usr/local/nginx、编译结果位置/application/nginx
    e. 在/application/nginx中生成了编译好的nginx程序,修改nginx.conf添加如下内容:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    http {
    ...
    passenger_root /usr/local/rvm/gems/ruby-2.7.0/gems/passenger-6.0.12;
    passenger_ruby /usr/local/rvm/gems/ruby-2.7.0/wrappers/ruby;
    ...
    }
    server {
    ....
    # 将主页改成redmine的
    location / {
    root html/redmine/public;
    index index.html index.htm;
    passenger_enabled on;
    }
    ......

3. Redmine安装及数据准备

  • 源码获取wget https://www.redmine.org/releases/redmine-4.2.0.tar.gz,解压保存至/application/nginx/html/redmine

  • 配置数据库连接参数,编辑redmine/config/database.yml修改相应内容

  • MySQL安装,这一步推荐使用docker容器安装,快速解决docker pull mysql:latest; docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:latest(注意只能用127.0.0.1而不能用localhost连接)。如果是使用裸机安装,推荐使用源码编译安装,参见centos7源码编译安装mysql

  • MySQL数据库和用户创建

    1
    2
    3
    CREATE DATABASE redmine CHARACTER SET utf8;
    CREATE USER 'redmine'@'%' IDENTIFIED BY 'redmine';
    GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'%';
  • 安装Gemfile中的依赖并准备初始数据
    a. 非root用户执行bundle install,遇到Permission denied问题直接切换为root并将该目录设置为777即可
    b. rake db:migrate RAILS_ENV="production"将所有未实施的迁移任务都实施到目标数据库上
    c. bundle install --without development test
    d. bundle exec rake generate_secret_token生成一个新的随机秘钥,并由Rails对所有会话数据进行编码。当重新启动后,生成新的随机秘钥,所有现有会话将失效。
    e. 创建数据表结构RAILS_ENV=production bundle exec rake db:migrate
    f. 将一些缺省(默认)数据插入数据库:RAILS_ENV=production REDMINE_LANG=zh bundle exec rake redmine:load_default_data

4. 服务开启,浏览器访问localhost测试,默认账户和密码都是admin

  • 可在Redmine根目录使用ruby bin/rails server webrick -e production -d监听3000端口提供服务(默认后台静默运行)
  • 也可直接通过nginx启动页面代理:/application/nginx/sbin/nginx,默认是80端口

5. 问题及处理:

  1. rvm下载超时及证书和秘钥验证失败

    • gpgkey获取:
      1
      2
      3
      4
      gpg2 --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

      curl -sSL https://rvm.io/mpapis.asc | gpg2 --import -
      curl -sSL https://rvm.io/pkuczynski.asc | gpg2 --import -
    • \curl -sSL --insecure https://get.rvm.io | bash -s stable
  2. bundle install时报错An error occurred while installing mysql2 (0.5.4), and Bundler cannot continue

    • 依赖缺失,通过yum install mysql-devel解决
  3. bundle install网络故障,速度太慢

    • 换国内镜像源:vim GemFile,将第一行的source换为https://mirrors.tuna.tsinghua.edu.cn/rubygems,如果报错无法验证SSL证书,将镜像地址前面的协议改成http即可
  4. rake命令时报错ArgumentError: Missing 'secret_key_base' for 'production' environment, set this string with 'rails credentials:edit'

    • 一开始以为是redmine/config/database.yml中要配置secret_key_base这个选项,但是将其粘贴进去后依然报错,查资料发现是需要一个私钥
    • rake secret RAILS_ENV=production生成私钥,会输出到终端上
    • 然后export SECRET_KEY_BASE=上面输出的一长串密码即可
  5. rake命令时报错Mysql2:Error: Authentication plugin 'caching_shaA_password' can't be loaded: 'usr/lib64/mysql/plugin/caching_sha2_passwordd.so' cannot open shared objet……

    • 去这目录下还真没找到这个文件,上网查了这是由于新版本(大概是8.0开始)的MySQL认证方式不是原来的明文密码,而是sha_2加密后的密码,由于我这里使用的是docker提供的数据库,即本地没有安装MySQL,因此自然没有这个文件。
    • 解决方法:登入MySQL,将认证方式改回明文密码认证ALTER USER redmine@'%' IDENTIFIED WITH mysql_native_password BY '123456';,改完之后就能看到大量数据同步到数据库去了。
  6. rake dg:migrate命令时报错找不到manifest.js

    • 可手动创建/application/nginx/html/redmine/app/assets/config/mainfest.js,并填入如下内容:
      1
      2
      3
      //= link_tree ../images
      //= link_directory ../javascripts.js
      //= link_directory ../stylesheets.css

6. 总结

Redmine软件安装及问题解决前后大概花了两个多小时,算是比较长了。这里踩了一个坑,就是完全是照着官方的说明跟着走,这款软件虽然有开源社区版,但是其生态并不完善,主要还是商业用途的比较多,因此就造成官方文档写的不清楚、视频教程也找不到,很多问题自己一个一个上网查。

这给我的教训就是最好先了解清楚自己要做的到底是什么,大概分为哪几个步骤/阶段,以及想要快速完成的话先找现成的博客看有没有教程/方案,比自己一点一点配置要快得多。

问题解决参考:自己实操linux安装redmine


CentOS 7环境Redmine安装过程记录
https://dockingyuan.top/2022/11/29/redmine-installation/
作者
Yuan Yuan
发布于
2022年11月29日
许可协议