我用 WordPress + 寶塔面板搭建合規平台的踩坑記錄

一、為什麼選寶塔 + WordPress

在澳門搭建一個面向金融合規從業者的內容平台,技術選型上有幾個現實約束:預算有限、沒有專職運維、需要快速上線、後期要能接入 AI 工具。綜合下來,寶塔面板 + WordPress 是最務實的組合。

寶塔面板解決了服務器管理的可視化問題,WordPress 解決了內容管理和會員系統的問題。兩者結合,一個人也能維護一個功能完整的專業網站。

二、第一個坑:PHP-FPM 內存失控

網站還沒正式上線,服務器內存就被吃光了。用 free -h 一看,3.8GB 的內存只剩下 415MB 可用,Swap 已經用了 483MB。

排查後發現,元兇是 PHP-FPM 進程。寶塔默認配置下,PHP-FPM 會按 pm.max_children 啟動一批 worker 進程,每個進程佔用 150–190MB。更關鍵的是,pm.max_requests 在默認配置裡是被註釋掉的,意味著進程處理完請求後不會自動回收,內存只會越積越多。

解決方法有兩步:一是把 pm.max_children 調到合理值(4GB 內存的機器設 5–8 為宜);二是啟用 pm.max_requests = 500,讓進程處理滿 500 個請求後自動回收。

但這裡有個隱藏的坑:改完配置後如果用 reload,舊進程不會被殺掉,只會讓新配置對新請求生效。如果這些舊進程一直閒置,max_requests 的回收機制永遠不會觸發,它們就一直佔著內存。正確做法是用 restart,徹底殺掉舊進程,按新配置重新啟動。

三、第二個坑:配置文件被覆蓋

有一次用 nano 編輯 www.conf,結果打開的是一個不存在的路徑,保存後創建了一個只有 6 行的空配置文件,把原本 22KB 的完整配置覆蓋了。幸好同目錄下有 www.conf.default 備份,直接複製還原即可。

這個教訓是:編輯任何配置文件前,先確認路徑是否存在,先備份,再動手。寶塔的配置文件通常都有 .default 備份,關鍵時刻能救命。

四、第三個坑:文章分類與頁面混淆

WordPress 裡,「頁面(Pages)」和「文章(Posts)」是兩套獨立的系統。頁面用父子層級組織,適合「關於我們」「聯繫方式」這類靜態內容;文章用分類目錄(Categories)組織,適合持續更新的內容流。

我一開始把「法規解讀」「案例研究」建成了頁面,結果文章發布後無法歸入這些欄目。正確做法是:持續更新的內容用分類目錄,固定不變的內容用頁面。 導航菜單裡可以把兩者混合排列,形成完整的網站結構。

五、幾點體會

搭建一個專業網站的技術門檻,比想像中低。真正的難點不在技術,而在於持續產出有價值的內容。工具只是載體,內容才是核心。

但工具層面的坑如果不解決,會消耗大量精力。把服務器配置、插件選擇、分類結構這些基礎問題一次理順,後面才能把時間花在真正重要的事情上——寫作、研究、與同行交流。

发表评论