利用虛擬化機制包裹舊應用系統 – Postgres + Nginx + Php – Part-1

近期輔導台中某家 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 工具登入並檢視匯入的資料庫與資料,確認匯入成功以及沒有中文亂碼。

閱讀全文 »

使用 Docker 建置多個網域的 WordPress 站台開發 (運行) 環境

問題 (Problem)

我想使用 Docker 容器的虛擬化技術,可以在本機端建立多個 WordPress 站台的開發環境,然後只透過一個 Nginx Web Server,負責接收多個網域 (multiple domain) 的 Http Request (例如 "blog1.localhost", "blog2.localhot"), 並自動將該網域的需求指向對應的 WordPress 站台,如此可以便於託管運行多站台或是方便本機端的開發。

如何有效設定 Docker 的虛擬開發環境,且不會影響到 Host 本機系統的干擾,如此可以方便方便移轉與部署開發環境至其它主機或對外運轉的系統上?

解決方案 (Solution)

  • 建置一個使用 Nginix Reverse Proxy Server Docker 專案。可以採用已建置完整反向代理設定自動化的 jwilder/nginx-proxy 的映像檔。
  • 建置一個完整的 WordPress 開發環境的 Docker 專案,內含 MySQL、phpmyadmin、Wordpress 等 Docker Image。

主要實作步驟

主要實作的方法參考這篇:「Host Multiple Websites On One VPS With Docker And Nginx」。當然對於 Docker 多個容器的配置檔 (docker-compose.yml) 設定,肯定要查找官方文件指引與其它網路設定分享文的。過程期間常要不斷地 Try-Error 才得以配置好 Docker 多個容器的開發環境。

在 WSL2 的 Docker 專案目錄結構參考如下:

首先需要先創建一個 Docker 網絡,如此得以將下列所有這些容器 (container) 橋接 (bridge) 在一起。打開終端機 (terminal),輸入下列指令:

$ docker network create nginx-proxy

接著就是可以參考上述的專案目錄結構,來創建兩個專案 (Nginx and WordPress),並為各自的資料夾編輯配置設定。

閱讀全文 »

[安裝筆記] Windows 10 WSL 2 安裝 Docker Desktop (含更改 Docker Image 路徑)

在 Windows 10 要能充分整合 Docker 應用與開發,安裝 Docker Desktop 是最理想的。

關於 Docker Desktop 可以參考官方文件的介紹

Docker Desktop is an easy-to-install application for your Mac or Windows environment that enables you to build and share containerized applications and microservices.
Docker Desktop includes Docker Engine, Docker CLI client, Docker Compose, Docker Content Trust, Kubernetes, and Credential Helper.

安裝 Docker Desktop 之前,要先確認在 Windows 10 系統上已安裝建置好 WSL 2 的 Linux 子系統,可以參考前寫的:[安裝筆記] Windows 10 安裝 Linux 子系統 (WSL2)。

安裝 Docker Desktop 只要下載官方的安裝檔並執行安裝即可。這裡有篇很詳細的安裝文件,可以參考:How to Set Up Docker in WSL [Step-by-Step]

安裝完 Docker Desktop,系統會提示登出 (logout) 再重新登入,如此 Docker 已常駐於系統 (可觀察工作列的通知區有否鯨魚圖示),點擊該圖示即可出現 Docker Desktop 操作介面。
Docker Desktop UI

閱讀全文 »

軟體思維顧問

專職軟體輔導與教育訓練的獨立顧問。輔導企業資訊單位如何有效組織系統開發與維護;輔導開發人員達成有效的專業分工。傳授如何把軟體作軟 (Keeping Software Soft)的技能,得以提昇系統的彈性/延展,並進而創造系統的再利用價值。

Personal