[Ubuntu] Redmine 免費專案管理工具安裝教學


Redmine 是一款免費的開源專案管理工具,是基於Ruby on Rails的架構來開發,功能除了多專案管理外,還包含臭蟲追蹤、甘特圖、工時計算、日曆、信件通知等,但說實話,它的安裝實在很不人性化,相信很多人在安裝過程一定會遇到很多的困難,所以接下來打算撰寫一系列的文章,希望內容可以涵蓋一些基本教學,例如:安裝、資料庫編碼、如何安裝Theme與Plugin等等,以便給沒使用過的新手一些參考,本文是首部曲,當然就是以安裝Redmine為主題囉,Let’s Go.

網址:Redmine官網

示範平台:Ubuntu 20.04.2 Server 英文版 64位元

前言

要安裝Redmine的方法或平台不只一種,你可以在Ubuntu、CentOS安裝,也可以在Windows中安裝,或者要用Docker的方式進行也可以,討厭的地方是不同平台的安裝方式差異其實是蠻大的,無法一個一個的說明安裝步驟,所以在此會挑一個我自己比較常用的Ubuntu平台做為範例在進行示範操作。
安裝的步驟是參考了網路上許多相關的安裝法,再針對要注意地方進行做補充,有興趣看原文的可以參考文末延伸閱讀的連結。

Redmine 安裝步驟

請依以下步驟逐一安裝即可

1. 前置作業

先確保系統的軟體清單及套件都是最新版本

sudo apt update
sudo apt upgrade

2. 安裝資料庫 MariaDB

Redmine需要一個資料庫來儲存資料,基本上一般都是搭配MySQL/MariaDB、Postgresql或SQLite,此範例以「MariaDB」作為示範

sudo apt install mariadb-server mariadb-client

安裝完成後,可以使用 mysql -V 來查看版本,順便可以驗証是否有安裝成功

檢查MariaDB的版本

2.1 執行安全性設定

這部分的設定在之前介紹MariaDB常用指令時有說明,這邊再說明一遍:首先,先執行以下指令進行安全性設定

sudo mysql_secure_installation

執行MySQL/MariaDB安全性設定

過程中會詢問幾個問題,說明如下:

  • Enter current password for root (enter for none):詢問root的密碼,預設值的空的,所以此處按「Enter」即可,如果出現「ERROR 1698 (28000): Access denied for user ‘root’@’localhost’」的錯誤,那應該是執行權限的問題,請記得在指令前加上sudo,接著會詢問「Set root password? [Y/n]」,請輸入「Y」進行密碼設定

    MySQL/MariaDB安全性設定錯誤

  • Remove anonymous users? [Y/n]:安全性考量,建議輸入「Y」來移除匿名使用者
  • Disallow root login remotely? [Y/n]:詢問是否要拒絕root的遠端連線,建議輸入「Y」來關閉
  • Remove test database and access to it? [Y/n]:是否移除測試用資料庫?建議選擇「Y」來移除
  • Reload privilege tables now? [Y/n]:是否重新載入表格權限?建議選擇「Y」重新載入

3. 建立 Redmine 的資料庫

更正:此步驟是適用於要自己設定Redmine資料庫的進階用戶,可以略過,直接執行步驟4即可。

sudo mysql -u root -p # 先登入資料庫

執行以下指令來建立一個名為redmine的資料庫以及redmine的使用者 (或你可以自已修改成自己要的名稱)

CREATE DATABASE redmine CHARACTER SET utf8mb4;
GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost' IDENTIFIED BY 'redmine密碼';
FLUSH PRIVILEGES;
EXIT;

在MySQL中建立Redmine的資料庫

安裝完成後,可以透過以下指令來查看資料庫以及使用者的資訊

show databases; # 查看建立的資料庫
select user, host from mysql.user; # 查詢使用者及登入的主機位置

4. 安裝Apache、Ruby、Passenger

Passenger會應用在Ruby、Apache上,直接執行以下指令進行安裝即可,相依的套件系統會自動幫我們安裝

sudo apt install apache2 libapache2-mod-passenger

安裝Apache2、Passenger套件

5. 安裝 Redmine

前面的工具準備好後,就可以正式安裝Redmine囉,指令如下:

sudo apt install redmine redmine-mysql

安裝過程會跳出「Package configuration」的提示畫面,該步驟預設會幫我們建立名稱為「redmine_default」的資料庫以及「redmine/instance」這個MySQL帳號,請選擇「Yes」進行這組帳號的密碼設定

Redmine Package Configuration 提問視窗

請輸入該帳號的登入密碼,用來保護Redmine的資料庫

Package Configuration 詢問MySQL密碼

確認密碼

Package Configuration 確認MySQL密碼

