WordPress分站环境

7

我在一家为制药行业提供网站服务的公司工作,我们在推出任何更改之前通常需要获得法律批准。因此,我希望将我们的大部分工作迁移到CMS环境,特别是WordPress,但我们需要能够拥有一个分阶段环境。是否可以将页面发布到分阶段环境而不是直接发布?这样别人就可以浏览链接并访问该网站。总之,我们需要两个网站,一个是分阶段的,一个是正式的。


2
我投票关闭此问题,因为它不是一个编程问题,并且在Stack Overflow上属于离题。关于您的网站的非编程问题应该在[webmasters.se]上提问,有关WordPress开发和管理的问题应该在[wordpress.se]上提问。将来请在更合适的地方提出此类问题。 - Stephen Ostermiller
6个回答

3
一般来说,其他回答都是正确的,有一些替代WordPress的方案在分期环境和构建迁移方面拥有更好的内置支持。但是,这些替代方案并不完全等同于WordPress平台,因此我认为最好回答当前的问题。
WordPress本身不支持从两个不同的主机托管相同的站点。核心依赖存储在数据库中的绝对URL,并在核心逻辑的几乎每个方面中使用。这导致了许多无关紧要的错误,例如大约500个与SSL访问相关的错误,因为它们尝试动态地将所有http://计划改为https://。
因此,当您托管在dev.example.com上并迁移到staging.example.com,再次迁移到www.example.com时,每次切换主机时都必须非常小心地搜索和替换数据库导出中的内容。当您发现许多受欢迎的WordPress插件将URL序列化为数据库中的值时,这会导致其他问题。因此,当您使用staging.example.com搜索和替换dev.example.com时,包含原始值字符长度的序列化数据将不再与新的较长格式反序列化。一些核心贡献者认为解决后一个问题的方法是仅使用与生产帐户相同数量的字符设置分期站点……
类似地,他们还建议交换主机映射,并且在所有托管环境中仅使用production.com URL。根据您特定的用例要求,如果您需要为离线客户提供访问权限,那么这可能不是有效的解决方案(当然,对于技术文盲的用户与技术精通的用户相比)。
但是,WordPress本身具有许多出色的功能,并且是一种非常适应和强大的快速开发平台。因此,您可以扩展核心框架以实现所需的大部分功能。当我遇到这种情况时,我必须开发一个适用于所有情况的解决方案。传统上,此问题通过根相对URL解决,它们可在跨主机环境中工作,并且不会受到常见的分期迁移中的计划更改、端口更改或子域交换做法的影响。
使用此插件:http://wordpress.org/extend/plugins/root-relative-urls/(有偏见吗?是的,我编写了此插件。),您可以获得重要的根相对URL和动态主机,在其中根相对URL无法正常工作(例如RSS提要)。将站点迁移到不同的主机后,唯一剩下的工作就是将wp-config.php文件移动到www根目录之外(WordPress本身支持向上一个级别),以便您可以在不同的服务器上维护不同的副本。或者,您可以使用基本的if语句通过服务器名称区分主机,并基于服务器定义关键的WordPress常量。最终,您的内容、代码和数据将过渡无缝。
作为一条关注的注脚,所提及的插件需要对wp-config.php文件设置写入权限,这在生产或公共可访问的服务器上是非常不安全的做法。也许您可以在受限制的临时环境中轻松实现此操作,但在生产转换中需要禁用和删除插件。

长话短说,是的,您可以在多个主机环境中托管WordPress。早期广泛宣传的解决方案因核心架构的局限性而具有非常特定和选项受限的特点。但是该框架足够灵活以弥补核心缺陷。鉴于核心开发人员不断花费的努力来克服级联问题,这种核心设计决策可能会在将来某个时候发生变化。但是,还有绝对URL信仰的虔诚捍卫者将保持这种做法。也许现在选择支持服务器迁移的其他平台(几乎所有平台都支持)会更好。

2

这是可能的:看一下这个Github Gist,了解如何使用wp-config.php文件切换环境的示例。此外,查看wordpress.stackexchange,可以看到其他有关此问题的问题,这些问题会更深入地了解您应该考虑的内容。


1

Greg, 如果你需要一个带有分阶段环境的更好的CMS,那么Silverstripe(silverstripe.org)将是一个更好的选择。这个CMS允许你浏览整个分阶段网站。


我同意这个观点。Silverstripe是一个很棒的CMS,如果你正在创建网站,你应该使用CMS而不是博客软件。 - Bendihossan

1

我认为你可以尝试使用一些插件。

例如(在官方WordPress插件库中快速搜索)wp-deployDev and Staging Environment Plugin(可能已过时)。

或者,作为替代方案,您可以尝试使用不同的wp-config.php文件-一个用于生产环境,另一个用于开发环境,并通过检查请求的URL来切换它们。


0

通过这个插件,您只需点击两下即可创建一个WordPress分站环境:https://de.wordpress.org/plugins/wp-staging/

声明:我是这个插件的作者。所以如果您有任何问题,请随时问我。


0
如果您需要使用WP,并且需要从暂存站点发布一个或多个页面到实际站点,为什么不在需要发布的页面上实现一种标记(供实际站点访问者查看)?简单地调整模板以显示已标记或未标记的页面即可完成!然后,您可以只使用一个站点,在其中维护公开可用和未经批准的页面。
您也可以维护您网站的本地副本(stage),并编写一些脚本将其(全部)上传到您的主机 - 这是易于自动化的任务。在这种情况下,您可能希望考虑将整个站点呈现为HTML页面并将这些HTML上传(简单的rsync)到主机 - 实际站点将很难被破坏,因为没有动态脚本!
但也许您真的不应该选择WP?有很多CMS支持编写-审核-发布方案。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接