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
4199.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.comrvm安装,用于管理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. 指定版本安装rubyrvm 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和rakegem 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
15http {
...
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
3CREATE 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. 问题及处理:
rvm下载超时及证书和秘钥验证失败
- gpgkey获取:
1
2
3
4gpg2 --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
- gpgkey获取:
bundle install
时报错An error occurred while installing mysql2 (0.5.4), and Bundler cannot continue
- 依赖缺失,通过
yum install mysql-devel
解决
- 依赖缺失,通过
bundle install
网络故障,速度太慢- 换国内镜像源:
vim GemFile
,将第一行的source
换为https://mirrors.tuna.tsinghua.edu.cn/rubygems
,如果报错无法验证SSL证书,将镜像地址前面的协议改成http即可
- 换国内镜像源:
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=上面输出的一长串密码
即可
- 一开始以为是
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';
,改完之后就能看到大量数据同步到数据库去了。
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