将本地内容与开发/试运行站点同步

时间:2017-07-09 作者:MAX POWER

我来自Laravel,这意味着我习惯于使用数据库迁移和种子来保持开发/登台站点上的内容与本地环境同步。

我正在WordPress上开始我的第一个项目,我想知道如何做同样的事情。基本上,我是在本地环境中构建网站,通过使用诸如高级自定义字段之类的插件,我将为网站创建内容。我需要一个简单的方法来确保开发/登台站点的内容与我的本地环境相同。我只想同步内容,如帖子、页面、自定义帖子类型和任何相关媒体。

代码本身的部署不是问题,因为代码处于版本控制之下,我可以创建一个webhook来自动部署代码。

我读过一些插件,比如WP Migrate DB 但我不确定这是不是这项工作的工具。

有人能建议实现这一目标的最佳方法吗?

3 个回复
SO网友:Den Isahac

概述

这是WordPress开发的一个主要警告,即使是经验丰富的WordPress开发人员也会想知道,将数据库内容从本地环境同步到live server的完美自动化是什么。

您不能只从本地开发环境将数据库转储文件上载到服务器并对结果感到满意。

WordPress实际上将生成的URL存储在数据库中。

假设您的本地开发URL是http://localhost/awesome. 存储在数据库中的帖子也存储了您的开发URL(即。http://localhost/awesome) 在每个岗位上。URL也存储在wp_options 桌子因此,当您将本地数据库转储导入服务器时,需要将现有URL替换为服务器URL,以使post链接正常工作。

一个不那么优雅的解决方案:

我个人使用的解决方案之一是Search Replace DB 通过interconnect/it.

要使用该脚本,请从下面下载zip文件,提取名为search replace db master的文件夹(假设您使用的是3.1.0版本),将其重命名为您选择的机密文件,通过FTP、SFTP或SCP将其上载到web服务器的公共目录,然后在浏览器中导航到该文件夹。脚本将自动尝试查找并填充数据库字段,但您必须检查详细信息是否正确,以及它是否适用于要对其执行搜索/替换操作的数据库。

使用此脚本的典型WP安装将包含以下文件夹:

您的秘密搜索替换文件夹NOTE: 请阅读Installation and Usage 并确保在继续更换时,详细信息正确无误。

它是如何工作的

Your:

开发URL:http://localhost/awesome
实时服务器URL:http://awesome.com

您将开发URL提供给Replace Textbox 和指向With Textbox. 确保有数据库备份,然后点击按钮dry runlive run 执行操作。

结论:它一直有效吗?嗯,不是很快,实际上这取决于您的需求,但到目前为止,在我所有的WordPress项目及其不同的需求中,它都按预期工作。

有很多解决方案,其中一个在您的问题中提到(即。WP Migrate DB). 您只需将WordPress development, 尽管CMS WordPress在其存在的整个过程中都很出色,但仍然有一个主要的警告,让我们想要获得自由。

SO网友:spacegrrl

对于我们的站点,我们编写了一个Perl脚本,用于复制数据库,然后使用wp-cli 用于调整特定站点本地设置的命令。该脚本还发出UNIX行命令以同步上载目录。

当我们需要复制整个数据库时,我们会使用它,除了所有内容之外,它还会获取插件设置。

然而,我们也为用户提供了一个内容暂存站点,我们使用RAMP 将单个内容项目(或其中的一批)从内容暂存站点迁移到实时站点。这将带来给定帖子/页面的所有依赖项,如媒体附件、分类术语、用户等。RAMP面向更新和创建内容的最终用户。它确实需要一些定制来处理使用类似ACF的东西进行定制的站点。

我们的典型工作流程是使用RAMP在内容暂存和live之间切换,然后使用复制脚本在内容暂存站点上用内容刷新开发和测试站点。

最后,由于您已经在使用版本控制,您可能希望看看VersionPress 它允许您对数据库进行版本设置。我没有使用它,但一直在关注开发,这很有趣。

SO网友:Mark Kaplun

代码更改应该进入GIT并拉入(或者使用一些更复杂的脚本,根据拉入的代码进行构建)。内容更改只能在没有代码开发的生产服务器或“内容暂存”服务器上进行,因此您可以安全地传输数据库。

您不应该将代码开发和内容更改混为一谈。

结束

相关推荐

WordPress与Git部署问题

我是wordpress的新手,来自python/django世界,那里有相当成熟的开发工作流和站点部署标准,因此我试图找到一些关于如何管理部署的指导。了解我正在尝试做的一些背景知识:我将接管一个托管在Digital Ocean上的电子商务wordpress部署。该站点是实时的,虽然从长远来看,我们可能会迁移到不同的平台,因此这是一个临时解决方案,能够对已安装的主题进行一些自定义,并轻松部署到digital ocean,同时保持(版本)控制。我最初尝试将WP部署到heroku,并使用MySQL的端口Mhoo