近期輔導台中某家 ERP 系統開發的單位,她們公司有個客戶服務系統,是使用大約10年前的開源 Bug Tracker 建置的,其基礎應用服務是使用 Postgres 8.4、Php 5.5.3 挺舊的版本與 早期版本的 Apache 在 Windows 環境所架設的。因為她們有計畫要採購更新的伺服器或 NAS,並希望舊有的客服系統能順利移轉,但又不希望整個伺服器系統環境被舊有的系統牽絆住,所以公司高層主管請教我怎樣的作法會比較妥當。
嗯,這雖不是我輔導的範疇,不過基本的系統移轉 (migration) 觀念還是有的,所以就順口回答道:「包起來!」呵,她們當然並不懂我這樣的意思是什麼,所以當然還是會稍作一些解釋,其實就是完整的把原來舊系統的環境,給整個移轉到新伺服器上,並建置在虛擬化的環境,如利用虛擬機 (Virtual Machine) 甚或 Docker 容器化更可以大幅降低系統耗費資源。這種就是屬於「包裹 (wrapper)」的觀念,不要動到原來舊系統的環境,這絕對是最保險的移轉方式。
結果解釋一番,對方還是不太懂 !^^,乾脆就花一些時間,我把她們舊系統的環境,同時利用 Hyper-V 虛擬機,以及透過 WSL 跑 Docker,提供兩種移轉方式讓她們參考。
利用 Hyper-V 虛擬機建置一個 Windows-based 的 OS (這裡我使用 Windows 10 LTSC),然後再安裝原來的應用伺服環境。配合當時的系統需求 (主要是 PHP 版本的考量),所以我找到 XAMPP win32-5.5.33-0-VC11 版本,以及 Postgres 8.4.5.1 版本 (有些意外,官網竟然已經下載不到老舊的版本) 一一安裝。
再來就是作一番設定,主要是 XAMPP 並沒有直接支援 Postgres 資料庫,所以當然爬文看先輩們的設定心得。參考這篇:「How to Integrate postgreSQL Database to XAMPP in Windows」,以及需要在 Apache 內啟用 PHP 的「Short Open Tag」:「How to Enable PHP Short Open Tag (short_open_tag)?」這類的 How-to 設定,然後再把所匯出來的 Postgres Schema + Data (乖乖,竟然有近 5Gb 容量) 再匯入進去,大概花了三、四個鐘頭時間,並不困難。
先利用 Postgres 自帶的 pgadmin 3 UI 工具登入並檢視匯入的資料庫與資料,確認匯入成功以及沒有中文亂碼。
閱讀全文 »