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

时间:2012-02-24 06:01:53

标签: wordpress deployment wordpress-plugin capistrano

我希望有人可以确认以下方案是否是部署WordPress网站更新的问题,如果是,您是否有解决方案如何最好地管理这个?

基础知识:

  • 我有一个本地开发WordPress Multisite项目,我 使用GIT和Capistrano部署到远程登台和生产 服务器。
  • 除了上传和blogs.dir目录之外的一切(在 wp-content)受版本控制。是的,WordPress核心, 主题,插件等在本地更新,提交,推送和 部署。这意味着我必须登录并激活插件 最初 - 它们只是通过Capistrano部署安装
  • 关于开发,分期和生产的数据库是不同的 我并不担心尝试同步这些

我的关注:

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

我的问题:

  1. 我是否担心生产和登台服务器有 最新代码但缺少最新所需的任何数据库更新 代码准确吗?
  2. 如果是这样,有没有人想过如何修改Capistrano 部署代码以停用/重新激活插件?改变怎么样? 在WordPress中,例如,3.2到3.3?
  3. 如果Capistrano不是这个的工具 - 我需要做更多 "手动"登录管理员 - 是否有维护模式 工具/插件,可以在一定程度上自动停用/激活 插件,因此激活后的任何更新都会被触发?
  4. 非常感谢,

    马特

1 个答案:

答案 0 :(得分:4)

需要注意的是,当您将WordPress核心从版本升级到版本时,不需要激活和停用插件。 Here is an explanation from Ryan Boren on why。但是,根据插件的不同,其中一些可能有一个内置于 升级中的升级过程 - 即插件的升级,而不是WordPress的升级。尽管如此,我还是会直接回答你的三个问题并直接回答。

<强> 1。我担心生产和登台服务器是否具有最新代码但缺少最新代码所需的任何数据库更新?

是的,在更新时,如果数据库架构发生了更改,则除非存在新架构,否则WordPress将无法正常运行。当试图访问WordPress的管理员端时,如果db版本低于WordPress版本所期望的版本,它将重定向到数据库升级页面。

WordPress在/wp-includes/version.php文件中设置一个名为$wp_db_version的全局,并维护每个迁移脚本,以便从每个先前版本到下一个版本逐步升级数据库,直到版本号为最新版本{ {3}}。以下是常见问题解答中较简单的列表,其中显示了修订号与seen here的关联方式。

<强> 2。如果是这样,有没有人想过如何修改Capistrano部署代码以停用/重新激活插件?

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

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

也许最好的办法就是让你的部署脚本在WordPress中点击一个插件的URI,你要写的一个插件会停用/激活插件,或者是现有的插件。

可能一些现有的插件可能会处理您所寻找的部分内容,但我将问题的关键部分视为自动化,并避免必须登录每个环境并升级每个插件的插件,所以自己开发一个完全符合你需要的东西可能就是你要走的路。如果您使用WordPress已经提供的工具,则可以开发插件。

查看整个Plugin_Upgrader class文件,看看您可能会发现什么有用。另外,在/wp-admin/includes/plugin.php中管理端实际处理插件的结帐代码 - 只是为了看看它是如何完成的。您可能希望阻止deactivate_plugin挂钩使用自行清理的插件来消除插件配置,因此在取消激活插件时,请考虑将$silent作为true传递。

为了使这个非常光滑,你可能想要抓住get_option('active_plugins')来查看哪些插件已经被激活,并且只在那些上运行你的脚本(确保插件不包括在内处理)

第3。如何改变WordPress,例如3.2到3.3?

从3.2到3.3的变化应该被认为与任何其他变化没有区别,因此这里所说的一切都适用。

<强> 4。如果Capistrano不是这个的工具 - 我需要做更多的事情&#34;手动&#34;通过登录管理员 - 是否有一个维护模式工具/插件,可以在某种程度上自动停用/激活插件,以便触发激活时的任何更新?

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