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
安裝完成後,可以使用
2.1 執行安全性設定
這部分的設定在之前介紹MariaDB常用指令時有說明,這邊再說明一遍:首先,先執行以下指令進行安全性設定
sudo mysql_secure_installation
過程中會詢問幾個問題,說明如下:
- 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」進行密碼設定
- 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;
安裝完成後,可以透過以下指令來查看資料庫以及使用者的資訊
show databases; # 查看建立的資料庫
select user, host from mysql.user; # 查詢使用者及登入的主機位置
4. 安裝Apache、Ruby、Passenger
Passenger會應用在Ruby、Apache上,直接執行以下指令進行安裝即可,相依的套件系統會自動幫我們安裝
sudo apt install apache2 libapache2-mod-passenger
5. 安裝 Redmine
前面的工具準備好後,就可以正式安裝Redmine囉,指令如下:
sudo apt install redmine redmine-mysql
安裝過程會跳出「Package configuration」的提示畫面,該步驟預設會幫我們建立名稱為「redmine_default」的資料庫以及「redmine/instance」這個MySQL帳號,請選擇「Yes」進行這組帳號的密碼設定
請輸入該帳號的登入密碼,用來保護Redmine的資料庫
確認密碼
註:這組的帳密會寫到
6. 更新Gem、安裝Bundler
sudo gem update
sudo gem install bundler
7. 設定 Apache Passenger
編輯
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,欲以這種方式存取的話,可依下列步驟進行:
① 修改
sudo vi /etc/apache2/sites-available/000-default.conf
在該檔中加入以下資訊:
<Directory /var/www/html/redmine>
RailsBaseURI /redmine
PassengerResolveSymlinksInDocumentRoot on
</Directory>
下圖是加入後的結果,供大家參考:(我把原檔中的註解部分刪掉了,以方便閱讀)
② 建立
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是否可存取
可用
8.2 以 Domain Name 存取Redmine
適合網站有Domain Name可以使用,這種案例可以建一個組態檔專門給Redmine使用
① 建立組態檔
sudo vi /etc/apache2/sites-available/redmine.conf
加入以下的內容到組態檔中,另外把
<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>
② 建立
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是否可存取
可用
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 常用指令操作與語法範例