問題描述

所以我需要能夠對 WordPress 網站進行 dev / stage / production 迭代 (通過單獨的服務器),我通常使用 git,但這顯然不會與 WordPress 網站一起使用,因為依賴數據庫為主配置… 好,幾乎一切。

所以我的問題是你們怎麼做?我有一個快速的 Google,看到有幾個插件,這是唯一的方法嗎?哪些人在易用性,速度,可靠性等方面做得最好?

最佳解決方案

我有一個設置我很自豪,它對我的​​團隊非常好。

一般結構

我保持整個安裝在 git 下。所有更改,無論是系統更新,添加/更新插件,添加/更新主題,都可以通過相同的工作流程。變更可以暫時回滾。我有一個運行 gitosis 的部署服務器 (一個老 P4 桌面),但您可以輕鬆使用 github 或 gitolite 。在 git 中,我有兩個”special” 分支,masterdevelop(以下解釋) 。我的生產和分期服務器是 cloud-based 。

發展環境

每個開發人員都在自己的機器上運行自己的開發服務器。在數據庫方面,需要即時數據幾乎不是一個問題。我們主要使用 theme unit test data 。否則出口和進口涵蓋大部分事情。如果數據塊是至關重要的,您可以設置複製或設置 on-demand 同步的內容。當我最初設置這個結構時,我認為這是至關重要的,所以我開始寫一個 set of tools 來做到這一點,但令我吃驚的是,他們真的沒有必要。 (注意:由於它們沒有必要,我沒有拋光過,所以有 bug,例如它會替代序列化數據中的域) 。

分期環境

當提交從 develop 分支推送到 Gitosis 時,它們會自動部署到我們的分段服務器。分期數據庫是生產數據庫的從屬。

生產環境

master 分支上的提交被推送到 gitosis 時,它會自動部署到生產服務器。

wp-config.php 問題

您希望 wp-config.php 在服務器到服務器上是唯一的,但您也希望將其保留在版本控制之下。我的解決方案是使用.gitignore 來忽略 wp-config.php,並將登台和生產版本存儲為 differently-named 文件。然後在每個服務器上,我的符號鏈接 wp-config.php -> wp-config-production.php 。然後,每個用户都使用他們自己的憑據 (未跟蹤)wp-config.php 設置自己的數據庫。

其他註釋

我使用 Rackspace Cloud,這是非常現代和便宜的。有了它,我可以使我的分段和生產服務器保持一致。我現在也在編寫插件,使用他們的 API 來允許我從 WordPress 中控制我的服務,這是非常好的。

緩存目錄,文件上傳目錄等都添加到.gitignore 。如果你想要的話,你可以設置一個 cron 任務來定期檢查上傳內容並將它們推送到 gitosis,但對我來説似乎是不必要的。

主/開發結構設置為部分模仿 Vincent Driessen’s branching model 。我也使用他的 git 擴展名 git-flow,我也強烈建議。

我已經有 10 個左右的開發人員在這個結構上工作了一年多了,這是一個夢想。可靠,安全,快速,功能和敏捷,您不能要求更多!

次佳解決方案

首先,我認為重要的是考慮你將要進行版本控制。我建議不要把整個 WP 目錄放在 VC 下。我認為最有意義的是,將 wp-content / themes / YourThemeName 放在 VC 下。對於具有大量複雜插件的大型站點,我可以看到包括 wp-content /插件的情況。如果您絕對必須,您可以包括 wp-content /上傳。下面的答案會有所變化,具體取決於您的版本控制。

鑑於此,我使用的是:

本地:在機器上安裝 LAMP 堆疊。使用與開發網站相同的網址。使用 VirtualHosts 和.host 文件條目從 URL 的角度模擬開發環境。如果您只是 VC 主題,請考慮使用 SSHFS 鏈接到 wp-content /插件,wp-content / uploads 。考慮在您的開發安裝項目中使用數據庫,除非您真的做了一些重的工作。

開發:將您的 Repo 的工作副本結帳到您的 WP 環境中。在 SVN 中設置一個 POST-COMMIT Hook,以便在每次提交時更新此 repo 。這將保持同步。 (考慮一個窮人的持續整合)

生產:查看代表最終候選人的命名版本標籤。當您需要使用新版本時,切換標籤並更新 repo 。

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。