本页内容
- 先决条件
- 安装依赖项
- 配置 MariaDB 服务器
- 下载并安装 Redmine
- 配置 Apache2 虚拟主机
- 访问 Redmine 安装
- 总结
Redmine 是一个免费且开源的项目管理与问题跟踪工具。它是基于 Web 的,主要使用 Ruby on Rails 编写。它跨平台,并支持多种数据库和多种语言。
Redmine 非常灵活,可用于不同类型组织和项目,无论是小型、中型还是大型组织。它允许您创建和管理多个项目,每个项目都拥有自己的 Wiki、论坛、问题跟踪等功能。此外,它还允许您根据组织的需求创建自定义角色,以及更多其他功能。
Redmine 基于 GNU GPL v2 许可证发布,可安装在任何操作系统上,例如 Linux、Windows 或 macOS。它支持多种类型的数据库,包括 PostgreSQL、MySQL 和 SQLite(默认)。
按照本分步指南,在 Debian 12 服务器上安装 Redmine 项目管理与问题跟踪工具。按照本指南操作,您将安装 Redmine,并使用 MariaDB 作为数据库服务器、Apache2 作为 Web 服务器。
先决条件
在开始之前,请确保您已准备好:
- 一台 Debian 12 服务器。
- 一个具有管理员权限的非 root 用户。
- 一个指向服务器 IP 地址的域名。
安装依赖项
Redmine 是一个基于 Web、使用 Ruby on Rails 编写的项目管理工具。要安装 Redmine,您必须先安装以下软件包:
- Apache Web 服务器:将用作 Redmine 的 Web 服务器。
- MariaDB 服务器:Redmine 可以使用 MySQL/MariaDB、PostgreSQL 等数据库运行。本指南将使用 MariaDB 服务器。
- Ruby:在撰写本文时,Redmine 稳定版 5.0.6 可使用 Ruby 3.1 安装。
- 额外软件包:用于生成 SSL/TLS 证书的 Certbot、用于编译 Ruby 代码的 build-essential,以及作为版本控制系统的 Subversion。
在安装依赖项之前,请使用以下命令更新并刷新您的 Debian 软件源。
sudo apt update

现在运行以下 apt install 命令,安装 Redmine 所需的依赖项,包括 Apache2、MariaDB、Ruby、ImageMagick、Certbot 和 Subversion。
sudo apt install apache2 libapache2-mod-passenger mariadb-server certbot python3-certbot-apache ruby ruby-dev build-essential default-mysql-server default-libmysqlclient-dev libxml2-dev libxslt1-dev zlib1g-dev imagemagick libmagickwand-dev subversion
输入 y 以继续安装。

依赖项安装完成后,通过执行以下命令验证各项依赖。
验证 apache2 服务,确保该服务正在运行并已启用。
sudo systemctl is-enabled apache2
sudo systemctl status apache2
下方显示的输出确认 apache2 已启用并正在运行。

现在通过执行以下命令验证 mariadb 服务。
sudo systemctl is-enabled mariadb
sudo systemctl status mariadb
输出应与 apache2 服务类似,确认该服务正在运行并已启用。

接下来,使用以下命令验证您系统上的 Ruby 版本。您应该会看到 Debian 机器上已安装 Ruby 3.1.2。
ruby --version

最后,使用以下命令验证 Subversion。这将确保 Subversion 已安装。
svn --version
显示的输出应与此类似:

配置 MariaDB 服务器
安装依赖项后,您将通过 mariadb-secure-installation 工具配置 MariaDB 服务器,并创建一个供 Redmine 使用的新数据库和用户。
执行以下命令以加固您的 MariaDB 服务器安装。
sudo mariadb-secure-installation
在此过程中,输入 Y 确认并应用更改,或输入 n 表示否以拒绝。以下是您将被询问的一些 MariaDB 服务器配置项:
- 切换到 unix_socket 认证?输入 n 并按回车键。默认的 MariaDB root 用户已经受到保护。或者,您也可以通过输入 y 表示是来启用它。
- 更改 root 密码?输入 y 确认并设置新的 MariaDB root 密码。
- 删除匿名用户?输入 y 确认。
- 禁止 root 远程登录?输入 y 确认。如果您使用 MariaDB root 用户,则仅允许本地连接。
- 删除测试数据库及其访问权限?输入 y 确认并删除默认数据库 'test'。
- 最后,再次输入 y 以重新加载 MariaDB 服务器上的所有表权限并应用新的更改。
配置完 MariaDB 服务器后,通过以下 mariadb 客户端命令登录 MariaDB 服务器。当提示时输入您的 MariaDB root 密码。
sudo mariadb -u root -p
现在执行以下查询,创建一个新数据库 redmine、一个新用户 redmine,密码为 secretPassword。Redmine 将使用以下数据库信息,请务必更改密码。
CREATE DATABASE redmine CHARACTER SET utf8mb4;
CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'secretPassword';
GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';
FLUSH PRIVILEGES;

接下来,运行以下查询以验证用户 redmine 的权限。
SHOW GRANTS FOR redmine@localhost;
将显示以下输出,确认用户 redmine 可以访问数据库 redmine。

输入 quit 退出 MariaDB 服务器。
下载并安装 Redmine
在接下来的部分,您将在 Debian 机器上下载并安装 Redmine。您将通过 subversion 下载 Redmine 源代码,使用 MariaDB 数据库服务器配置 Redmine,然后通过 bundler 安装 Ruby 依赖项。
在开始之前,请通过执行以下命令在系统上安装 bundler。
gem install bundler

