問題描述

我正在尋找一個強大的流線型工作流程想法與 Wordpress 一起工作。

  1. 想在我自己的伺服器內部使用 git 環境,不使用 Github 來處理 repos 。

  2. 在 git 分支建立時自動建立子域 (development.domain.com,ryan.development.domain.com) – 可能一些 shell 指令碼鉤子是理想的。

  3. Phing PHP /Shell 指令碼處理資料庫遷移 (類似於此 http://interconnectit.com/products/search-and-replace-for-wordpress-databases/) 來處理序列化的資料庫替換

操作可能會這樣:

  1. 獲取當前最新的 WordPress 版本並分支出來,分支的名稱獲取一個子域條目 (branchdevelopment.domain.com)

  2. submodule 你想要的主題,如果它可用 (我想自己的 git repo 為此,因為我使用論文,我想有一個空白的論文 git repo 設定從內部抓住已經建立的伺服器)

  3. 檢查並進行更改,客戶評價一旦被推送到活動中,資料庫指令碼就會自動將從 localhost(或子域) 的序列化 URL 值更改為即時網址

這可能嗎?我聽說 Capistrano 也很好用,但不知道 Capistrano 如何完全奏效。

我在自己的伺服器上執行了大約 200 個站點,並希望開始將這些站點實施成一個強大的 git 工作流環境,這樣我可以簡化我的工作。截至目前,我基本上下載了一個網站的影像並在本地工作,然後將更改上傳到伺服器。這在這個時代非常乏味。

有沒有人對這種型別的工作流程有任何解決方案?如果是這樣,一些資源/答案將不勝感激。

最佳解決方案

一般問題回答

Nr.1. Would like to have my git environment on my own server internally, not using Github to handle repos.

我會做的第一件事是檢查作曲家,以及它如何與 WordPress 合作,這是 Andrey “@Rarst” Savchenko 的一個專案。

Nr.2. Automatic creation of subdomains upon git branch creation (development.example.com, ryan.development.example.com) – Probably some shell script hook would be ideal for this.

這是這個網站超出範圍的。請求 StackOverflow 的幫助或向您的主持人詢問。一些主持人不允許自己編輯這些條目。

Nr.3. Phing PHP/Shell script Handling of the db migration (something like this http://interconnectit.com/products/search-and-replace-for-wordpress-databases/ ) to handle serialized database replacement upon pushing

我設定了一個多站點/網路安裝。這樣可以輕鬆管理所有的表格,將使用者保留在中心位置等。

WP GearRobert “@Wyck” Ellison 的一個專案 – 具有備用構建指令碼的列表。包括自己編寫的 WordPhing@TomJNowells /Interconnect.it script 到目前為止還沒有列出。

操作問題回答

Nr. 1. getting the current latest wordpress version and branch it out, name of the branch gets a subdomain entry (branchdevelopment.domain.com)

不知道為什麼要這樣做:每個分支的子域。當您檢視同步的 WordPress GitHub repositorylist of branches 時,您將看到每個分支都命名為 X.Y-branch 。所以你的子域名將被命名為例如。 3.6-branch 。我不知道子域是否允許以數字開始 (應該是但是請求您的主持人),然後出現一個問題,您會得到一個名為 6-branch 的 sub-subdomain,它具有名為 3 的 sub-sub-subdomain,另一個名為 2 。並且猜測在子域中配對 2 和 3 版本的分支不是你想要實現的。

簡而言之:只要 checkout 3.6-branch 如果需要切換分支。

Nr.2. submodule the theme you desire if it’s available (i’d like to make my own git repo for this, as I use thesis I’d like to have a blank thesis git repo setup to grab from internally on the server that’s already been created)

Thomas “@toscho” Scholz 已經編寫了一個漂亮的外掛,允許我們使用一個子域來處理 WordPress 目錄外的主題。您可以在 this answer 以及 in this one 中找到它。即使自動更新也將適用於 WP 3.6 以來的主題。

您可以透過在 wp-config.php 檔案中設定以下常數來為 MU-Plugins 和外掛執行相同操作:

define( 'WP_PLUGIN_DIR',   'path/to/your/plugins.dev/folder/plugins' );
define( 'WP_PLUGIN_URL',   'https://plugins.dev/plugins' );
define( 'WPMU_PLUGIN_DIR', 'path/to/your/plugins.dev/folder/mu-plugins' );
define( 'WPMU_PLUGIN_URL', 'https://plugins.dev/mu-plugins' );

現在只需將所有的外掛和主題都放在版本控制下,然後將其推送到您的伺服器上。您可以使用 mu-plugins 或網路啟用的預設外掛輕鬆地使其可用。

Nr.3 checkout and make changes, client reviews, once it’s pushed to live, the database script will then kick in automatically changing the serialized url values from localhost (or subdomain) to the live url

如果湯姆指令碼/外掛到目前為止沒有幫助,那麼請告訴 that he accepts pull request on GitHub

次佳解決方案

沒有時間寫一個完整的功能答案 (我知道跛腳),但可能值得分享 (我可能會編輯這個,因為我也計劃一個 blog-post))

這意味著你可以擁有一些幹線/基於 version-branch 的 WP 設定,您可以完全包含在內。主題和外掛。

由於這是一個獨立的 (本地) 儲存庫,您可以透過 ssh 將其推送到其他儲存庫,例如:

  • 它位於遠端主機上,該站點應部署在 (裸機) 上。

  • 這有鉤子,使該主機上的另一個儲存庫實際上合併在剛剛推送的更改中。

這在 A web-focused Git workflow (Nov 2008; by Joe Maller)中概述。

如果您有一個配置切換器,根據執行的系統選擇具體的 wp-config.php,您甚至可以在 repo 內集中配置所有主機 (開發,直播,分段,朋友,…) 。

WP 中的上游更改只會在子樹中獲取併合並。

您剛剛更新和提交的外掛。

部署是一個簡單的 $ git push remote

在遠端主機上執行 git repos,資料庫和上傳的檔案的每日備份,這是便宜的,開發人員友好和靈活。這對於 single-developer 設定以及小團隊來說都很好,因為每個人都可以從遙控器上的裸機重新啟動。


有一些注意事項:


現在,您的清單和設定如上所述:

1. Would like to have my git environment on my own server internally, not using Github to handle repos.

Github 只在這裡處理上游回饋 (WordPress),而不是你自己的。

2. Automatic creation of subdomains upon git branch creation (development.domain.com , ryan.development.domain.com) – Probably some shell script hook would be ideal for this.

概述的設定是一個模組化的方法,每個站點有一個 repo 。它可以處理儘可能多的開發主機,它可能同樣適用於 multi-site 安裝來處理多個域,但這將被視為一種 wordpress 設定在這種方法。

3. Phing PHP/Shell script Handling of the db migration (something like this http://interconnectit.com/products/search-and-replace-for-wordpress-databases/ ) to handle serialized database replacement upon pushing

這裡不需要這裡,因為只有程式碼在版本控制下,資料庫應該是開發 (分期) 和生產之間獨立的。

您可能正在尋找一個能夠進行域名遷移的安裝指令碼,但即使使用更好的程式碼 (可用) 處理序列化資料搜尋和替換,在此設定中通常不需要將更改推送到現場對於 test-cases,您可以在開發資料庫中快速建立內容,這通常是最小的問題 (根據我的實踐經驗,您的可能會有所不同,但我也建議在本網站上保留這樣的 database-migration 相關主題。 – 但請問他們) 。

I run about 200 sites on my own server and would like to start implementing these sites into a strong git workflow environment so i can streamline my work a lot better.

我無法想象這些網站將如何成為一個字串 git 工作流環境。也許您在這裡管理的配置指令碼和配置資料可能會保留在 git 版本控制下。這可能是有道理的。否則,除了大量的網站,我認為把所有這些都放在一個 git repo 中是毫無意義的。也許甚至不是其中之一,因為我上面概述的是您開發的網站 (包括 WP 核心程式碼),而不僅僅是安裝任務。因此,您可能需要首先建立一些這 200 個站點的小圖,以及它們如何互相交流,以及這些站點所包含的哪些程式包 (WP 核心,外掛,主題) 。第一件事可能是建立一個電子表格/矩陣,並把所有的網站。

然後,您可以將其儲存為 CSV,將其置於版本控制下,並使部署指令碼根據該檔案進行工作。

如果我已經學習了一些自動化任務:遵循 Unix 的理念,使用現有的和很好的工具 (最好花半天時間閱讀一些命令,然後嘗試搜尋替代方案,因為大多數工作都是這樣的已經解決了),並專注於命令列工具。他們是最強大的

參考文獻

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