Redmine 是最流行的开源项目管理和问题跟踪软件工具之一。它是跨平台和跨数据库的,构建在 Ruby on Rails 框架之上。
Redmine包括对多个项目、wiki、问题跟踪系统、论坛、日历、电子邮件通知等的支持。
在本教程中,我们将介绍在 CentOS 7 服务器上安装和配置最新版本 Redmine 所需的步骤,使用 MariaDB 作为数据库后端,并使用 Passenger + Nginx 作为 Ruby 应用程序服务器。
先决条件#
在继续本教程之前,请确保您已满足以下先决条件:
- 域名指向你的服务器公网IP。在本教程中我们将使用
example.com
.
- 登录身份为具有 sudo 权限的用户
.
安装从源代码构建 Redmine 和 Ruby 所需的软件包:
sudo yum install curl gpg gcc gcc-c++ make patch autoconf automake bison libffi-devel libtool
sudo yum install readline-devel sqlite-devel zlib-devel openssl-develh readline glibc-headers glibc-devel
sudo yum install mariadb-devel zlib libyaml-devel bzip2 iconv-devel ImageMagick ImageMagick-devel
创建 MySQL 数据库#
Redmine 支持 MySQL/MariaDB、Microsoft SQL Server、SQLite 3 和PostgreSQL。在本教程中,我们将使用 MariaDB 作为数据库后端。
如果您的 CentOS 服务器上没有安装 MariaDB 或 MySQL,您可以按照以下方式安装这些说明
.
输入以下命令登录 MySQL shell:
sudo mysql
在 MySQL shell 中,运行以下 SQL 语句创建一个新数据库
:
CREATE DATABASE redmine CHARACTER SET utf8;
接下来,创建一个MySQL 用户帐户并授予对数据库的访问权限
:
GRANT ALL ON redmine.* TO 'redmine'@'localhost' IDENTIFIED BY 'change-with-strong-password';
确保你改变change-with-strong-password
使用强密码。
完成后,输入以下命令退出 mysql shell:
EXIT;
安装 Passenger 和 Nginx#
乘客是一个用于 Ruby、Node.js 和 Python 的快速、轻量级 Web 应用程序服务器,可以与Apache和 Nginx。我们将安装 Passenger 作为 Nginx 模块。
安装EPEL 存储库以及所需的包:
sudo yum install epel-release yum-utils pygpgme
sudo yum-config-manager --enable epel
启用菲森乘客存储库:
sudo yum-config-manager --add-repo https://oss-binaries.phusionpassenger.com/yum/definitions/el-passenger.repo
启用存储库后,更新软件包列表并安装 Nginx 和 Passenger:
sudo yum install nginx passenger passenger-devel
创建新系统用户#
创建一个新的用户和组,它将运行Redmine实例,为简单起见,我们将命名该用户redmine
:
sudo useradd -m -U -r -d /opt/redmine redmine
Add the nginx
用户到新用户组并改变/opt/redmine
目录权限这样Nginx就可以访问它:
sudo usermod -a -G redmine nginx
sudo chmod 750 /opt/redmine
安装红宝石#
CentOS 存储库中的 Ruby 版本相当过时,并且不受 Redmine 支持。我们将使用 RVM 安装 Ruby。
切换到用户
redmine
通过输入:
sudo su - redmine
导入 GPG 密钥并安装 RVM:
gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
curl -sSL https://get.rvm.io | bash -s stable
开始使用 RVMsource
the rvm
file:
source /opt/redmine/.rvm/scripts/rvm
现在我们可以通过运行以下命令来安装 Ruby:
rvm install 2.5
rvm --default use 2.5
如果你想通过 Rbenv 检查安装 Ruby本指南
.
在 CentOS 上安装 Redmine#
在撰写本文时,Redmine 的最新稳定版本是版本 4.0.1。
在继续执行后续步骤之前,您应该检查Redmine下载页面查看是否有新版本可用。
1.下载Redmine#
使用以下命令下载Redmine存档卷曲命令
:
curl -L http://www.redmine.org/releases/redmine-4.0.1.tar.gz -o redmine.tar.gz
下载完成后解压存档:
tar -xvf redmine.tar.gz
2.配置Redmine数据库#
CopyRedmine示例数据库配置文件:
cp /opt/redmine/redmine-4.0.1/config/database.yml.example /opt/redmine/redmine-4.0.1/config/database.yml
使用文本编辑器打开文件:
nano /opt/redmine/redmine-4.0.1/config/database.yml
搜索production
部分并输入我们之前创建的MySQL数据库和用户信息:
/opt/redmine/redmine-4.0.1/config/database.yml
production:
adapter: mysql2
database: redmine
host: localhost
username: redmine
password: "change-with-strong-password"
encoding: utf8
完成后,保存文件并退出编辑器。
3.安装Ruby依赖项#
Navigate
to the redmine-4.0.1
目录并安装捆绑程序和其他 Ruby 依赖项:
cd ~/redmine-4.0.1
gem install bundler --no-rdoc --no-ri
bundle install --without development test postgresql sqlite
4. 生成密钥并迁移数据库#
运行以下命令生成密钥并迁移数据库:
bundle exec rake generate_secret_token
RAILS_ENV=production bundle exec rake db:migrate
配置 Nginx#
切换回您的 sudo 用户:
exit
打开文本编辑器并创建以下内容Nginx 服务器块
file:
sudo nano /etc/nginx/conf.d/example.com.conf
/etc/nginx/conf.d/example.com.conf
passenger_root /usr/share/ruby/vendor_ruby/phusion_passenger/locations.ini;
passenger_ruby /opt/redmine/.rvm/gems/default/wrappers/ruby;
passenger_instance_registry_dir /var/run/passenger-instreg;
server {
listen 80;
server_name example.com www.example.com;
root /opt/redmine/redmine-4.0.1/public;
# log files
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
passenger_enabled on;
passenger_min_instances 1;
client_max_body_size 10m;
}
不要忘记将 example.com 替换为您的 Redmine 域。
在重新启动 Nginx 服务之前进行测试以确保没有语法错误:
sudo nginx -t
如果没有错误,输出应如下所示:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
最后,重启 Nginx 服务通过输入:
sudo systemctl restart nginx
如果您的域没有受信任的 SSL 证书,您可以按照以下步骤生成免费的 Let’s Encrypt SSL 证书这些说明
.
生成证书后,编辑域 Nginx 配置,如下所示:
sudo nano /etc/nginx/conf.d/example.com.conf
/etc/nginx/conf.d/example.com
passenger_root /usr/share/ruby/vendor_ruby/phusion_passenger/locations.ini;
passenger_ruby /opt/redmine/.rvm/gems/default/wrappers/ruby;
passenger_instance_registry_dir /var/run/passenger-instreg;
# Redirect HTTP -> HTTPS
server {
listen 80;
server_name www.example.com example.com;
include snippets/letsencrypt.conf;
return 301 https://example.com$request_uri;
}
# Redirect WWW -> NON WWW
server {
listen 443 ssl http2;
server_name www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
include snippets/ssl.conf;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl http2;
server_name example.com;
root /opt/redmine/redmine-4.0.1/public;
# SSL parameters
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
include snippets/ssl.conf;
include snippets/letsencrypt.conf;
# log files
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
passenger_enabled on;
passenger_min_instances 1;
client_max_body_size 10m;
}
不要忘记将 example.com 替换为您的 Redmine 域,并设置 SSL 证书文件的正确路径。一切HTTP 请求将被重定向到 HTTPS
.
访问Redmine#
Open 你的浏览器,输入您的域名并假设安装成功,将出现类似于以下内容的屏幕:
Redmine 的默认登录凭据是:
首次登录时,会提示您修改密码,如下图:
更改密码后,您将被重定向到用户帐户页面。
结论#
您已经在 CentOS 系统上成功安装了 Redmine。您现在应该检查Redmine文档并了解有关如何配置和使用Redmine的更多信息。
如果您遇到问题或有反馈,请在下面发表评论。