切换到 /var/www 目录,并通过以下 svn 命令下载 Redmine 源代码。在本示例中,您将把 Redmine 稳定版 5.0 下载到 redmine-5.0 目录,因此您的 Redmine 安装目录应为 /var/www/redmine-5.0。
cd /var/www
svn co https://svn.redmine.org/redmine/branches/5.0-stable redmine-5.0

进入 /var/www/redmine-5.0 目录,并将默认数据库配置复制到 config/database.yml。
cd /var/www/redmine-5.0
cp config/database.yml.example config/database.yml
使用以下 nano 编辑器命令打开 Redmine 数据库配置文件 config/database.yml。
nano config/database.yml
在 production 部分,按以下内容检查数据库配置。请务必更改数据库名称、用户名和密码。
production: adapter: mysql2 database: redmine host: localhost username: redmine password: "secretPassword" # Use "utf8" instead of "utfmb4" for MySQL prior to 5.7.7 encoding: utf8mb4
完成后保存并关闭文件。
接下来,运行以下 bundle 命令以禁用 development 和 test,然后安装 Redmine 的 Ruby 依赖项。
bundle config set --local without 'development test'
bundle install
在此过程中,显示的输出应与此类似:

现在通过执行以下命令生成密钥令牌(secret token)并迁移数据库。
bundle exec rake generate_secret_token
RAILS_ENV=production bundle exec rake db:migrate
在数据库迁移过程中,将显示以下输出。

最后,运行以下命令将默认数据加载到您的 Redmine 安装中。
RAILS_ENV=production REDMINE_LANG=en bundle exec rake redmine:load_default_data
如果成功,您将看到输出 "Default configuration data loaded"。

配置 Apache2 虚拟主机
下载并安装 Redmine 之后,下一步是创建一个新的 Apache2 虚拟主机,用于运行 Redmine 并通过 Certbot 和 Letsencrypt 生成 SSL/TLS 证书。因此,在继续之前,请确保您有一个指向服务器 IP 地址的域名。
使用以下 nano 编辑器命令创建新的虚拟主机配置文件 /etc/apache2/sites-available/redmine.conf。
sudo nano /etc/apache2/sites-available/redmine.conf
插入以下配置,并务必更改 ServerName 行中的域名。
<VirtualHost *:80>
ServerName redmine.howtoforge.local
RailsEnv production
DocumentRoot /var/www/redmine-5.0/public
ErrorLog ${APACHE_LOG_DIR}/redmine.howtoforge.local.error.log
CustomLog ${APACHE_LOG_DIR}/redmine.howtoforge.local.access.log combined
<Directory "/var/www/redmine-5.0/public">
Allow from all
Require all granted
</Directory>
</VirtualHost>
完成后保存并关闭文件。
接下来,运行以下命令以在 Apache2 Web 服务器上启用 rewrite 模块,然后启用虚拟主机文件 redmine.conf。
sudo a2enmod rewrite
sudo a2ensite redmine.conf
之后,通过执行以下命令验证 Apache2 的语法。如果语法正确,将显示输出 "Syntax OK"。
sudo apachectl configtest
接下来,运行以下 systemctl 命令以重启 apache2 服务并应用更改。
sudo systemctl restart apache2

最后,使用以下 certbot 命令为您的 Redmine 安装生成新的 SSL/TLS 证书。请务必将域名和电子邮件地址替换为您的个人信息。
sudo certbot --apache --agree-tos --no-eff-email --redirect --hsts --staple-ocsp --email
[email protected]
-d redmine.howtoforge.local
过程完成后,您的 SSL/TLS 证书将生成到 /etc/letsencrypt/live/redmine.howtoforge.local/ 目录。此外,您的虚拟主机文件 redmine.conf 将通过 Certbot Apache 插件自动配置为 HTTPS。
访问 Redmine 安装
启动您的 Web 浏览器并访问您的 Redmine 域名,例如 https://redmine.howtoforge.local。如果安装成功,将显示以下 Redmine 主页。

现在点击右上角的 Sign In 链接以进入 Redmine 登录页面。然后输入默认用户 admin 和密码 admin,再点击 Login。

首先,系统会要求您更改默认的 admin 密码。输入旧密码 admin,然后输入新密码并重复,再点击 Apply 确认更改。

现在您将被重定向到您的管理员资料页面,并应看到提示信息 "Password was successfully updated"。在这里,您还可以更改管理员用户的详细信息,然后点击 Save 确认。

最后,点击 Administration > Informations 以获取您 Redmine 安装的详细信息。将显示以下页面,从中确认已安装 Redmine 5.0.6 stable,搭配 Ruby 3.1.2、Rails 6.1、Mysql2 数据库驱动以及 Subversion 1.14。

总结
总之,您已经在 Debian 12 服务器上逐步成功安装了 Redmine 项目管理与问题跟踪工具。您使用 Apache2 Web 服务器和 MariaDB 数据库服务器安装了 Redmine,并通过来自 Letsencrypt 的 SSL/TLS 证书加固了您的 Redmine 安装。在此基础上,您现在可以向 Redmine 添加 SMTP 服务器,并为您的 Redmine 项目管理 Web 应用安装额外的扩展和主题。