项目

常规

配置文件

操作

如何在Fedora 20上安装Redmine 2.5.x

系统要求

本指南不假设系统的初始状态。该指南适用于32位或64位系统 - 尽管所有测试和原始安装都是在64位系统上进行的。

硬件要求不高,因此一个具有10GB存储、1GB RAM和1GB交换文件的微型虚拟机应该足够。

本指南可用于现有系统之上,或从头开始,从Fedora网站下载。

可以从这里下载安装ISO。

本指南的其余部分假定您已创建具有wheel/administrator访问权限的用户账户,并且直接或通过SSH登录到终端。

更新系统

在开始之前,您应确保所有已安装的包都是最新的。这可以通过以下命令完成

$ sudo yum update

如果内核作为此命令的一部分进行了更新,您应重新启动以开始使用它

$ sudo shutdown -r now

安装依赖项

在开始安装Redmine之前,需要安装一些依赖项。

根据您的需求,其中一些可能不是必需的。根据您的偏好,您可以选择替代某些依赖项。

apr-devel         - For Passenger
apr-util-devel    - For Passenger
curl-devel        - For Passenger
gcc               - For JSON
gcc-c++           - For Passenger
git               - (Optional) For SCM Integration
httpd             - Web Server
httpd-devel       - For Passenger
ImageMagick-devel - For RMagick
mariadb-devel     - For Redmine
mariadb-server    - For Redmine
nano              - Configuration Editor
postfix           - Email (MTA)
ruby-devel        - For Redmine
tar               - For Decompression
wget              - For Download

所有这些都可以通过单个命令在开始之前安装

$ sudo yum install apr-devel apr-util-devel curl-devel gcc gcc-c++ git httpd httpd-devel ImageMagick-devel mariadb-devel mariadb-server nano postfix ruby-devel tar wget

禁用SELinux

一些用户在SELinux激活时安装Redmine时遇到问题。可以通过以下命令禁用

# sudo setenforce 0

本指南的其余部分将采取步骤确保,如果需要,可以在之后重新启用SELinux,并且Redmine安装仍然完全有效。

启用服务器环境

在安装所有依赖项后,我们需要确保服务器已设置好、可用,并且可以从操作系统安装外部访问。

第一步是在防火墙中打开标准端口80以供Web服务器使用

$ sudo firewall-cmd --zone=public --add-service=http
$ sudo firewall-cmd --permanent --zone=public --add-service=http

第一行在当前配置中打开端口。第二行确保重启后该端口仍然保持开放和可用。

第二步是启动Web服务器和数据库服务器

$ sudo systemctl start httpd mariadb postfix
$ sudo systemctl enable httpd mariadb postfix

类似于防火墙命令,第一行在当前配置中启动服务器。第二行确保重启后两个服务器都会重新上线。

配置MariaDB

现在您已经有一个正在运行的数据库服务器,需要对其进行配置以供使用。初始设置可以使用以下命令完成

$ mysql_secure_installation

这将提示您为root账户创建密码以及一些其他选择。对于标准设置,每个问题的默认选项都是可接受的。

高级用法或安装可能需要不同的答案;然而,这超出了本指南的范围。

创建Redmine数据库和账户

现在您已经配置了MariaDB,是时候为您的Redmine安装创建数据库和用户了。

首先,连接到服务器

$ mysql -u root -p

您将被提示输入root密码。一旦提供,您将能够执行以下命令

CREATE DATABASE redmine CHARACTER SET utf8;
CREATE USER 'redmine'@'localhost' IDENTIFIED BY '<user_password>';
GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';

上述命令将创建数据库,创建一个具有定义密码的用户,并确保创建的用户对新创建的数据库具有完全访问权限。

输入上述命令后,执行以下命令返回到命令行

quit

获取Redmine

现在所有依赖项都已安装,服务器也正在运行,是时候获取Redmine的稳定版本并开始安装了。

在本例中,我们将使用wget从Redmine服务器下载文件,并使用tar提取其内容

$ wget https://redmine.ruby-lang.org.cn/releases/redmine-2.5.2.tar.gz
$ tar xfzv redmine-2.5.2.tar.gz

Redmine数据库配置

为确保正常功能,Redmine安装需要与刚刚创建的数据库进行通信。这可以通过执行以下操作完成

