Wordpress登台环境

时间:2011-07-26 19:54:39

标签: php wordpress staging

我为一家为制药行业提供网站的公司工作,我们经常需要获得法律批准才能推出任何变更。所以,我想将我们的大量工作迁移到CMS环境,特别是wordpress,但我们需要能够拥有一个临时环境。是否有可能不是发布页面而是将其发布到某人可以像链接作为站点一样浏览的登台环境。那么基本上有2个网站,一个是暂存一个?

6 个答案:

答案 0 :(得分:3)

一般来说,上述“答案”是正确的,有wordpress的替代方案,可以更好地内置支持登台环境和构建迁移。然而,建议的替代方案并不完全等同于wordpress平台,所以我认为最好回答手头的问题。

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

因此,当您在dev.example.com上托管并迁移到staging.example.com并再次访问www.example.com时,您必须非常仔细地搜索&每次切换主机时,都要替换数据库导出上的操作。当您发现许多流行的wordpress插件将url序列化为数据库中的值时,这会导致其他问题。所以当你搜索&用staging.example.com替换dev.example.com,包含原始值的字符长度的序列化数据不再使用新的更长格式反序列化。一些核心贡献者认为,后一个问题的解决方案是只设置与生产帐户具有相同字符数的登台站点......

与此类似,他们还建议交换主机映射,并且只在所有托管环境中使用production.com网址。根据您的特定用例要求,如果您需要提供非现场客户端,技术文盲用户(当然还有技术文化用户),这可能不是一个有效的解决方案。

但是wordpress本身有很多很棒的功能,是一个非常适应性强的快速开发平台。因此,您可以扩展核心框架,以便从中完成所需的大部分工作。当我遇到这种情况时,我必须开发一种适用于所有情况的解决方案。传统上,这个问题是通过root相对URL来解决的,它们在跨托管环境中工作,并且它们不会受到与分段迁移相同的方案更改,端口更改或子域交换实践的影响。

使用此插件:http://wordpress.org/extend/plugins/root-relative-urls/ (偏见?是的,我写了这个插件。)你得到root-relative urls,它是重要的动态主机,其中root-relative urls不起作用(比如rss feed)。将站点迁移到不同主机所剩下的就是将wp-config.php文件移到www root之外(wordpress一般支持一级),这样你就可以在不同的服务器上维护不同的副本。或者,您可以使用基本的if语句来区分主机的服务器名称,并根据服务器定义关键的wordpress常量。最后你的内容,代码和&数据将无缝过渡。

值得注意的是,引用的插件需要设置对wp-config.php文件的写访问权限,从生产或公共可访问服务器的安全角度来看,这是一种非常糟糕的做法。也许您可以在受限制的临时环境中轻松实现此功能,但是您需要在生产转换中禁用和删除插件。

长话短说,是的,你可以在多个主机环境中托管wordpress。由于核心架构,长期吹捧的解决方案非常特定于案例且受选项限制。但该框架足够灵活,可以克服核心赤字。考虑到核心开发人员不断花费在克服级联问题上的努力量,这个核心设计决策可能会在未来的某个时刻发生变化。但也有绝对的网络宗教虔诚的捍卫者,将暂时保持这种做法。也许一个支持服务器迁移的不同平台本身(因为大多数人都选择其中任何一个)对你来说是一个更好的选择。

答案 1 :(得分:2)

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

答案 2 :(得分:1)

格雷格 具有登台环境的更好的CMS将是Silverstripe(silverstripe.org)。此cms允许您浏览整个暂存站点。

答案 3 :(得分:1)

我认为您可以尝试使用一些插件。 例如(快速搜索官方wordpress插件仓库)wp-deployDev and Staging Environment Plugin(可能已过时)。

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

答案 4 :(得分:0)

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

您还可以维护您网站的本地副本(舞台)并使用一些脚本将其(整体)上传到您的主机 - 轻松实现自动化任务。在这种情况下,您可能需要考虑将整个站点呈现为HTML页面并将此HTML上传(简单rsync)到托管 - 实时站点将很难打破,因为没有动态脚本将在那里!

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

答案 5 :(得分:0)

您可以在此插件的帮助下点击两次即可创建WordPress登台环境:https://de.wordpress.org/plugins/wp-staging/

披露:我是这个插件的作者。所以问我一件事。