使用VPS營運WordPress時,會遇到Docker、nginx、PHP與MySQL等名稱。有時它們都被稱為「伺服器」,但角色不同。
旅宿主人不需要記住指令。然而,若知道各組件的工作,故障時較容易說明「整個網站停止」「只能看到圖片」或「出現資料庫連線錯誤」。
先看整體流程。
住客瀏覽器 → nginx → 以PHP執行WordPress → 從MySQL取得文章與設定 → 將HTML回傳瀏覽器
使用Docker的配置,會分開執行各組件,再統一管理。
以旅館比喻
| 技術 | 旅館比喻 | 主要角色 |
|---|---|---|
| Docker | 分開各負責人的作業區與營運台帳 | 在隔離環境,以可重現方式執行軟體 |
| nginx | 入口與櫃檯 | 受理URL、分派、圖片傳送與HTTPS |
| PHP | 組合介紹資訊的人員 | 執行WordPress程式,製作頁面 |
| WordPress | 旅宿介紹作業 | 使用文章、佈景主題與外掛決定內容 |
| MySQL | 住宿台帳與資料庫 | 保存與搜尋文章、設定、使用者等 |
比喻只是理解的入口。實際配置也可能使用Apache、MariaDB、CDN或快取等其他組件。
頁面顯示前的流程
住客開啟客房頁面時,一般流程如下。
- 瀏覽器存取網域URL
- DNS指出連線目標伺服器
- nginx受理HTTPS連線
- 直接回傳圖片等,或將WordPress處理交給PHP
- PHP執行WordPress
- WordPress向MySQL查詢文章與設定
- PHP組合HTML
- nginx將結果回傳瀏覽器
- 瀏覽器顯示頁面
一個畫面背後有多個組件運作,因此即使「WordPress已是最新版本」,OS、PHP或資料庫有問題,仍可能無法顯示。
Docker的角色
Docker官方資料將容器描述為在主機上隔離執行的處理程序。有些配置會將WordPress、nginx、PHP與資料庫分為不同容器。
Docker能帶來什麼
- 將軟體與必要檔案視為一個整體處理
- 較容易減少開發、測試與正式環境的配置差異
- 較容易逐一啟動、停止與更新組件
- 較容易將配置記錄於檔案並重現
Docker不會自動代辦的事項
- OS與Docker本身更新
- 選擇與更新安全映像檔
- 保護密碼與秘密資訊
- 資料庫備份
- 磁碟容量與紀錄管理
- 故障監控
- WordPress更新後的預訂確認
即使容器可刪除後重新建立,若弄錯資料保存位置,仍可能遺失文章或圖片。有Docker不代表不需要備份。
nginx的角色
nginx官方初學者資料說明靜態檔案傳送、代理,以及透過FastCGI將請求分派給PHP等。
WordPress配置中的主要工作如下。
- 接收HTTP與HTTPS存取
- 依網域選擇目標網站
- 回傳圖片、CSS與JavaScript等
- 將需PHP處理的存取交給PHP-FPM
- 設定大小與時間等限制
- 使用TLS憑證加密通訊
- 記錄存取與錯誤紀錄
nginx出問題時的例子
- 無法連接整個網站
- 502、504等錯誤
- 出現HTTPS警告或顯示其他網站
- 無法上傳大型圖片
- 只有特定URL出現404
- 重新導向不斷循環
修改設定前,先檢查語法並備份;反映後確認所有網域。
PHP的角色
PHP官方手冊說明,PHP是在伺服器端執行、將生成的HTML傳給瀏覽器的語言。WordPress核心與許多佈景主題、外掛都以PHP執行。
PHP工作例子如下。
- 依URL進行WordPress處理
- 從MySQL取得文章與設定
- 使用佈景主題生成HTML
- 處理表單輸入
- 執行外掛功能
- 呼叫電子郵件寄送處理
PHP出問題時的例子
- 顯示「嚴重錯誤」
- 出現白畫面
- 出現502錯誤
- 只有管理畫面無法運作
- 只有特定外掛功能失敗
- 記憶體不足或處理逾時
更新PHP後,舊佈景主題與外掛可能不支援。不要同時疊加WordPress更新與PHP修改,先在測試環境確認。
WordPress的角色
WordPress是以PHP執行的Web應用程式。
- 管理文章與固定頁面
- 以佈景主題決定外觀
- 透過外掛新增SEO、表單、預訂等
- 管理管理員與編輯者權限
- 將內容保存到MySQL
即使只考慮WordPress備份,也需同時有檔案與資料庫。詳細內容請閱讀WordPress更新前的備份與還原。
MySQL的角色
MySQL官方資料將MySQL描述為支援多位使用者的SQL資料庫伺服器。
WordPress主要保存以下內容。
- 文章、固定頁面、草稿與修訂紀錄
- 使用者與權限
- 網站URL與各種設定
- 留言
- 選單與小工具
- 外掛建立的資料表與設定
圖片本身通常以檔案保存,圖片標題與URL等也會保存到資料庫。因此,檔案與資料庫的時間點不一致,就可能發生資料不一致。
MySQL出問題時的例子
- 「建立資料庫連線時發生錯誤」
- 無法保存文章與設定
- 頁面顯示極慢
- 磁碟不足,無法寫入
- 只有資料庫反覆重新啟動
不要將MySQL直接公開到網際網路,應配置為只有WordPress等必要連線來源可使用。
容器與資料保存位置
Docker配置的重要事項之一,是區分容器與持久資料。
- 容器:可重新建立的執行環境
- 映像檔:建立容器的設計來源
- 儲存卷與掛載:需保留的文章圖片、DB等資料
- Compose等配置檔:各組件如何連接
若設計為資料只放在容器內,重新建立時可能遺失。請讓管理員能說明目前WordPress圖片、MySQL資料、設定與憑證保存在哪裡。
更新需區分層級
一次更新全部,便無法找出原因。
- 記錄目前配置與版本
- 備份檔案、DB與配置檔
- 在測試環境更新一個層級
- 確認紀錄與啟動狀態
- 確認WordPress顯示與管理畫面
- 確認預訂、表單與電子郵件
- 在正式環境只更新一個層級
- 進行同樣確認
不要在同一天集中進行OS、Docker、nginx、PHP、MySQL與WordPress的重大更新。
故障時的查看順序
旅宿主人應記錄症狀,而非指令。
| 症狀 | 可檢查的候選層級 |
|---|---|
| 無法連接整個網域 | DNS、VPS、網路、nginx |
| 只能看到圖片,沒有正文 | PHP、WordPress、MySQL |
| 502錯誤 | nginx至PHP等的連線 |
| DB連線錯誤 | MySQL、登入憑證、容量、網路 |
| 只有管理畫面出現嚴重錯誤 | PHP、佈景主題、外掛 |
| 只有詢問無法送達 | WordPress、PHP、郵件路徑 |
| 只有預訂連結無法開啟 | WordPress內容、外部預訂服務 |
請記錄URL、發生時間、畫面、剛才的變更,以及是否所有人都遇到。截圖不要包含秘密資訊或顧客資料。
最基本的監控
- VPS已啟動
- 可透過HTTPS連接nginx
- PHP有回應
- 可建立必要的MySQL連線
- 磁碟容量有餘裕
- TLS憑證在有效期內
- 備份成功
- 首頁與預訂導線正常
- 詢問郵件送達
即使容器顯示「執行中」,應用程式也未必正常。也請從外部確認實際頁面。
向管理員提出的問題
- 是否使用Docker,配置檔在哪裡
- nginx、PHP與MySQL目前版本為何,由誰負責更新
- WordPress圖片與DB在哪裡持久保存
- 秘密資訊在哪裡安全管理
- 由誰確認紀錄與磁碟容量
- 備份是否包含配置檔、圖片與DB
- 其中一個容器停止時,是否會通知
- 合約結束時,如何交付配置與資料
答案不需包含秘密值,只記錄所在位置、方式與負責人。
請AI解釋配置的提示詞
請向IT初學者解釋旅宿的WordPress伺服器配置。
先不要連線、更新、重新啟動或修改設定。
請根據可唯讀取得的配置資料,整理以下事項。
- 住客的存取如何成為顯示頁面
- Docker、nginx、PHP、WordPress與MySQL的角色
- 各組件持久資料與設定保存位置的類型
- 各組件停止時可見的症狀
- 更新、監控與備份負責人
- 不明事項與向管理公司提出的問題
不要顯示密碼、私密金鑰、環境變數的值或顧客資訊。
不要將推測寫成事實,請標記「尚未確認」。
總結
- nginx是Web入口,負責分派
- PHP執行WordPress,製作HTML
- MySQL保存文章、設定等
- Docker讓組件較易隔離與重現,但不代辦維護
- 在同一時間點備份WordPress圖片與DB
- 不只監控容器啟動,也監控公開頁面與預訂導線
- 逐層更新,由人員確認營業功能
各項管理由誰負責,可閱讀VPS營運WordPress的責任範圍。
參考資料
※實際配置也可能使用Apache、MariaDB、CDN、快取或代管DB等。請確認管理員的配置資料。

