2011-07-26 35 views
7

我为一家为制药行业提供网站的公司工作,我们经常需要在我们推动任何更改之前获得法律许可。所以,我希望将我们的许多工作迁移到CMS环境,特别是WordPress,但我们需要具备一个分段环境的能力。是否有可能不发布页面,而是将其发布到临时环境,以便某个人可以像链接一样浏览网站。所以基本上有2个站点,一个站台一个活着?WordPress的分期环境

回答

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,但它们在跨托管环境中工作,他们不从是常见的分期迁移方案的变化,端口变化或子域交换的做法受到影响。 (有偏见吗?是的,我写了这个插件。)你会得到根相对的URL,它是重要的动态主机,其中根相对的URL不起作用(就像rss提要一样)。所有这一切仍然从网站迁移到不同的主机是移动wp-config.php文件的WWW根目录之外(一个级别是由WordPress的原生支持。),这样就可以保持在不同的服务器不同的副本。或者,您也可以使用基本的if语句通过服务器名称区分主机,并根据服务器定义主要的wordpress常量。最终你的内容,代码&数据将无缝过渡。

作为一个说明关注,引用的插件需要设置为wp-config.php文件的写权限,从生产或公开访问的服务器安全的角度来看一个非常不好的做法。也许你可以在一个受限的临时环境中轻松实现这个功能,但是你需要在生产转换中禁用并删除插件。

长话短说,是的,你可以在多个主机环境承载WordPress的。由于核心架构的原因,长期以来受到热捧的解决方案是特定于案例和选项限制的。但框架足够灵活,可以克服核心赤字。考虑到核心开发人员为克服级联问题而不断花费的精力,此核心设计决策可能会在未来某个时候发生变化。但也有虔诚的绝对网络宗教捍卫者会暂时保持这种做法。也许一个支持本地服务器迁移的不同平台(选择它们中的任何一个,因为大多数都会这样做)现在对你来说会是更好的选择。 https://de.wordpress.org/plugins/wp-staging/

披露:

1

Greg, 一个更好的具有分段环境的CMS将是Silverstripe(silverstripe.org)。这cms允许您浏览整个中转站点。

+0

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

2

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

0

如果您需要使用WP,并且只需要发布一个或几个页面从分段到活动站点,为什么不在需要发布的页面上实现一种标签(由活网站访问者看到)?简单地调整你的模板来显示标记或不是页面,你就完成了!然后,您只能使用一个网站并在其上维护公开和未批准的网页。

你也可以维护你的网站(舞台)的本地副本,并有一些脚本将它(整个)上传到你的主机 - 容易自动化任务。在这种情况下,您可能需要考虑将整个网站渲染为HTML页面并将这些HTML上传(简单的rsync)到托管 - 因为没有动态脚本会在那里,因此活动网站将很难破解!

但也许你真的不应该选择WP?有很多CMS支持write-approve-publish方案。

1

我认为你可以尝试使用一些插件。 例如(官方wordpress插件回购快速搜索)wp-deployDev and Staging Environment Plugin(也许过时)。

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

0

你可以用只有两个点击这个插件的帮助下创建一个WordPress临时环境,我这个插件的作者。所以问我一切。