如何在Ubuntu 18.04上安装和配置Redmine

Redmine是最受欢迎的开源项目管理和问题跟踪软件工具之一。它是跨平台和跨数据库的,建立在Ruby on Rails框架之上。本教程介绍了如何在Ubuntu 18.04服务器上安装和配置最新版本的Redmine,该服务器使用MySQL作为数据库后端,而Passenger + Nginx作为Ruby应用服务器。

6 min read
By myfreax
如何在Ubuntu 18.04上安装和配置Redmine

Redmine是最受欢迎的开源项目管理和问题跟踪软件工具之一。它是跨平台和跨数据库的,建立在Ruby on Rails框架之上。

Redmine 包括对多个项目,Wiki,问题跟踪系统,论坛,日历,电子邮件通知等的支持。

本教程介绍了如何在Ubuntu 18.04服务器上安装和配置最新版本的Redmine,该服务器使用MySQL作为数据库后端,而Passenger + Nginx作为Ruby应用服务器。

先决条件

在继续本教程之前,请确保满足以下先决条件:

安装免费的Let's Encrypt SSL证书。

创建MySQL数据库

Redmine支持MySQL / MariaDB,Microsoft SQL Server,SQLite 3和 PostgreSQL 。在本教程中,我们将使用MySQL作为数据库后端。

如果您尚未在Ubuntu服务器上安装MySQL,则可以按照这些说明进行安装。

通过键入以下命令登录到MySQL Shell:

sudo mysql

在MySQL Shell中,运行以下SQL语句以创建新数据库

CREATE DATABASE redmine CHARACTER SET utf8mb4;

接下来,创建一个 MySQL用户帐户并授予对数据库的访问权限

GRANT ALL ON redmine.* TO 'redmine'@'localhost' IDENTIFIED BY 'change-with-strong-password';

请确保使用强密码更改change-with-strong-password

完成后,通过键入以下内容退出mysql控制台:

EXIT;

安装Ruby

在您的Ubuntu系统上安装Ruby的最简单方法是通过 apt 软件包管理器。在撰写本文时,Ubuntu存储库中的版本是2.5.1,这是Ruby的最新稳定版本。

通过键入以下命令安装Ruby:

sudo apt install ruby-full

如果您想通过Rbenv或RVM安装Ruby,请检查本指南

安装Passenger和Nginx

Passenger 是一种适用于Ruby,Node.js和Python的快速,轻量级的Web应用程序服务器,可以与Apache和Nginx集成。我们将乘客安装为Nginx模块。

在继续执行以下步骤之前,请确保您已满足前提条件并安装了Nginx。

首先安装必要的软件包:

sudo apt install dirmngr gnupg apt-transport-https ca-certificates

导入存储库GPG密钥并启用 Phusionpassenger 存储库:

sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 561F9B9CAC40B2F7
sudo add-apt-repository 'deb https://oss-binaries.phusionpassenger.com/apt/passenger bionic main'

启用 apt储存库后,更新软件包列表并使用以下命令安装Passenger Nginx模块:

sudo apt update
sudo apt install libnginx-mod-http-passenger

在Ubuntu上安装Redmine

我们将首先安装构建Redmine所需的依赖项:

sudo apt install build-essential libmysqlclient-dev imagemagick libmagickwand-dev

在撰写本文时,Redmine的最新稳定版本为4.0.0。

在继续下一步之前,您应检查 Redmine下载页面,以查看是否有较新的版本。

1.正在下载Redmine

使用以下 curl命令下载Redmine存档:

sudo curl -L http://www.redmine.org/releases/redmine-4.0.0.tar.gz -o /tmp/redmine.tar.gz

下载完成后,解压缩存档,然后将其移动/opt目录:

cd /tmp
sudo tar zxf /tmp/redmine.tar.gz
sudo mv /tmp/redmine-4.0.0 /opt/redmine

2.配置Redmine数据库

复制 Redmine示例配置文件开始:

sudo cp /opt/redmine/config/database.yml.example /opt/redmine/config/database.yml

使用您的文本编辑器打开文件:

sudo nano /opt/redmine/config/database.yml

搜索production​​部分,然后输入我们之前创建的MySQL数据库和用户信息:

/opt/redmine/config/database.yml

production:
  adapter: mysql2
  database: redmine
  host: localhost
  username: redmine
  password: "change-with-strong-password"
  encoding: utf8

完成后,保存文件并退出编辑器。

3.安装Ruby依赖项

导航到redmine目录并安装捆绑程序和其他Ruby依赖项:

cd /opt/redmine/
sudo gem install bundler --no-rdoc --no-ri 
sudo bundle install --without development test postgresql sqlite

4.生成密钥并迁移数据库

运行以下命令以生成密钥并迁移数据库:

cd /opt/redmine/
sudo bundle exec rake generate_secret_token
sudo RAILS_ENV=production bundle exec rake db:migrate

5.设置正确的权限

Nginx以www-data用户和组身份运行。通过发出以下 own命令

设置正确的权限。

sudo chown -R www-data: /opt/redmine/

配置Nginx

到现在,如果不检查本教程的先决条件,则应该已经在系统上安装了带有SSL证书的Nginx。

打开您的文本编辑器,然后创建以下 Nginx服务器块文件:

sudo nano /etc/nginx/sites-available/example.com

/etc/nginx/sites-available/example.com

# 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/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;
}

别忘了用您的Redmine域替换example.com,并设置SSL证书文件的正确路径。所有 HTTP请求都将重定向到HTTPS 本指南中创建了此配置中使用的代码段。

通过创建指向sites-enabled目录的符号链接来启用服务器块:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

在重新启动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

访问Redmine

打开您的浏览器,键入您的域,并假设安装成功,则会出现类似于以下的屏幕:

Redmine的默认登录凭据为:

  • 用户名:admin
  • 密码:admin

首次登录时,将提示您更改密码

更改密码后,您将被重定向到用户帐户页面。

结论

您已成功在Ubuntu系统上安装Redmine。您现在应该查看 Redmine文档,并了解有关如何配置和使用Redmine的更多信息。

如果您遇到问题或有反馈,请在下面发表评论。