Redmine upgrade¶
升級 Redmine 是一件讓管理員頭疼的事情,先不說升級後 Ruby on rails 環境與其依賴套件和作業系統兼容性的問題,光是既有 plugin 的相容性就是一大問題,結果可能會出現升級 Redmine 後導致既有的 plugin 崩壞、甚至是 Redmine 本身的崩壞,像是 AlphaNodes、RedmineUP 等商業公司出品的 plugin 由於要對其商業客戶負責,plugin 的維護與升級適配通常不會有問題,但其他由素人玩家所製作的 plugin 就難說了,常常因為這款 plugin 或那款 plugin 停止更新、無法適配到下一個版本的 Redmine,最後導致了作為主體的 Redmine 版本無法升級、無法享受到較新的功能、無法得到較新的安全修復。
Redmine 從 2006 年釋出至今已有 20個年頭了,平均每三年就會進行一次大改版,對於 Redmine 是否需要升級以下有兩種方向的建議:
- 原先的 Redmine 已經在組織團隊間運行得很好,專案執行上也沒有其他新功能需求,可以考慮停留在既有版本,畢竟我們使用工具是為了提升效率,而非經常性的被各種工具所拖累,專案管理軟體的首要目標是為了服務產品或業務,其次才是專案管理軟體本身的優化,作為管理員,您必須自己做出抉擇。
- 我想要新的功能、我想要新的插件、我想要更新的佈景主題、我想要最新的安全補丁,對於什麼都想要的人或團隊,只要擁有足夠且溢出的技術力,建議至少跟上每三年進行一次大改版的升級,這也是本文下面要分享的技術整理。
實驗環境¶
Target | Hostname | Redmine Version | Ruby Version | MySQL version | Operation system |
---|---|---|---|---|---|
原始機器 | old-host | 5.0.6 | 3.0 | 8.0.41 | Rocky Linux 8.8 |
目標機器 | host | 6.0.7 | 3.3 | 8.0.43 | Rocky Linux 9.6 |
升級辦法二選一¶
- old-host 本機原地升級,此部分牽涉到作業系統套件與 Ruby 相關依賴套件的升級,難度較高,適合對系統部署熟悉的管理員操作。
- host 目標機器直接安裝新版 redmine,然後再將 old-host 舊版 redmine 所需相關檔案目錄與資料庫備份遷移至新機上,沒有了依賴套件升級的除錯與排難解疑,難度相對較低。
升級前準備¶
- 閱讀官方出品的 升級指南與 安裝指南,尤其須詳閱官方安裝指南,我們可以從中查閱既有版本與預計升級版本間的環境需求差異,比如說作業系統套件、Ruby on rails、Gem 與資料庫版本的差異、又比如說檔案目錄結構的異動…等,這關係著作業系統套件的變更與資料轉移的更新位置
- 資料庫與系統檔案目錄的備份,這幾乎是絕大多數應用軟體升級的標準動作,什麼需要備份則須參考第一點所說的升級指南與安裝指南
- 插件 plugin 是否有適配預計升級的 Redmine 版本(本例為 Redmine 6),如果沒有,建議預先移除,以利後續升級
- 訂定升級預演環節與正式停機升級時段
升級流程概要¶
- 依據您的環境取得對應新版本的 Redmine
- 解壓縮 下載版本(此步驟將建立
新的 redmine 目錄
) - 匯出與匯入 database(本機原地升級者可跳過此步驟)
複製所需檔案目錄至
新的 redmine 目錄
中,並建立 redmine 6 所需之 額外目錄- config/configraution.yml
- config/database.yml
- files/
- themes/
依據 redmine 版本需求在新的主機上(host)安裝所需相關套件或更新本機(old-host)的 ruby 版本
切換至
新的 redmine 目錄
,視需求更新 Gemfile 並建立專案 token[root@host redmine]# gem install bundler [root@host redmine]# gem update --system [root@host redmine]# bundle config set --local without 'development test' [root@host redmine]# bundle install [root@host redmine]# bundle exec rake generate_secret_token
資料庫的邏輯遷移
[root@host redmine]# bundle exec rake db:migrate RAILS_ENV=production
紀錄原本安裝的舊版插件 plugin 名稱,並將適配新版本 redmine 的新版插件 plugin 壓縮檔 unzip 至新的 redmine plugins 目錄
[root@host redmine]# bundle install [root@host redmine]# bundle exec rake redmine:plugins:migrate RAILS_ENV=production
清除快取 cache 與會話 session(本機原地升級者才需要執行此步驟)
[root@host redmine]# bundle exec rake tmp:cache:clear [root@host redmine]# bundle exec rake tmp:sessions:clear
重新啟動您的 web 服務器(Redmine 5.0 以後通常是 puma)
參考資料¶
回到頁首