Wordpress暂存环境


Wordpress staging environment

我在一家为制药行业做网站的公司工作,在我们推出任何更改之前,我们通常需要获得法律批准。所以,我想把我们的很多工作迁移到CMS环境,特别是wordpress,但我们需要有一个登台环境的能力。是否有可能不发布页面,而是将其发布到登台环境,以便某人可以将链接作为站点进行浏览。所以基本上有两个站点,一个暂存一个直播?

一般来说,其他"答案"

这里是正确的,WordPress有更好的内置支持暂存环境和构建迁移的替代品。然而,建议的替代方案并不能完全替代WordPress平台,所以我认为最好还是回答手头的问题。

WordPress本身不支持从两个不同的主机托管同一个站点。核心依赖于存储在数据库中的绝对url,并且几乎在核心逻辑的每个方面都使用。这导致了许多多余的错误,比如与SSL访问相关的500个左右的错误,因为它们试图动态地将所有http://方案更改为https://

因此,当您在dev.example.com上托管并迁移到staging.example.com和再次迁移到www.example.com时,您必须进行非常仔细的搜索&每次切换主机时,替换对数据库导出的操作。当您发现许多流行的WordPress插件将URL序列化为数据库中的值时,这会导致额外的问题。所以当你搜索&用stagingexample.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宗教的捍卫者,他们将暂时保持这种做法。也许一个支持本地服务器迁移的不同平台(选择其中的任何一个,因为大多数平台都支持)对您来说是一个更好的选择。

这是可能的:看看这个Github Gist,看看如何使用wp-config.php文件切换环境的示例。此外,看看wordpress。在stackexchange上查看其他一些关于这个的问题,让你更深入地了解你应该考虑的东西。

Silverstripe (silverstripe.org)是一个更好的带有分段环境的CMS。这个cms允许您浏览整个登台站点。

我认为你可以尝试使用一些插件。例如(在官方wordpress插件repo上快速搜索)wp-deploy或Dev and Staging Environment plugin(可能过时了)。

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

如果您需要使用WP,并且只需要将一个或几个页面从登台站点发布到实时站点,为什么不在需要发布的页面上实现一种标记(由实时站点访问者看到)呢?只需调整模板以显示标记或不标记的页面,就完成了!然后,您可以只使用一个站点,并在该站点上同时维护公共可用和未批准的页面。

你也可以维护你的网站(阶段)的本地副本,并有一些脚本上传到你的主机(整体)-容易自动化的任务。在这种情况下,您可能想要考虑将整个站点呈现为HTML页面,并将这些HTML上传到主机(简单的rsync)——活动站点将很难中断,因为那里没有动态脚本!

但是也许你真的不应该选择WP?有很多CMS支持写-批准-发布模式。

在这个插件的帮助下,只需点击两下就可以创建一个WordPress Staging环境:https://de.wordpress.org/plugins/wp-staging/

声明:我是这个插件的作者。有什么问题可以问我