註:這組的帳密會寫到/usr/share/redmine/config/database.yml的設定檔中

6. 更新Gem、安裝Bundler

sudo gem update
sudo gem install bundler

gem安裝bundler

7. 設定 Apache Passenger

編輯passenger.conf

sudo vi /etc/apache2/mods-available/passenger.conf

然後在「passenger.conf」中加入「PassengerDefaultUser www-data」這一行,結果如下:

<ifmodule mod_passenger.c>
  PassengerDefaultUser www-data # 加入這一行
  PassengerRoot /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini
  PassengerDefaultRuby /usr/bin/ruby
</ifmodule>

接著建立Redmine軟連結

sudo ln -s /usr/share/redmine/public /var/www/html/redmine

8. 設定存取的 IP 或 Domain Name

基本上可分為要用IP來存取Redmine的網站,還是要用Domain Name的方式來存取,以下分別做說明:

8.1 以 IP 存取Redmine

這方法適用於要用IP來存取建置好的Redmine網站,比較簡單的例子就是在本地端存取,例如:192.168.0.45,欲以這種方式存取的話,可依下列步驟進行:

修改000-default.conf

sudo vi /etc/apache2/sites-available/000-default.conf

在該檔中加入以下資訊:

<Directory /var/www/html/redmine>
    RailsBaseURI /redmine
    PassengerResolveSymlinksInDocumentRoot on
</Directory>

下圖是加入後的結果,供大家參考:(我把原檔中的註解部分刪掉了,以方便閱讀)

Apache設定000-default.conf

建立Gemfile.lock並設定檔案的擁有者權限

sudo touch /usr/share/redmine/Gemfile.lock
sudo chown www-data:www-data /usr/share/redmine/Gemfile.lock

載入Passenger模組並重啟Apache server

sudo a2enmod passenger
sudo systemctl restart apache2

設置完成,測試Redmine是否可存取

可用http://your_ip/redmine的方式來存取Redmine (注意網址後面有加redmine),預設帳密是admin / admin,第一次登入後會要求變更密碼

使用IP存取Redmine網頁

8.2 以 Domain Name 存取Redmine

適合網站有Domain Name可以使用,這種案例可以建一個組態檔專門給Redmine使用

建立組態檔redmine.conf

sudo vi /etc/apache2/sites-available/redmine.conf

加入以下的內容到組態檔中,另外把ServerName的值換成你的Domain Name

<VirtualHost *:80>
  ServerAdmin [email protected]
  DocumentRoot /var/www/html/redmine
  ServerName demo.example.com # 你的domain name,例如:demo.example.com
  ServerAlias www.demo.example.com
  <directory /var/www/html/redmine>
    RailsBaseURI /redmine
    PassengerResolveSymlinksInDocumentRoot on
  </directory>
  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

因為目前我沒有Domain Name可測試,但是可以把ServerName改成IP來驗証,例如下方的實例中我將ServerName設成「192.168.0.45」,這樣後續也可以用IP來存取了

<VirtualHost *:80>
  ServerAdmin [email protected]
  DocumentRoot /var/www/html/redmine
  # 可以把值改成localhost的IP,即可用IP連線,例如本例的 192.168.0.45
  ServerName 192.168.0.45
  ServerAlias www.demo.example.com
  <directory /var/www/html/redmine>
    RailsBaseURI /redmine
    PassengerResolveSymlinksInDocumentRoot on
  </directory>
  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

建立Gemfile.lock並設定檔案的擁有者權限

sudo touch /usr/share/redmine/Gemfile.lock
sudo chown www-data:www-data /usr/share/redmine/Gemfile.lock

啟用Redmine的組態檔以及重啟Apache

sudo a2enmod rewrite
sudo a2ensite redmine.conf
sudo systemctl restart apache2.service

設置完成,測試Redmine是否可存取

可用http://your_domian_name的方式來存取Redmine,預設帳密是admin / admin,第一次登入後會要求變更密碼,因為上方的範例中,我是使用IP來取代Domain Name,所以本例會以http://192.168.0.45來存取

使用Domain Name存取Redmine網頁

9. Redmine Log 在哪?

如果執行失敗時,藉由Log可以協助我們排除問題,可以藉由查詢「production.log」檔來找到Log的所在路徑

sudo find / -name production.log
# 以本例來說,路徑會在 /var/log/redmine/default 

延伸閱讀:
Redmine 免費專案管理工具教學系列
How To Install Redmine On Ubuntu 20.04 LTS
How To Install Redmine on Ubuntu 20.04 Linux
Redmine 安裝篇:Redmine 4.0.x on Ubuntu 16.04
[教學] MariaDB/MySQL 常用指令操作與語法範例