本页内容
- 先决条件
- 安装依赖项
- 安装 RVM 和 Ruby
- 配置 PostgreSQL 数据库
- 安装并配置 Redmine
- 安装并配置 Passenger
- 为 Redmine 配置 httpd
- 验证 Redmine 安装
- 结论
Redmine 是一款免费且开源的项目管理和问题跟踪程序。它是一款主要使用 Ruby on Rails 编写的基于 Web 的应用程序软件。它是跨平台的,并支持多种数据库和语言。
Redmine 非常灵活,可用于从小型到中型再到大型的不同类型组织和项目。借助 Redmine,你可以创建和管理多个项目,每个项目都拥有自己的 wiki、论坛、问题跟踪等功能。你还可以根据组织需求创建自定义角色,以及更多其他功能。
Redmine 基于 GNU GPL v2 许可证发布,可以安装在任何操作系统上,例如 Linux、Windows 或 macOS。它支持不同的数据库,包括 PostgreSQL、MySQL 和 SQLite(标准)。
以下是 Redmine 的主要特性:
- 多项目支持
- 每个项目的 Wiki 和论坛
- 文档和文件管理
- 新闻、订阅源和电子邮件通知
- 时间跟踪
- 支持多种 SCM(SVN、Git、CVS、Mercurial、Bazaar)
- 提供约 49 种语言支持
- 支持 LDAP 认证
- 等
先决条件
在本指南中,你将学习如何在 Rocky Linux 系统上使用 PostgreSQL 数据库和 Apache/httpd Web 服务器部署 Redmine 项目管理和问题跟踪工具。
以下是本示例的环境:
- 操作系统:Rocky Linux 8.4(Green Obsidian)
- IP 地址:192.168.1.10
- Root 权限
- 域名:redmine.example.com
你将通过本指南学习的目标:
- 使用 RVM(Ruby Version Manager)安装 Ruby
- 配置 PostgreSQL 数据库
- 安装 Passenger
- 为 Redmine 配置 Apache/httpd 虚拟主机(带或不带 SSL)
- Redmine 的安装与配置
在使用本指南之前,建议你先在 Rocky Linux 系统上完成 PostgreSQL 的安装。
如何在 Rocky Linux 上安装 PostgreSQL
安装依赖项
首先,你必须安装以下依赖项。Redmine 安装需要下面列出的所有软件包,并且请确保使用 sudo 或 root 权限执行以下所有命令。
1. 将 EPEL(Extra Packages for Enterprise Linux)软件仓库添加到你的系统。
sudo dnf install epel-release -y
2. EPEL 安装完成后,使用下面的 DNF 命令安装软件包。
sudo dnf install curl gpg gnupg2 gcc gcc-c++ make patch autoconf automake bison ImageMagick libffi-devel libtool patch redhat-rpm-config readline-devel postgresql-devel zlib-devel openssl-devel -y
3. 接下来,通过执行如下 DNF 命令在你的 Rocky Linux 系统上安装 apache/httpd Web 服务器。
sudo dnf install libcurl-devel httpd-devel httpd apr-devel apr-util-devel -y
如果 httpd 软件包安装完成,启动并启用 httpd 服务。
sudo systemctl enable --now httpd
现在验证 httpd,确保它处于活动状态且正在运行。
sudo systemctl status httpd

Redmine 安装所需的基础软件包已安装完毕,进入下一步安装 RVM 和 Ruby。
安装 RVM 和 Ruby
最新版本的 Redmine 需要 Ruby 2.7 版本才能安装。在此步骤中,你将使用 RVM(Ruby Version Manager)在 Rocky Linux 系统上安装 Ruby 2.7 版本。
因此,你将先安装 RVM,然后再安装 Ruby。
1. 首先,将 rvm 开发者的 GPG 密钥导入到你的系统。
curl -sSL https://rvm.io/mpapis.asc | gpg2 --import -
curl -sSL https://rvm.io/pkuczynski.asc | gpg2 --import -
2. 现在使用以下命令安装 rvm 稳定版并加载 rvm 环境。
curl -L get.rvm.io | bash -s stable
source /etc/profile.d/rvm.sh

之后,重新加载 rvm 源,并安装 rvm 所需的全部系统依赖。
rvm reload
rvm requirements run

如果所有过程都已完成,就可以安装 Ruby 了。
3. 执行以下 rvm 命令,在 Rocky Linux 系统上安装 Ruby 2.7 版本。
rvm install 2.7
等待安装完成。

现在查看你的系统上可用的 Ruby 版本,并确认当前使用的 Ruby 版本。
rvm list
ruby --version
你将看到类似如下的输出。

