Redmine是最受欢迎的开源项目管理和问题跟踪软件工具之一。它是跨平台和跨数据库的,建立在Ruby on Rails框架之上。

Redmine 包括对多个项目,Wiki,问题跟踪系统,论坛,日历,电子邮件通知等的支持。

在本教程中,我们将介绍在使用MariaDB作为数据库后端并且使用Passenger + Nginx作为Ruby应用程序服务器的CentOS 7服务器上安装和配置最新版本的Redmine的步骤。

先决条件

在继续本教程之前,请确保满足以下先决条件:

  • 指向服务器公共IP的域名。在本教程中,我们将使用example.com
  • 以具有[sudo]特权的用户身份登录。

安装从源代码构建Redmine和Ruby所需的软件包:

sudo yum install curl gpg gcc gcc-c++ make patch autoconf automake bison libffi-devel libtool   
sudo yum install readline-devel sqlite-devel zlib-devel openssl-develh readline  glibc-headers glibc-devel sudo yum install mariadb-devel zlib libyaml-devel bzip2 iconv-devel ImageMagick ImageMagick-devel

创建MySQL数据库

Redmine支持MySQL/MariaDB,Microsoft SQL Server,SQLite 3和 PostgreSQL 。在本教程中,我们将使用MariaDB作为数据库后端。

如果您的CentOS服务器上未安装MariaDB或MySQL,则可以按照这些说明进行安装。

通过键入以下命令登录到MySQL Shell:

sudo mysql

在MySQL Shell中,运行以下SQL语句以创建新数据库

CREATE DATABASE redmine CHARACTER SET utf8;

接下来,创建一个 MySQL用户帐户并授予对数据库的访问权限

GRANT ALL ON redmine.* TO 'redmine'@'localhost' IDENTIFIED BY 'change-with-strong-password';

请确保使用强密码更改change-with-strong-password

完成后,通过键入以下内容退出mysql shell:

EXIT;

安装Passenger和Nginx

Passenger 是适用于Ruby,Node.js和Python的快速,轻量级的Web应用程序服务器,可以与 Apache 和Nginx集成。我们将乘客安装为Nginx模块。

安装 EPEL存储库和所需的软件包:

sudo yum install epel-release yum-utils pygpgme
sudo yum-config-manager --enable epel

启用 Phusionpassenger 信息库:

sudo yum-config-manager --add-repo https://oss-binaries.phusionpassenger.com/yum/definitions/el-passenger.repo

启用存储库后,更新软件包列表并使用以下命令安装Nginx和Passenger:

sudo yum install nginx passenger passenger-devel

创建新的系统用户

创建一个新的用户和组,该用户和组将运行Redmine实例,为简单起见,我们将用户命名为redmine

sudo useradd -m -U -r -d /opt/redmine redmine

nginx 用户添加到新用户组,并更改/opt/redmine 目录权限,以便Nginx可以访问它:

sudo usermod -a -G redmine nginx
sudo chmod 750 /opt/redmine

安装Ruby

CentOS储存库中的Ruby版本已经过时,Redmine不支持。我们将使用RVM安装Ruby。

通过键入以下内容来切换到用户 redmine

sudo su - redmine

导入GPG密钥并安装RVM:

gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
curl -sSL https://get.rvm.io | bash -s stable

要开始使用RVM rvm文件:

source /opt/redmine/.rvm/scripts/rvm

现在,我们可以运行以下命令来安装Ruby:

rvm install 2.5
rvm --default use 2.5

如果要通过Rbenv安装Ruby,请检查本指南

在CentOS上安装Redmine

在撰写本文时,Redmine的最新稳定版本为4.0.1.。

​​在继续进行下一步之前,您应该查看 Redmine下载页面,看看是否有更新的版本。

请确保您以redmine用户身份运行以下步骤。

1.下载Redmine

使用以下 curl命令下载Redmine存档:

curl -L http://www.redmine.org/releases/redmine-4.0.1.tar.gz -o redmine.tar.gz

下载完成后,提取档案:

tar -xvf redmine.tar.gz

2.配置Redmine数据库

