Redmine4.x安装及使用心得分享

JOO 2020-04-26

一、redmine有关

Redmine是基于ruby语言的开源版的 jira +?Confluence,主要适用于中小团队。目前因内部需要做问题跟踪,新装了一套,这里记录下安装步骤。安装环境要求:

Redmine versionSupported Ruby versionsRails version used
4.1 (upcoming)Ruby 2.3, 2.4, 2.5, 2.6Rails 5.2
4.0Ruby 2.2 (2.2.2 and later), 2.3, 2.4, 2.5, 2.6Rails 5.2
3.4Ruby 1.9.3, 2.0.0, 2.1, 2.2, 2.3, 2.4Rails 4.2

附一下我的安装环境:

Redmine versionRuby versionsRails versionOS version
4.0.42.6.35.2CentOS7.4

关于是否使用官方推荐的第三方一键部署:个人不建议使用,一键部署无法自定义目录规划,且一键安装的程序目录十分混乱不利于管理,也不利于学习。部署前,建议参考官方文档先安装一次

二、ruby gem安装

# ruby下载安装
wget https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.3.tar.gz -P /usr/local/src/
tar xzvf ruby-2.6.3.tar.gz
cd ruby-2.6.3
./configure --prefix=/usr/local/ruby
make && make install

# 修改环境变量
vim /etc/profile.d/ruby.sh
export export PATH=/usr/local/ruby/bin:$PATH
source /etc/profile

# gem安装
wget https://rubygems.org/rubygems/rubygems-3.0.4.zip -P /usr/local/src/
unzip rubygems-3.0.4.zip
cd rubygems-*
ruby setup.rb

修改ruby源为国内阿里源:<https://gems.ruby-china.com/&gt;

替换新源
gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
检查源
gem sources -l
https://gems.ruby-china.com
# 确保只有 gems.ruby-china.com

关于Bundler替换国内原:
bundle config mirror.https://rubygems.org https://gems.ruby-china.com

rails框架可以使用gem install rails -v=5.2.3 进行安装,也可以通过bundle自已查找依赖进行安装 。先说安装 bundle,如下:

gem install rake
gem install bundle

三、redmine安装

1、数据库配置

这里使用的mysql,条件允许建议使用RDS,先使用如下命令安装:

CREATE DATABASE redmine CHARACTER SET utf8;
CREATE USER ‘redmine‘@‘localhost‘ IDENTIFIED BY ‘mypassword‘;
GRANT ALL PRIVILEGES ON redmine.* TO ‘redmine‘@‘localhost‘;

## RDS记得开启白名单以及涉及到不同专有网络需要放行安全组

2、redmine下载

wget http://www.redmine.org/releases/redmine-4.0.4.tar.gz -P /data1/
tar zxvf redmine-4.0.4.tar.gz
mv redmine-4.0.4 redmine

## 安装后的结构参考,该结构更易于扩展
[ data1]# tree -L 3 redmine/
redmine/
├── current -> release/20200413190500
└── release
    └── 20200413190500
        ├── app
        ├── appveyor.yml
        ├── bin
        ...

修改数据库配置,Copy config/database.yml.example to config/database.yml ,修改database.yml的内容如下:

production:
  adapter: mysql2
  database: redmine
  host: xxx/rds地址
  username: redmine
  password: "my_password"

我这里使用的mysql 数据库,如果使用其他数据库操作类似。

3、安装依赖包

依赖包有两种,一种是OS系统依赖包,另一个是ruby需要依赖的包。先说前者,主要是ImageMagick相关包,一条命令搞定:

yum install ImageMagick ImageMagick-devel

后者依赖包,会比较多,安装方式有两种,一种是出现个使用gem指定包名称和版本号装一个,另一种是使用bundle一键搞定。先说前者如何知道依赖什么:

[ config]# rake db:migrate RAILS_ENV="production"
(in /opt/redmine)
Could not find gem ‘rails (= 5.2.3)‘ in any of the gem sources listed in your Gemfile.
Run `bundle install` to install missing gems.

进行数据库表结构创建操作的时候,如果缺少相关依赖会报错缺少的包名称和版本号。按图索骥就可以了:

gem install rails -v=5.2.3
gem install rouge -v=3.3.0
gem install request_store -v=1.0.5
gem install mysql2 -v ‘0.5.2‘

依赖会有几十外,我这里只写了几个,我是没这个耐心,这里介绍下如何使用bundle进行安装。bundle默认不让使用root安装,需要创建一个普通用户,就是启动redmine进程的用户www吧。对该用户需要配置sudo权限,因为其中一些操作是需要使用root身份的。

需要注意,切换用户后,默认使用的源还是官方源,这个是在用户系统目前下配置的,所以切换为www用户后,重复上面切换源的步骤。

进入config目录,执行如下操作

bundle install --without development test  //只能用普通用户执行,需要给该用户sudo权限

不一会儿所有的依赖就安装好了,如果有系统依赖包不存在时,会有错误提示。

4、生成秘钥,导入表结构

使用以下命令可生成新的 session 密钥:

bundle exec rake generate_secret_token

使用如下指令进行表结构操作:

