2012-02-24 58 views
7

我希望有人可以確認下列情況是否是部署WordPress網站更新時出現的問題,如果是這樣,您是否有解決方案以最好地管理此問題?如何在使用Capistrano進行部署時升級Wordpress和插件?

基礎知識:

  • 我有一個地方的發展,對此我 使用Git和Capistrano的部署到遠程分期和生產 服務器WordPress的多站點項目。
  • 除了上傳和blogs.dir目錄(在 wp-content中)都受版本控制之外,是的,WordPress的核心, 主題,插件等在本地更新,提交,推送和 部署。這意味着,我必須先登錄並初步激活插件 - 它們通過Capistrano的安裝簡單部署
  • 上開發,分期和生產是不同的, 的數據庫,我不擔心試圖這些同步上漲

吾言:

許多更新插件和WordPress的核心操作的方式從管理員自動更新時,還執行更新到數據庫中。我在我的開發安裝中本地更新WordPress核心和插件。這些更新的代碼最終被提交,推送和部署。但是,部署代碼時,只需將更改的文件添加/刪除/替換到分段和生產服務器即可。由於這通常是自動更新過程的一部分,例如,停用,更新,激活(運行對數據庫的任何更新),生產和分段缺少對數據庫的任何更新。

我的問題:

  1. 是我對具有 最新的代碼,但是缺少最新的 代碼準確所需的任何數據庫更新的生產和臨時服務器的關注?
  2. 如果是這樣,有沒有人想過我如何修改Capistrano 部署代碼來停用/重新激活插件? WordPress的變化 怎麼樣,例如3.2到3.3?
  3. 如果Capistrano不是這方面的工具 - 我需要通過登錄管理員手動執行更多 - 是否有維護模式 工具/插件可以在某種程度上自動化停用/激活 插件,所以激活時的任何更新都會被觸發?

非常感謝,

馬特

回答

4

其重要的要注意,你不需要啓用和禁用插件,當你從版本升級WordPress的核心到版本。 Here is an explanation from Ryan Boren on why。儘管取決於插件,但其中一些可能會有升級過程,內置於升級 - 也就是插件的升級,而不是WordPress的升級。無論如何,我會通過你的三個問題並儘可能直接回答他們。

1。我擔心生產和臨時服務器有最新的代碼,但錯過了最新代碼所需的任何數據庫更新的準確性?

是的,更新時,如果數據庫模式發生變化,那麼除非新模式存在,否則WordPress將無法正常運行。當試圖訪問WordPress的管理端時,如果數據庫版本低於您的WordPress版本,它會將您重定向到數據庫升級頁面。

WordPress的設置全局稱爲$wp_db_version/wp-includes/version.php文件,並維護每個遷移腳本,從每個以前的版本到下一個逐步升級的數據庫中,直到版本號是最新的,seen here。這是FAQ中的一個簡單列表,顯示版本號與WordPress versions.的關係。

2.如果是這樣,是否有人想過如何修改Capistrano部署代碼來停用/重新激活插件?

正如我上面所說的,你通常不需要在覈心升級後激活/停用插件,除非我認爲插件明確要求你這樣做。如果WordPress中的模式更改會破壞插件,那麼插件開發人員需要發佈新版本。當升級插件時,它將被關閉並重新啓動,其開發者有責任確保所有需要進行的操作。

然而,你可能需要停用/在部署環境中,如您分別激活,因爲實際的升級過程是從它最終將被用在採取不同的機器上進行,因此很可能在不同的數據庫。

也許最好的辦法是讓您的部署腳本在WordPress中插入一個插件的URI,您可以編寫一個可以停用/激活插件的插件,或者已有的插件。

可能有部分退出的插件可能會處理的你想找的部分,但是我把你的問題的關鍵組成部分是自動化,並且不必登錄到每個環境和升級插件每一個的迴避,因此開發一個你自己確實需要的東西可能就是要走的路。如果你使用WordPress已經提供的工具,開發一個插件是可能的。

看貫穿整個/wp-admin/includes/plugin.php文件,看看有什麼你可能會發現有用。另外結賬代碼,實際上處理管理端在/wp-admin/plugins.php插件 - 只是看看它是如何完成的。您可能想要停止deactivate_plugin掛鉤從插件配置中清除插件,這些插件可以自行清理,因此請在取消激活插件時考慮將$silent作爲true

爲了使這真的光滑,你可能會想抓住get_option('active_plugins'),看看哪些插件已經被激活,而且僅限於這些運行腳本(確保插件排除本身的過程)

3.怎麼樣在WordPress的變化,例如,3.2〜3.3?

的變化,從3.2到3.3應該被認爲是任何其他組的變化沒有什麼不同,所以這裏的一切說適用。

4.如果Capistrano不是這個工具 - 我需要通過登錄管理員進行更多的「手動」操作 - 是否有維護模式工具/插件可以在某種程度上自動化停用/激活插件,所以激活時的任何更新都會被觸發?

我不認爲Capistrano的會做任何這裏繁重的工作 - 但它肯定不是在路上無論是。你應該只需要能夠插件內只投中一URI,並且應該得到的東西在應用程序中滾動。重要的是,明明所有的這些功能必須是可用的,所以你不能只是運行在獨立的腳本。

相關問題