复制 Redmine示例数据库配置文件:

cp /opt/redmine/redmine-4.0.1/config/database.yml.example /opt/redmine/redmine-4.0.1/config/database.yml

使用文本编辑器打开文件:

nano /opt/redmine/redmine-4.0.1/config/database.yml

搜索production部分,然后输入我们之前创建的MySQL数据库和用户信息:

/opt/redmine/redmine-4.0.1/config/database.yml

production:
  adapter: mysql2
  database: redmine
  host: localhost
  username: redmine
  password: "change-with-strong-password"
  encoding: utf8

完成后,保存文件并退出编辑器。

3.安装Ruby依赖项

导航redmine-4.0.1目录并安装捆绑程序和其他Ruby依赖项:

cd ~/redmine-4.0.1
gem install bundler --no-rdoc --no-ri
bundle install --without development test postgresql sqlite

4.生成密钥并迁移数据库

运行以下命令以生成密钥并迁移数据库:

bundle exec rake generate_secret_token
RAILS_ENV=production bundle exec rake db:migrate

配置Nginx

切换回您的sudo用户:

exit

打开您的文本编辑器,然后创建以下 Nginx服务器块文件:

sudo nano /etc/nginx/conf.d/example.com.conf

/etc/nginx/conf.d/example.com.conf

passenger_root /usr/share/ruby/vendor_ruby/phusion_passenger/locations.ini;
passenger_ruby /opt/redmine/.rvm/gems/default/wrappers/ruby;
passenger_instance_registry_dir /var/run/passenger-instreg;

server {
    listen 80;
    server_name example.com www.example.com;

    root /opt/redmine/redmine-4.0.1/public;

    # log files
    access_log /var/log/nginx/example.com.access.log;
    error_log /var/log/nginx/example.com.error.log;

    passenger_enabled on;
    passenger_min_instances 1;

    client_max_body_size 10m;
}

别忘了用您的Redmine域替换example.com。

在重新启动Nginx服务之前,请进行测试以确保没有语法错误:

sudo nginx -t

如果没有错误,输出应如下所示:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

最后,通过键入以下内容来重新启动Nginx服务:

sudo systemctl restart nginx

使用SSL配置Nginx

如果您的域没有受信任的SSL证书,则可以按照这些说明

来生成免费的“加密SSL”证书。

生成证书后,请如下编辑域Nginx配置:

sudo nano /etc/nginx/conf.d/example.com.conf

/etc/nginx/conf.d/example.com

passenger_root /usr/share/ruby/vendor_ruby/phusion_passenger/locations.ini;
passenger_ruby /opt/redmine/.rvm/gems/default/wrappers/ruby;
passenger_instance_registry_dir /var/run/passenger-instreg;

# Redirect HTTP -> HTTPS
server {
    listen 80;
    server_name www.example.com example.com;

    include snippets/letsencrypt.conf;
    return 301 https://example.com$request_uri;
}

# Redirect WWW -> NON WWW
server {
    listen 443 ssl http2;
    server_name www.example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    include snippets/ssl.conf;

    return 301 https://example.com$request_uri;
}

server {
    listen 443 ssl http2;
    server_name example.com;

    root /opt/redmine/redmine-4.0.1/public;

    # SSL parameters
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    include snippets/ssl.conf;
    include snippets/letsencrypt.conf;

    # log files
    access_log /var/log/nginx/example.com.access.log;
    error_log /var/log/nginx/example.com.error.log;

    passenger_enabled on;
    passenger_min_instances 1;
    client_max_body_size 10m;
}

不要忘了用您的Redmine域替换example.com,并设置SSL证书文件的正确路径。所有 HTTP请求都将重定向到HTTPS

访问Redmine

打开您的浏览器,键入您的域,并假设安装成功,则会出现类似于以下的屏幕:

Redmine的默认登录凭据为:

  • 用户名:admin
  • 密码:admin

结论

您已成功在CentOS系统上安装Redmine。您现在应该查看 Redmine文档,并了解有关如何配置和使用Redmine的更多信息。

如果您遇到问题或有反馈,请在下面发表评论。