Redmine 是一个开源的项目管理和问题跟踪应用。它是一个跨平台并且跨数据库的应用,构建于 Ruby on Rails 框架之上。
Redmine 包括多项目支持,wiki,问题跟踪系统,论坛,日历,邮件提醒等等。
这个指南讲解如何在 CentOS 8 上安装和配置最新版本的 Redmine。 我们将会使用MariaDB作为数据库 和 Passenger + Apache 作为 Ruby 应用服务器。
确保你满足下面的条件:
Redmine 支持MySQL/MariaDB, Microsoft SQL Server, SQLite 3, 和 PostgreSQL。我们将会选择 MariaDB 作为数据库后端。
如果你没有在你的 CentOS 系统上安装 MariaDB 或者 MySQL,你可以按照下面的指令安装它. https://linuxize.com/post/how-to-install-mariadb-on-centos-8/
使用下面的命令,登录 MySQL shell:
sudo mysql
在MySQL shell,运行下面的SQL 表达式来创建数据库,新建用户,并且给用户授权:
CREATE DATABASE redmine CHARACTER SET utf8;
GRANT ALL ON redmine.* TO 'redmine'@'localhost' IDENTIFIED BY 'change-with-strong-password';
确保你将 change-with-strong-password 替换成一个强密码。
一旦完成,退出 MySQL shell:
EXIT;
Passenger 是一个很快速,轻量的网络应用服务器,适用于Ruby, Node.js, and Python,它还可以与Apache 、 Nginx集成。
我们将会安装 Passenger 作为一个 Apache 模块。
启用 EPEL repository:
sudo dnf install epel-release
sudo dnf config-manager --enable epel
一旦源被启用,更新软件包列表,并且安装 Ruby,Apache 和 Passenger:
sudo dnf install httpd mod_passenger passenger passenger-devel ruby
开启 Apache 服务并且启用开机启动:
sudo systemctl enable httpd --now
创建一个新的用户和用户组,主目录为/opt/redmine
,用于运行 Redmine 实例:
sudo useradd -m -U -r -d /opt/redmine redmine
添加apache
用户到 redmine用户组,并且修改/opt/redmine
目录权限以便 Apache 能够访问它:
sudo usermod -a -G redmine apache
sudo chmod 750 /opt/redmine
在写作的时候,Redmine最新稳定版本是 4.1.0
在继续下一步之前,浏览 Redmine下载页面,看看有没有更新的版本可用。
安装 构建 Redmine 所需要的 GCC 编译器和库:
sudo dnf group install "Development Tools"
sudo dnf install zlib-devel curl-devel openssl-devel mariadb-devel ruby-devel
确定你使用redmine
用户运行下面的步骤:
sudo su - redmine
使用 curl
下载 Redmine 压缩包:
curl -L http://www.redmine.org/releases/redmine-4.1.0.tar.gz -o redmine.tar.gz
一旦下载完成,解压这个压缩包:
tar -xvf redmine.tar.gz
拷贝 Redmine 示例数据库配置文件:
cp /opt/redmine/redmine-4.1.0/config/database.yml.example /opt/redmine/redmine-4.1.0/config/database.yml
使用文本编辑器打开文件:
nano /opt/redmine/redmine-4.1.0/config/database.yml
搜索production
章节,并且输入我们之前创建的 MySQL 数据库 和 用户信息:
/opt/redmine/redmine-4.1.0/config/database.yml
production:
adapter: mysql2
database: redmine
host: localhost
username: redmine
password: "change-with-strong-password"
encoding: utf8mb4
一旦完成,保存你的文件,并且退出编辑器。
切换到redmine-4.1.0
目录并且安装 Ruby 依赖包:
cd ~/redmine-4.1.0
gem install bundler --no-rdoc --no-ri
bundle install --without development test postgresql sqlite --path vendor/bundle
运行下面的命令来生成密钥,并且迁移数据库:
bundle exec rake generate_secret_token
RAILS_ENV=production bundle exec rake db:migrate
切换回你的 sudo 用户,并且创建 Apache Vhost文件:
exit
sudo nano /etc/httpd/conf.d/example.com.conf
/etc/httpd/conf.d/example.com.conf
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /opt/redmine/redmine-4.1.0/public
<Directory /opt/redmine/redmine-4.1.0/public>
Options Indexes ExecCGI FollowSymLinks
Require all granted
AllowOverride all
</Directory>
ErrorLog /var/log/httpd/example.com-error.log
CustomLog /var/log/httpd/example.com-access.log combined
</VirtualHost>
不要忘记将example.com替换成你的 Redmine 域名。
重启 Apache 服务,输入:
sudo systemctl restart httpd
如果你没有一个可信任的 SSL 证书,你可以按照这些指令,生成一个免费的Let’s Encrypt证书。https://linuxize.com/post/secure-apache-with-let-s-encrypt-on-centos-8/
一旦证书被生成,编辑类似下面的 Apache 配置文件:
sudo nano /etc/httpd/conf.d/example.com.conf
/etc/httpd/conf.d/example.com.conf
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
Redirect permanent / https://example.com/
</VirtualHost>
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
Protocols h2 http:/1.1
<If "%{HTTP_HOST} == 'www.example.com'">
Redirect permanent / https://example.com/
</If>
DocumentRoot /opt/redmine/redmine-4.1.0/public
ErrorLog /var/log/httpd/example.com-error.log
CustomLog /var/log/httpd/example.com-access.log combined
SSLEngine On
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
<Directory /opt/redmine/redmine-4.1.0/public>
Options Indexes ExecCGI FollowSymLinks
Require all granted
AllowOverride all
</Directory>
</VirtualHost>
不要忘记将example.com替换成你的Redmine域名,设置正确的 SSL 证书文件路径。所有的 HTTP 请求都转向 HTTPS。
打开你的浏览器,输入你的域名,并且如果安装过程很成功,那么一个类似下面的界面将会出现:
默认的登录凭据如下:
当你第一次登录时,你将会被提示修改密码,类似下面:
一旦你修改了密码,你将会被转向用户页面。
如果你无法访问页面,那很可能是你的防火墙阻止了 Apache 端口。
使用下面的命令,来打开必要的端口:
sudo firewall-cmd --permanent --zone=public --add-port=443/tcp
sudo firewall-cmd --permanent --zone=public --add-port=80/tcp
sudo firewall-cmd --reload
你已经在你的 CentOS 系统上成功地安装了 Redmine。你现在应该查看 Redmine 文档,并且学习如何配置和使用 Redmine。