RAILS_ENV=production bundle exec rake db:migrate

该操作和上面rake db检查包依赖的指令是一样的。

使用以下命令导入初始数据,包括默认的问题类型、工作流程等:

RAILS_ENV=production REDMINE_LANG=zh bundle exec rake redmine:load_default_data

期间遇到如下报错:

Expected to find a manifest file in `app/assets/config/manifest.js

解决方法:

vim /app/assets/config/manifest.js  ##若目录不存在则创建

//= link_tree ../images
//= link_directory ../javascripts .js
//= link_directory ../stylesheets .css

5、启动服务

默认使用如下指令启服务,默认监听端口3000:

bundle exec rails server webrick -e production -b 0.0.0.0

## 通过nginx启动就无需这么启动,推荐使用nginx启动

默认的登录名和密码都是 admin 。登陆第一次会要求修改用户名和密码。

四、nginx整合

参考: <https://www.phusionpassenger.com/library/install/nginx/install/oss/el7/&gt;

请先配置好阿里源的Base及Epel源

yum install -y pygpgme curl

curl --fail -sSLo /etc/yum.repos.d/passenger.repo https://oss-binaries.phusionpassenger.com/yum/definitions/el-passenger.repo

yum clean all && yum makecache

yum install -y nginx passenger || sudo yum-config-manager --enable cr && sudo yum install -y nginx passenger

执行完毕后,会自动安装一个nginx,配置通过passenger启动访问redmine

vim redmine.mgt.tarscorp.com.conf 

  passenger_root /usr/share/ruby/vendor_ruby/phusion_passenger/locations.ini;
  passenger_ruby /usr/local/ruby/bin/ruby;
  passenger_instance_registry_dir /var/run/passenger-instreg;

server {
  listen  80;
  server_name redmine.mgt.tarscorp.com; # redmine.com;
  root /data1/redmine/current/public;
  passenger_enabled on;
  client_max_body_size      20m; # Max attachemnt size
}

## 做一个简单的安全优化,
    server_tokens       off;     ##隐藏nginx具体版本

    allow 10.254.0.0/16;        ##限定访问来源为办公室网络或open***访问
    deny all;

五、整合openldap

结合memberOf实现openLDAP认证

名称:自定义
主机/端口:按实际填写

账号密码:通常公司会创建一个专门用于查询认证的用户
账号:uid=usr_proxy,ou=Service,dc=tars,dc=com
密码:xxx

Base DN: dc=tars,dc=com
过滤器: memberOf=cn=Users,ou=Redmine,ou=Groups,dc=tars,dc=com

超时选填,用户即时生成打钩

属性栏根据实际情况填写,必填的是登录名属性. 
登录名属性:uid
名字属性:gecos
姓氏属性:givenName
邮件属性:mail

六、配置邮件通知

邮件通知是最基本的方式,也可以实现钉钉及企业微信告警

邮件报警:

vim configuration.yml
production:
  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      enable_starttls_auto: false
      address: ‘smtp.tarsplus.com‘
      port: 25
      authentication: :login
      user_name: ‘‘
      password: ‘wdMgKPuCZ8vcvyNd‘

vim settings.yml
host_name:
  default: redmine.mgt.tarscorp.com   #解决收到邮件内嵌链接直达为localhost问题

## 这里按实际情况填写,redmine web页面也配置一下 管理--> 配置 --> 邮件通知 发件人地址要和user_name对应

## 云主机记得申请主机的25发邮件权限,也建议在集群中配置SMTP的网关来实现,只需要nginx做个四层代理转发给外网的smtp服务器即可,后续集群任何项目使用smtp只需要走nginx就好了,也只需要解封一台ECS即可,易于管理。

钉钉通知:基于webhook,推荐我实践过的两个项目吧

项目一:https://gitee.com/DexterPoker/redmine2dingding   
## 只适用于钉钉,但是实践需要懂一点java包。但是钉钉截至目前认证方式改版了所以corpSecret,agentId这块有变化,需要你们Java同事帮你改一下,还有原作者说的可以在群上@同事的效果,依然需要你同事帮你看下,因为可能会有坑,时间原因也没继续往下走了,不过可以通过singlePush: 1 企业通知的形式发送给指定人

项目二:https://www.redmineplugins.cn/projects/1/plugin_blocks/70
## 支持钉钉和企业微信,最下方有案例参考我简单记录分享的,兴许能帮你解惑。最终钉钉是通过企业通知的形式发送给指定人

结束语:

这里安装上参考了运维之路 ,在此感谢原作者,点击直达。另外本文做了一些自己的心得分享以及部署问题解决

Redmine 适合中小团队, 在选型上个人不推荐使用该项目, 虽然开源,但运维难度较高, 单说安装都会难道一批人。redmine 强大的一方面是插件非常丰富,但探索的路上,你会发现插件的质量参差不齐,希望你在看到这篇文章能使你少走弯路。这里推荐个插件网站:

插件网站:
<https://www.redmineplugins.cn/projects/redmineplugins/plugin_blocks&gt; ##国人收集维护,相对友好
https://www.redmineup.com/ ## 增值服务插件

相关推荐