你的系统上只安装了一个 Ruby 版本,即 ruby 2.7.2,并且它当前正在你的系统上使用。
现在进入下一阶段,为 Redmine 安装配置 PostgreSQL 数据库。
配置 PostgreSQL 数据库
在继续之前,请确保你已完成如下 PostgreSQL 的安装。
如何在 Rocky Linux 上安装 PostgreSQL
之后,你将为 Redmine 创建一个新的 PostgreSQL 数据库和用户。
1. 使用以下命令登录到 PostgreSQL shell。
sudo -u postgres psql
2. 使用以下查询创建一个新 PostgreSQL 用户 'redmine' 和数据库 'redminedb'。请确保将密码替换为你自己的强密码。
CREATE ROLE redmine LOGIN ENCRYPTED PASSWORD 'StrongPasswordRedmine' NOINHERIT VALID UNTIL 'infinity';
CREATE DATABASE redminedb WITH ENCODING='UTF8' OWNER=redmine;
输入 '\q' 并按 'Enter' 退出 PostgreSQL shell。

现在可以开始在你的系统上安装 Redmine 了。
安装并配置 Redmine
在此步骤中,你将安装 Redmine 4.2.3 版本,这是目前的最新版本。Redmine 将被安装到 '/var/www/redmine' 目录。
1. 将当前工作目录切换到 '/var/www',并下载 Redmine 4.2.3 源代码。
cd /var/www/
wget https://www.redmine.org/releases/redmine-4.2.3.tar.gz
现在解压 Redmine 源代码,并将目录重命名为 'redmine'。
tar -xzvf redmine-4.2.3.tar.gz
mv redmine-*/ redmine
2. 接下来,你将创建一个新的 Redmine 数据库配置。
将你的工作目录切换到 '/var/www/redmine' 目录。
export REDMINE=/var/www/redmine
cd $REDMINE
使用 nano 编辑器创建新的数据库配置文件 'config/database.yml'。
nano config/database.yml
将以下配置复制粘贴进去。请确保将数据库名称、用户名和密码替换为你自己的信息。
production: adapter: postgresql database: redminedb host: localhost username: redmine password: "StrongPasswordRedmine" encoding: utf8
保存配置并退出。
3. 为 Redmine 配置完数据库后,你将安装一些 Ruby 依赖项。你必须在 Redmine 安装目录 '/var/www/redmine' 下运行以下命令。
首先,使用下面的 ruby gem 命令安装 bundler。
gem install bundler
现在执行下面的 'bundle' 命令来配置你的 Redmine 安装。
bundle config set --local path 'vendor/bundle'
bundle config set --local without 'development test'

现在使用下面的 bundle 命令安装 Redmine 所需的 Ruby 软件包依赖。
bundle install
根据你网络连接的状况以及机器/系统的性能,该命令将需要一些时间。如果没有出现任何错误,进入下一步。
4. 所有 Ruby 依赖安装完成后,使用以下命令生成 secret token 并迁移数据库。
bundle exec rake generate_secret_token
RAILS_ENV=production bundle exec rake db:migrate

5. 之后,将 Redmine 安装目录的所有权更改为用户 'apache'。
sudo chown -R apache:apache $REDMINE
Redmine 的安装和配置已完成,进入下一步设置 passenger 和 httpd Web 服务器。
安装并配置 Passenger
Passenger(或称 Phusion Passenger)是一个用 Ruby 编写的 Web 应用服务器。在生产环境中,它通常用作你的 Rails 应用程序的前端。在本指南中,你的 Redmine 将运行在 passenger 和 httpd Web 服务器之后。
Passenger 可以通过 RubyGem 仓库安装。它还可以与 Apache/httpd 和 Nginx Web 服务器集成,以处理包括 Rails 在内的 Ruby 应用程序。
1. 要在系统范围内安装 passenger,执行以下 gem 命令
gem install passenger

2. passenger 安装完成后,执行以下命令安装 passenger 的 Apache 模块。
passenger-install-apache2-module
安装程序会说明你将要执行的所有操作,阅读完有关安装的各项说明后按 'Enter'。

选择 'Ruby' 作为你的应用,然后按 'Enter' 继续。

现在安装程序会提示你向 Apache/httpd 添加一些配置,如下图所示。