$ cd redmine-2.5.2/config
$ cp database.yml.example database.yml
$ nano -w database.yml

打开文件后,需要将production定义更新以匹配上述数据库和账户。它应该如下所示

production:
  adapter: mysql2
  database: redmine
  host: localhost
  username: redmine
  password: "<user_password>" 
  encoding: utf8

这替换了示例配置文件中的用户root和空白密码。

Redmine安装目录

在大多数前期工作完成后,是时候将安装移动到一个比用户主目录更易访问的文件夹了。

出于本指南的目的,Redmine将被移动到/var/www/redmine;然而,根据个人需求,这可以移动到许多其他位置。

可以使用以下命令完成此操作

$ cd /var/www
$ sudo cp -R ~/redmine-2.5.2 redmine
$ cd redmine

为确保正常功能和访问权限,需要创建public/plugin_assets文件夹

$ sudo mkdir public/plugin_assets

为了允许对文件夹的读写访问,用户apache需要有权访问

$ sudo chown apache:apache -R files log public/plugin_assets tmp

可选的SELinux配置

如果您计划在安装后重新启用SELinux,应采取以下步骤以确保平稳执行。

$ sudo chcon -R --reference=/var/www/html /var/www/redmine

此命令将适用于Web服务器的SELinux目录权限应用于redmine顶级文件夹下的所有子目录。

$ sudo chcon -t httpd_sys_content_rw_t -R files log public/plugin_assets tmp

此命令启用在SELinux活动时具有读写访问权限的特定文件夹。在带有SELinux的正常配置下,所有Web目录都是只读的。

Ruby Gem安装

Redmine 的 Ruby 依赖项由 bundler 管理,因此必须首先安装 bundler 以确定还需要下载和安装什么。

$ sudo gem install bundler

安装 bundler 后,可以整理 Redmine 的 Ruby 依赖项。

$ sudo /usr/local/bin/bundle install --without development test

注意 1:默认情况下,/usr/local/bin 不会出现在 $PATH 中,对于 root 用户,因此必须提供绝对路径。

注意 2:Bundle 会抱怨使用 sudo 安装 gems,这使得它们只能由 root 使用。这不是真的 - 以 root 的身份安装这些 gems,它们对所有用户都是可用的。

原生扩展修复

当以 root 身份运行 bundler 时,mysql2rmagick 原生扩展会被安装,但安装到一个不在 ruby 的路径上的文件夹。为了纠正这一点,应该采取以下步骤

$ sudo mkdir -p /usr/local/lib64/ruby/site_ruby/mysql2

这创建了一个路径,ruby 期望在它找到 mysql2.so 文件。

$ cd /usr/local/share/gems/gems/mysql2-0.3.16/ext/mysql2
$ sudo ruby extconf.rb
$ sudo make
$ sudo make install

上述步骤完成安装到预期目录,使用默认编译选项。特殊选项超出了本指南的范围。

现在应该为 rmagick 原生扩展执行相同的操作

$ cd /usr/local/share/gems/gems/rmagick-2.13.3/ext/RMagick
$ sudo ruby extconf.rb
$ sudo make
$ sudo make install

再次,上述步骤完成安装到预期目录,使用默认编译选项。

最后,返回到安装目录以完成剩余步骤

$ cd /var/www/redmine

Redmine 数据库初始化

现在我们已经处理完所有其他事情,接下来是完成 Redmine 安装的最后一步。

第一步是生成用于会话管理的密钥。

$ sudo /usr/local/bin/rake generate_secret_token

接下来,需要设置数据库。

$ sudo RAILS_ENV=production /usr/local/bin/rake db:migrate

最后,需要将默认数据填充到数据库中。

$ sudo RAILS_ENV=production /usr/local/bin/rake redmine:load_default_data

这会提示您选择语言,默认为 [en]。

WEBRick 测试执行

完成此步骤后,您将拥有一个功能齐全的 Redmine 安装,并可以通过 WEBRick 运行它进行测试。

$ sudo ruby script/rails server webrick -e production

Passenger 安装

为了更实用的生产设置,可以通过 Passenger 通过 apache2 来托管 Redmine。要获取 Passenger 引导程序,执行以下命令

$ sudo gem install passenger

