如何在使用Capistrano进行部署时升级Wordpress和插件?

我希望有人可以确认下面的情况是否是部署WordPress网站更新时遇到的问题,如果是这样的话,您是否有解决方案来解决这个问题?

基础:

  • 我有一个本地开发WordPress多站点项目,我使用GIT和Capistrano将其部署到远程登台和生产服务器。
  • 除了上传和blogs.dir目录(在wp-content中)都受版本控制之外,所有内容都是如此。 是的,WordPress核心,主题,插件等在本地更新,提交,推送和部署。 这意味着我必须首先登录并激活插件 - 它们只需通过Capistrano部署即可安装
  • 关于开发,分期和生产的数据库是不同的,我并不担心试图同步这些数据库
  • 我的顾虑:

    插件和WordPress核心的许多更新也会在通过管理员进行自动更新时对数据库执行更新。 我在我的开发安装中本地更新WordPress核心和插件。 这些更新的代码最终被提交,推送和部署。 但是,部署代码时,只需将更改的文件添加/删除/替换到分段和生产服务器即可。 由于这通常是自动更新过程的一部分,例如,停用,更新,激活(运行对数据库的任何更新),生产和分段缺少对数据库的任何更新。

    我的问题:

  • 我担心生产和临时服务器有最新的代码,但错过了最新代码所需的任何数据库更新的准确性?
  • 如果是这样,有没有人想过我如何修改Capistrano部署代码来停用/重新激活插件? WordPress的变化如何,例如3.2到3.3?
  • 如果Capistrano不是这样的工具 - 我需要通过登录管理员进行更多的“手动”操作 - 是否有维护模式工具/插件可以在某种程度上自动化停用/激活插件,从而在激活时进行任何更新被触发?
  • 非常感谢,

    马特


    需要注意的是,当您将WordPress核心从版本升级到版本时,您不需要激活和停用插件。 这是Ryan Boren为什么解释。 尽管取决于插件,但其中一些可能会在升级过程中内置升级过程 - 即插件升级,而不是WordPress。 无论如何,我会通过你的三个问题并尽可能直接回答他们。

    1.我担心生产和登台服务器是否拥有最新的代码,但是为了使最新的代码更新所需的数据库更新缺少准确性?

    是的,在更新时,如果数据库模式发生变化,则除非新模式存在,否则WordPress将无法正常运行。 当试图访问WordPress的管理端时,如果数据库版本低于您的WordPress版本,它会将您重定向到数据库升级页面。

    WordPress在/wp-includes/version.php文件中设置了一个名为$wp_db_version的全局$wp_db_version ,并维护每个迁移脚本,以便将数据库从每个以前的版本逐步升级到下一个版本,直到版本号保持最新,如下所示。 这是FAQ中的一个简单列表,显示版本号与WordPress版本的关系。

    2.如果是这样,是否有人想过如何修改Capistrano部署代码来停用/重新激活插件?

    正如我上面所说的,在核心升级之后,通常不需要激活/停用插件,除非我认为插件明确要求您这样做。 如果WordPress中的模式更改会破坏插件,那么插件开发人员需要发布新版本。 升级该插件时,它将被关闭并重新启动,其开发人员有责任确保所有需要执行的操作。

    但是,由于实际的升级过程是在不同的机器上进行的,因此可能需要在部署的环境(如您的环境)中单独停用/激活,因此可能与最终将使用的数据库不同。

    也许最好的做法是让您的部署脚本在WordPress中创建一个插件的URI,您可以编写一个可以停用/激活插件的插件,或者已有的插件。

    有可能一些退出的插件可能会处理你想要的部分内容,但我会将你问题的关键组成部分变成自动化,避免必须登录到每个环境并为每个环境升级插件,所以你自己开发一个插件正是你需要的可能是要走的路。 如果你使用WordPress已经提供的工具,开发一个插件是可能的。

  • activate_plugin()
  • activate_plugins()
  • deactivate_plugins()
  • validate_plugin()
  • Plugin_Upgrader类(也许)
  • 仔细查看整个/wp-admin/includes/plugin.php文件,看看您可能会觉得有用。 另外签出实际处理/wp-admin/plugins.php管理端插件的代码 - 看看它是如何完成的。 您可能想要停止deactivate_plugin挂钩从插件配置中清除插件,这些插件会自行清理,因此请在取消激活插件时将$silenttrue

    为了让这个过程真的很流畅,你可能想要抓住get_option('active_plugins')来查看哪些插件已经被激活,并且只运行你的脚本(确保插件从流程中排除)

    3. WordPress的变化如何,例如3.2到3.3?

    从3.2到3.3的变化应该被认为与其他任何变化没有什么不同,所以这里所说的一切都适用。

    4.如果Capistrano不是这个工具 - 我需要通过登录管理员进行更多“手动”操作 - 是否有一个维护模式工具/插件可以在某种程度上自动化插件的停用/激活,以便任何更新在激活时被触发?

    我不认为卡皮斯特拉诺会在这里做任何沉重的举动 - 但它肯定不会这样。 您应该只需要能够在插件中创建一个URI,并且应该能够在应用程序中进行滚动。 重要的是,显然所有这些功能都需要可用,所以你不能像独立脚本那样运行它。

    链接地址: http://www.djcxy.com/p/57789.html

    上一篇: How to upgrade Wordpress and plugins when deploying using Capistrano?

    下一篇: Should APNS Tokens be encrypted?