打开一个新的终端 shell,连接到你的服务器,然后使用 nano 编辑器创建新的 httpd 配置文件 '/etc/httpd/conf.d/passenger.conf'。
nano /etc/httpd/conf.d/passenger.conf
将屏幕上显示的配置粘贴进去。以下是上方截图中的配置。
LoadModule passenger_module /usr/local/rvm/gems/ruby-2.7.2/gems/passenger-6.0.12/buildout/apache2/mod_passenger.so <IfModule mod_passenger.c> PassengerRoot /usr/local/rvm/gems/ruby-2.7.2/gems/passenger-6.0.12 PassengerDefaultRuby /usr/local/rvm/gems/ruby-2.7.2/wrappers/ruby </IfModule>
保存配置并退出。
接下来,重启 httpd 服务以应用新配置。
sudo systemctl restart httpd

然后回到之前的 shell,按 'Enter' 继续。
之后,安装程序会检查 Apache 模块的安装情况,请确保没有出现任何错误。
如果没有出现任何错误,你将看到类似如下的输出。

Passenger 及其 Apache 2 模块的安装已完成。现在可以开始为 Redmine 设置 httpd 虚拟主机了。
为 Redmine 配置 httpd
在此步骤中,你将为你 Redmine 的安装创建一个新的 httpd 虚拟主机配置。
1. 使用 nano 编辑器创建新的虚拟主机配置文件 '/etc/httpd/conf.d/redmine.conf'。
nano /etc/httpd/conf.d/redmine.conf
复制并粘贴以下配置,并确保将域名替换为你自己的域名。
PassengerRuby /usr/local/rvm/gems/ruby-2.7.2/wrappers/ruby <VirtualHost *:80> ServerName redmine.example.io DocumentRoot "/var/www/redmine/public" ErrorLog logs/redmine_error_log LogLevel warn <Directory "/var/www/redmine/public"> Options Indexes ExecCGI FollowSymLinks Require all granted AllowOverride all </Directory> </VirtualHost>
保存配置并退出。
对于 HTTPS 的 Redmine 配置,复制并粘贴以下配置。并确保将域名和 SSL 路径替换为你自己的信息。另外,不要忘记启用 Apache 的 mod_ssl 模块以在你的系统上启用 HTTPS。
PassengerRuby /usr/local/rvm/gems/ruby-2.7.2/wrappers/ruby
<VirtualHost *:80>
ServerName redmine.example.io
Redirect permanent / https://redmine.example.io/
</VirtualHost>
<VirtualHost *:443>
ServerName redmine.example.io
Protocols h2 http/1.1
<If "%{HTTP_HOST} == 'www.redmine.example.io'">
Redirect permanent / https://redmine.example.io/
</If>
DocumentRoot "/var/www/redmine/public"
ErrorLog /var/log/httpd/redmine.example.io-error.log
CustomLog /var/log/httpd/redmine.example.io-access.log combined
SSLEngine On
SSLCertificateFile /etc/letsencrypt/live/redmine.example.io/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/redmine.example.io/privkey.pem
<Directory /var/www/redmine/public>
Options Indexes ExecCGI FollowSymLinks
Require all granted
AllowOverride all
</Directory>
</VirtualHost>
2. 接下来,验证 httpd 配置并确保没有错误。然后重启 httpd 服务以应用新的虚拟主机配置。
apachectl configtest
sudo systemctl restart httpd
现在可以访问你的 Redmine 安装了。

验证 Redmine 安装
打开你的 Web 浏览器,在地址栏中输入你的 Redmine 安装域名,并加上路径 '/login'。
https://redmine.example.io/login
1. 在 Redmine 登录页面,输入默认用户名 'admin' 和密码 'admin',然后点击 'Login' 按钮。

2. 现在你必须重置默认的 admin 密码。
输入旧密码 'admin',然后输入新的强密码,再点击 'Apply'。

3. 你将看到你的账户详细信息。

用你自己的信息编辑所有内容,或者保持默认,然后点击 'Save' 按钮。
4. 你将看到如下的 Redmine 管理页面。

在初次安装时,你必须加载 Redmine 安装的默认语言。
选择你的语言,然后点击 'Load the default configuration' 按钮。
5. 在左侧菜单中,点击 'Users' 菜单查看你 Redmine 上的所有注册用户。

6. 现在进入 'Information' 菜单查看你 Redmine 安装的全部详细信息。
以下是你将获得的类似输出。

如你所见,Redmine 安装已完成。你刚刚在生产环境中安装了 Redmine 4.2.3 稳定版,搭配 Ruby 2.7 和 PostgreSQL 数据库。
结论
恭喜!你已经学会了如何在 Rocky Linux 系统上使用 PostgreSQL 数据库和 Apache/httpd Web 服务器安装 Redmine。同时,你也学会了如何安装 Phusion Passenger 及其与 Apache Web 服务器的集成。
下一步,你可以为你的 Redmine 安装添加额外的插件,并添加 SMTP 服务器等。