如何在 CentOS 上安装和配置 Redmine
Redmine 是一个免费、开源、流行的项目管理和问题跟踪系统。它支持 PostgreSQL 和 MariaDB 数据库,并构建在 Ruby on Rails 框架之上。它具有内置的第三方插件支持,允许您设置多个项目、wiki 和论坛。它提供了广泛的功能,包括电子邮件和源通知、多语言支持、基于角色的访问控制、文件管理等等。
本教程将讲解如何在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
接下来,使用以下命令生成秘密令牌:
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 界面。您应该看到以下页面:
单击登录按钮。您应该看到 Redmine 登录页面:
以管理员身份提供默认用户和密码,然后点击登录按钮。您将被重定向到更改密码屏幕:
设置新的管理员密码,然后单击保存按钮保存更改。
结论
恭喜!您已经通过 Nginx 在 CentOS 8 上成功安装了 Redmine。您现在可以在您的组织中使用Redmine并从中央位置管理您的项目。