專案

一般

設定檔

動作

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

系統需求

本指南不對系統的初始狀態做任何假設。本指南適用於 32 位元或 64 位元系統 - 儘管所有測試和原始安裝都是在 64 位元系統上執行的。

硬體需求不高,因此一個具有 10GB 儲存空間、1GB 記憶體和 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 安裝的完整功能。

啟用伺服器環境

安裝完所有依賴項後,我們需要確保服務器已設置完畢、可以使用,並且可以在操作系統安裝之外訪問。

第一步是在防火牆中為 Web 服務器打開標準端口 80。

$ 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.dev.org.tw/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 的 dependencies 了。

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

**注意 1:** 預設情況下,root 使用者的 $PATH 中沒有 /usr/local/bin,因此必須提供絕對路徑。

**注意 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 安裝的最後步驟,因為其他所有事情都已處理完畢。

第一步是產生用於 session 管理的密钥。

$ 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 bootstrap,請發出以下命令

$ 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 使用者身分執行,並且僅維護先前定義的資料夾的寫入權限。

網路伺服器設定

現在已經啟用了模組,我們可以选择在根目录下运行 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 後,網路伺服器無法開啟外部連線。即使在本地主機上開啟了端口 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 區段就足夠了。以下是一個使用 postfix 進行無需驗證的連線的範例:

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

重新啟動網路伺服器

完成所有設定變更和模組安裝後,需要重新啟動 apache2 伺服器。

$ sudo systemctl restart httpd

重新啟動後,您應該能夠瀏覽到 Redmine 的完整運作的預設安裝,網址為 http://www.website.com/http://www.website.com/redmine

啟用 SELinux

如果您想在此刻重新啟用 SELinux,您可以透過發出以下命令來實現:

$ sudo setenforce 1

假設您已按照可選的 SELinux 區段進行操作,則不論 SELinux 是啟用還是停用,Redmine 安裝都應以相同的方式運作。

Jamie McPeek 更新於 將近 10 年前 · 6 個版本