問題描述
所以我需要能夠對 WordPress 網站進行 dev / stage / production 迭代 (透過單獨的伺服器),我通常使用 git,但這顯然不會與 WordPress 網站一起使用,因為依賴資料庫為主配置… 好,幾乎一切。
所以我的問題是你們怎麼做?我有一個快速的 Google,看到有幾個外掛,這是唯一的方法嗎?哪些人在易用性,速度,可靠性等方面做得最好?
最佳解決方案
我有一個設定我很自豪,它對我的團隊非常好。
一般結構
我保持整個安裝在 git 下。所有更改,無論是系統更新,新增/更新外掛,新增/更新主題,都可以透過相同的工作流程。變更可以暫時回滾。我有一個執行 gitosis 的部署伺服器 (一個老 P4 桌面),但您可以輕鬆使用 github 或 gitolite 。在 git 中,我有兩個”special” 分支,master 和 develop(以下解釋) 。我的生產和分期伺服器是 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。