2012-12-06 42 views
7

我更新的现有的WordPress网站使显著修改的主题和网站结构,以及进行更新,以插件这反过来存储数据到MySQL数据库。WordPress网站发布管理策略

据我所知这里有2(3?)可能的策略:

  1. “转储并加载”从开发的MySQL数据库的生活和替换为最新版本的wp-content文件夹。
  2. 通过WP导入器导入更改,并用最新更新替换wp-content文件夹。
  3. 通过WP管理界面手动进行数据库更改,并用最新的更新替换wp-content文件夹(这仅适用于较小的更改)。

虽然我在我自己的独立环境中开发,但这是针对现有网站,它现在仍在运行,并将继续接收公众更新,例如评论和联系表单中的条目,因此我期望数据库是与我发布变更的时间不同。

鉴于此,上述选项提供了以下问题。

1转储和装载

的“转储并加载”的策略似乎是做我的数据正在幕后更新的问题(这将是我的首选方法,因为这很容易回滚)。

结果:需要同步数据库发布后才能获得最新更新,过于复杂。

2.使用进口商

使用WP-Importer plugin页和后ID将得到更新,搞砸了造型依赖于后的ID即可激活。这反过来会产生一个我希望避免的CSS恶梦,必须在版本之后通过CSS 更新数据库创建的新页面/帖子ID。

结果:太挑剔,不是很专业的方法导致漫长而复杂的发布过程。

3.更新数据库中手动

这个选项是非常适合小的变化,但是当用于更复杂的版本的步骤列表到PROD接口上遵循变长,难以遵循,因此很容易使错误。

结果:太容易搞砸了,只能是最后的手段。

是否存在用于存在网站的标准词语发布策略?

所以基本上,我的问题是:当更新一个现有的网站时,其他WordPress开发者会遵循什么样的发布流程?有没有下面列出的选项可以最大限度地减少麻烦并减少发布期间的时间和复杂性?

我已经为使用GIT的网站设置了源代码控制,并且我习惯通过ANT或类似的发布脚本来自动化事物,但这对于当前项目来说可能是过度的,但至少理解一个简单的方法更新WordPress的网站,并尽量减少搞砸的机会。

谢谢!

+2

为什么我不喜欢wordpress的另一个原因 – cegfault

+1

我确信我已经在[WordPress StackExchange](http://wordpress.stackexchange.com/)上多次讨论过这个问题。 – brasofilo

+0

想象一下,他们甚至已经为WordPress这几天换了一个堆栈.. –

回答

2

我不认为这是WordPress的特殊情况,它是一个类似的情况,任何自定义网站。我个人更喜欢重放在dev上制作的SQL更改。棘手的部分是,你必须知道做了什么SQL更改。例如,某个插件在安装时可能会进行一些模式更改 - 您需要知道它们是什么。您可以通过在安装插件之前创建数据库的导出为SQL,然后再进行导出并对文件进行差异化。

既然你说你正在进行修改,那么我可能会假设你知道你要做什么SQL更改?只要确保对数据库所做的所有更改都是以SQL脚本文件的形式进行的,而不仅仅是使用GUI进行编辑(您可以使用GUI来帮助编写查询,但保存实际的SQL)。完成所有更改后,您应该有一堆在开发过程中运行的SQL脚本 - 您可以按顺序重新运行它们而不会遇到错误。

然后,当需要进入生产阶段时,创建一个分阶段生产版本(即采用相当流行的生产数据库备份)。运行你的更新脚本并测试一切正常。如果是这样,那么你可以运行生产。

在对其执行任何更改之前,肯定会对生产进行备份!

+0

对于DIFF在DEV数据库之前和之后的变化+1。好主意。 –

2

不用说,你有其他的选择。如果您正在手动更改数据库,请确保您正在有效地使用序列化数据。我建议使用Search and Replace DB。 WordPress对changing the site url entirely from the wp-config file也有一个很好的小窍门。

+0

对WP_HOME/WP_SITEURL变量+1,并使用Search + Replace DB脚本修复序列化数据。 –

1

我假设你有一切在测试环境中运行。然后我会:

  • 在您的生活环境中创建一个新的数据库。
  • 预加载新站点的所有内容和配置。
  • 在您的测试环境中,将config.php配置为指向新的数据库。
  • 将所有文件上传到实时服务器。最后上传您的config.php。

这样可以最大限度地减少停机时间。

+0

这似乎是您的数据在幕后更新的问题。 – Maarten

+0

好的建议谢谢,如果通过上面的选项3进行手动更新,将会最大限度地减少停机时间(手动数据库更改) –