本页内容
- 先决条件
- 安装所需依赖
- 安装并配置 MariaDB 数据库
- 安装 Ruby 和 Passenger
- 安装 Redmine
- 为 Redmine 创建 Systemd 服务文件
- 配置 Nginx 作为 Redmine 的反向代理
- 访问 Redmine
- 总结
Redmine 是一款免费、开源且广受欢迎的项目管理与问题跟踪系统。它支持 PostgreSQL 和 MariaDB 数据库,并基于 Ruby on Rails 框架构建。它内置第三方插件支持,允许你创建多个项目、维基和论坛。它提供丰富的功能,包括电子邮件与订阅通知、多语言支持、基于角色的访问控制、文件管理等。
本教程将介绍如何在 CentOS 上安装 Redmine 项目管理系统。
先决条件
- 一台运行 CentOS 8 的服务器。
- 服务器上已配置 root 密码。
安装所需依赖
在开始之前,你需要在服务器上安装一些依赖包。你可以使用以下命令安装它们:
dnf group install "Development Tools"
dnf install zlib-devel curl-devel openssl-devel -y
所有软件包安装完成后,你可以继续进行下一步。
安装并配置 MariaDB 数据库
Redmine 使用 MariaDB 作为数据库后端,因此你需要在服务器上安装 MariaDB 数据库服务器。你可以使用以下命令安装:
dnf install mariadb-server mariadb-devel -y
MariaDB 服务器安装完成后,启动 MariaDB 服务并设置为开机自启:
systemctl start mariadb
systemctl enable mariadb
接下来,使用以下命令登录 MariaDB shell:
mysql
登录后,使用以下命令为 Redmine 创建数据库和用户:
MariaDB [(none)]> CREATE DATABASE redmine CHARACTER SET utf8mb4;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost' IDENTIFIED BY 'password';
接下来,刷新权限并退出 MariaDB,使用以下命令:
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;
完成后,你可以继续进行下一步。
安装 Ruby 和 Passenger
接下来,你需要将 Ruby 和 Passenger 安装到系统中。
首先,使用以下命令安装并启用 EPEL 仓库:
dnf install epel-release -y
dnf config-manager --enable epel -y
接下来,使用以下命令安装 Ruby 和 Passenger:
dnf install mod_passenger passenger passenger-devel ruby ruby-devel -y
所有软件包安装完成后,你可以继续进行下一步。
安装 Redmine
首先,你需要为 Redmine 创建一个独立的用户。你可以使用以下命令创建:
useradd -m -U -r -d /opt/redmine redmine
接下来,登录 Redmine 用户并使用以下命令下载最新版本的 Redmine:
su - redmine
wget --no-check-certificate https://www.redmine.org/releases/redmine-4.2.1.zip
下载完成后,使用以下命令解压下载的文件:
unzip redmine-4.2.1.zip
接下来,使用以下命令重命名解压后的目录:
mv redmine-4.2.1 redmine
接下来,切换到 redmine 目录并复制样例数据库配置文件:
cd redmine
cp config/database.yml.example config/database.yml
接下来,编辑数据库配置文件并设置你的数据库参数:
nano config/database.yml
修改以下与你数据库相匹配的行:
production: adapter: mysql2 database: redmine host: localhost username: redmine password: "password" encoding: utf8mb4
保存并关闭文件,然后使用以下命令安装 Bundler:
gem install bundler --no-rdoc --no-ri
接下来,使用以下命令安装其他依赖:
bundle install --without development test postgresql sqlite --path vendor/bundle
接下来,使用以下命令生成密钥令牌(secret token):
bundle exec rake generate_secret_token
接下来,使用以下命令生成应用所需的数据库对象:
RAILS_ENV=production bundle exec rake db:migrate
最后,使用以下命令启动应用:
bundle exec rails server webrick -e production
你应该看到如下输出:
/usr/bin/ruby: warning: shebang line ending with \r may cause problems => Booting WEBrick => Rails 5.2.5 application starting in production on http://0.0.0.0:3000 => Run `rails server -h` for more startup options [2021-06-24 00:40:15] INFO WEBrick 1.4.2 [2021-06-24 00:40:15] INFO ruby 2.5.5 (2019-03-15) [x86_64-linux] [2021-06-24 00:40:15] INFO WEBrick::HTTPServer#start: pid=43076 port=3000
按 CTRL + C 停止应用。
接下来,使用以下命令退出 Redmine 用户:
exit
为 Redmine 创建 Systemd 服务文件
接下来,你需要创建一个 systemd 服务文件来管理 Redmine 应用。你可以使用以下命令创建:
nano /usr/lib/systemd/system/redmine.service
添加以下行:
[Unit] Description=Redmine server After=syslog.target After=network.target [Service] Type=simple User=redmine Group=redmine ExecStart=/bin/ruby /opt/redmine/redmine/bin/rails server webrick -e production # Give a reasonable amount of time for the server to start up/shut down TimeoutSec=300 [Install] WantedBy=multi-user.target
保存并关闭文件,然后使用以下命令重新加载 systemd 守护进程:
systemctl daemon-reload
接下来,启动 Redmine 服务并设置为开机自启:
systemctl start redmine
systemctl enable redmine
现在,使用以下命令检查 Redmine 的状态:
systemctl status redmine
你应该看到如下输出:
? redmine.service - Redmine server
Loaded: loaded (/usr/lib/systemd/system/redmine.service; disabled; vendor preset: disabled)
Active: active (running) since Thu 2021-06-24 04:26:51 EDT; 1min 37s ago
Main PID: 44044 (ruby)
Tasks: 3 (limit: 25014)
Memory: 121.6M
CGroup: /system.slice/redmine.service
??44044 /bin/ruby /opt/redmine/redmine/bin/rails server webrick -e production
Jun 24 04:26:51 centos8 systemd[1]: Started Redmine server.
Jun 24 04:26:52 centos8 ruby[44044]: /bin/ruby: warning: shebang line ending with \r may cause problems
Jun 24 04:26:56 centos8 ruby[44044]: [2021-06-24 04:26:56] INFO WEBrick 1.4.2
Jun 24 04:26:56 centos8 ruby[44044]: [2021-06-24 04:26:56] INFO ruby 2.5.5 (2019-03-15) [x86_64-linux]
Jun 24 04:26:56 centos8 ruby[44044]: [2021-06-24 04:26:56] INFO WEBrick::HTTPServer#start: pid=44044 port=3000
此时,Redmine 已启动并监听 3000 端口。你可以使用以下命令检查:
ss -antpl | grep 3000
你应该得到如下输出:
LISTEN 0 128 0.0.0.0:3000 0.0.0.0:* users:(("ruby",pid=44044,fd=9))
配置 Nginx 作为 Redmine 的反向代理
接下来,你需要安装并配置 Nginx 作为 Redmine 的反向代理。首先,使用以下命令安装 Nginx 服务器:
dnf install nginx -y
接下来,使用以下命令创建 Nginx 虚拟主机配置文件:
nano /etc/nginx/conf.d/redmine.conf
添加以下行:
upstream backend {
server 127.0.0.1:3000;
}
server {
listen 80;
server_name redmine.example.com;
access_log /var/log/nginx/redmine.example.com-access.log;
error_log /var/log/nginx/redmine.example.com-error.log;
location / {
proxy_pass http://backend/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forward-Proto http;
proxy_set_header X-Nginx-Proxy true;
proxy_redirect off;
}
}
保存并关闭文件,然后使用以下命令检查 Nginx 是否存在语法错误:
nginx -t
你应该得到如下输出:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
接下来,启动 Nginx 服务并设置为开机自启:
systemctl start nginx
systemctl enable nginx
你也可以使用以下命令检查 Nginx 的状态:
systemctl status nginx
你应该得到如下输出:
? nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
Drop-In: /usr/lib/systemd/system/nginx.service.d
??php-fpm.conf
Active: active (running) since Thu 2021-06-24 04:33:48 EDT; 25s ago
Process: 45832 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
Process: 45830 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
Process: 45828 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
Main PID: 45833 (nginx)
Tasks: 3 (limit: 25014)
Memory: 5.3M
CGroup: /system.slice/nginx.service
??45833 nginx: master process /usr/sbin/nginx
??45834 nginx: worker process
??45835 nginx: worker process
Jun 24 04:33:48 centos8 systemd[1]: Starting The nginx HTTP and reverse proxy server...
Jun 24 04:33:48 centos8 nginx[45830]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Jun 24 04:33:48 centos8 nginx[45830]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Jun 24 04:33:48 centos8 systemd[1]: Started The nginx HTTP and reverse proxy server.
访问 Redmine
现在,你可以通过 URL http://redmine.example.com 访问 Redmine 的 Web 界面。你应该看到如下页面:

点击“Sign in”按钮。你应该看到 Redmine 的登录页面:

输入默认用户名和密码(均为 admin),然后点击 Login 按钮。你将被重定向到修改密码页面:

设置新的 admin 密码,然后点击 Save 按钮保存更改。
总结
恭喜!你已成功在 CentOS 8 上通过 Nginx 安装 Redmine。现在你可以在组织中使用 Redmine,并从统一的位置管理你的项目。