完成后,原生扩展仍然需要编译。可以通过以下命令完成

$ sudo /usr/local/bin/passenger-install-apache2-module

这个工具可以帮助诊断任何问题,并为您的特定安装提供一些默认设置。

注意 1:Passenger 的编译至少需要 1GB 的 RAM 或 RAM+Swap 空间。否则编译将失败。

Passenger 配置

现在已经安装了扩展,apache2 需要知道如何使用它。

第一步是为 Passenger 创建一个配置文件。

$ sudo nano -w /etc/httpd/conf.modules.d/passenger.conf

此文件应包含运行 passenger-install-apache2-module 所呈现的信息。例如

LoadModule passenger_module /usr/local/share/gems/gems/passenger-4.0.48/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
   PassengerDefaultUser apache
   PassengerRoot /usr/local/share/gems/gems/passenger-4.0.48
   PassengerDefaultRuby /usr/bin/ruby
</IfModule>

注意 1:除了安装程序提供的默认信息外,还应添加 PassengerDefaultUser apache。这将确保 Passenger 以用户 apache 的身份运行,并且只能写入之前定义的文件夹。

Web 服务器配置

现在模块已启用,我们可以选择在根目录或作为网站子目录运行 Redmine 的安装。

顶级执行

要直接在基础网站上运行,修改 apache2 配置文件

$ sudo nano -w /etc/httpd/conf/httpd.conf

并将以下块添加到文件底部

<VirtualHost *:80>
   ServerName www.website.com

   DocumentRoot /var/www/redmine/public

   <Directory /var/www/redmine/public>
      # This relaxes Apache security settings.
      AllowOverride all
      # MultiViews must be turned off.
      Options -MultiViews
      # Uncomment this if you're on Apache >= 2.4:
      Require all granted
   </Directory>
</VirtualHost>

子目录执行

要从网站的根目录的子目录运行,修改 apache2 配置文件

$ sudo nano -w /etc/httpd/conf/httpd.conf

并将以下块添加到文件底部

<VirtualHost *:80>
   ServerName www.website.com

   DocumentRoot /var/www/html

   Alias /redmine /var/www/redmine/public

   <Location /redmine>
      PassengerBaseURI /redmine
      PassengerAppRoot /var/www/redmine
   </Location>

   <Directory /var/www/redmine/public>
      # This relaxes Apache security settings.
      AllowOverride all
      # MultiViews must be turned off.
      Options -MultiViews
      # Uncomment this if you're on Apache >= 2.4:
      Require all granted
   </Directory>
</VirtualHost>

邮件配置

本节介绍了从 Redmine 发送电子邮件通知所需的步骤。本指南的范围不涉及处理用于问题创建和其他目的的电子邮件输入。

postfix 的默认配置文件非常详尽;然而,你可能需要按以下方式更改 myhostname 选项

myhostname = mail.website.com

默认情况下将尝试从服务器获取全称域名(FQDN),这可能不是你想要的。

可选的 SELinux 配置

默认情况下,启用 SELinux 后,Web 服务器无法打开外部连接。即使在本地主机上打开了端口 25,发送电子邮件通知也需要这样做。可以使用以下命令完成

$ sudo setsebool httpd_can_network_connect 1

Redmine 电子邮件配置

要使用 postfix,Redmine 需要知道如何与之进行适当的通信。

可以通过进行一些额外的配置更改来实现

$ cd /var/www/redmine/config
$ sudo cp configuration.yml.example configuration.yml
$ sudo nano -w configuration.yml

假设你只运行生产环境,只需编辑 default 部分。

default:
  # Outgoing emails configuration (see examples above)
  email_delivery:
    delivery_method: :async_smtp

重启 Web 服务器

在进行了所有配置更改和模块安装后,需要重启 apache2 服务器

$ sudo systemctl restart httpd

一旦重启完成,你应该能够浏览到位于 http://www.website.com/http://www.website.com/redmine 的完全工作的 Redmine 安装。

启用 SELinux

如果你此时想重新启用 SELinux,可以通过以下命令实现

$ sudo setenforce 1

假设你已经遵循了可选的 SELinux 部分,启用或禁用 SELinux 后,Redmine 安装的功能应该相同。

Jamie McPeek 更新 近10年前 · 6 次修订