Umbraco部署内容的最佳实践

时间:2014-11-27 15:50:57

标签: c# asp.net-mvc umbraco

所以,我有一个Umbraco的舞台和现场环境。

我们的内容人员会在Live中进行更改,因为他们需要立即看到某些内容。

现在,为了支持这一点 - 我目前正在复制&将他们所做的事情粘贴到我们的临时环境中并进行源代码控制..

有更好的方法吗?

2 个答案:

答案 0 :(得分:14)

据我所知,我建议使用相同的数据库设置暂存站点和生产站点。除非您使用ContentService将内容提取到模板中(您应该避免因为它访问数据库),所以您的umbraco站点应该只访问App_Data / umbraco.config xml缓存并检查App_Data / TEMP / ExamineIndexes中的索引。这意味着即使您的登台和生产站点将共享同一个数据库,您在登台站点上所做的更改也不会显示在生产站点上,直到您登录并重新发布整个站点或重新发布特定节点为止

这种方法绝对不适用于所有情况。例如,我们的客户不会因为安全原因而共享数据库。他们希望尽可能多地与生产站点和临时站点分离。如果网站上的内容对时间非常敏感,我也不会使用此功能。如果内容在准备好之前意外发布对您的客户来说非常糟糕,这可能不是最好的解决方案。我们还没有遇到任何麻烦,我们还没有准备好自动刷新xml缓存,但我不相信缓存可以保护敏感信息不会被提前发布。

我们一直在使用它,并且非常满意简单性。移动部件非常少,因此与下面的一些其他部署方法相比,这是一种非常安全的部署方式。为了使我们的客户更方便用户,我们在登台网站上设置了一个按钮,当点击该按钮时,将重新发布生产站点上该节点的缓存。我希望将其作为一个软件包发布,并在准备就绪时通过链接更新此答案。

<强>更新 我会考虑上面的方法实验。在umbraco 7的后续版本中,Umbraco已经在负载平衡场景中投入了大量的工作,他们所完成的一些工作可能会使我所说的无效。如果您决定试一试,请记住这一点。

以下是一些在处理内容部署时需要考虑的其他工具:

传送带是一个年轻的包(至少现在是这样)。它有一个仪表板,您可以使用它来有选择地从生产站点导出内容。然后,您可以登录暂存站点上的后台并导入内容。我这个月第一次尝试这个。到目前为止,它看起来非常有前途,但我无法从经验中给你很多建议。

Courier 旨在成为内容部署的终极解决方案。它是为数不多的内容部署选项之一,允许您有选择地仅部署您想要的内容。您可以右键单击内容并从分段到生产或从生产到分段进行部署。 Courier还会尝试检测依赖关系并将其与您的内容选择一起部署。 Courier的诀窍在于,当出现问题时,这是一个大问题。网站可能会出现故障,根据出现的问题,可能需要花费大量时间来恢复它们。 Courier可能会尝试部署它检测为依赖项的文档类型,并意外破坏事物。我还发现需要大量培训才能正常使用。我没有取得很大的成功,允许非技术人员使用Courier。如果您使用Courier,请设置测试环境并玩一会儿。确保您知道哪些工作流程适合您,哪些会破坏事物。快递会让你在脚下射击自己。 更新: Umbraco一直在使用Courier为他们的新Umbraco服务。他们一直在寻找和修复很多错误。 2015版Courier更加稳定。如果您想使用Courier,请确保您使用的是Umbraco 7的最新版本。我最近在Courier版本2.50.1上进行了一些测试。好多了。我仍然谨慎行事。 另一个更新 Umbraco越来越依赖Courier。他们宣布了一个名为Umbraco Deploy的新的重新设计的Courier。我很期待。一旦发布,这将是比Courier更好的选择,我希望它的功能类似。

Umbraco Cloud 是整个SaaS设置,Umbraco一直在努力工作。他们可以在Azure中托管您的Umbraco站点,并且拥有非常简洁的UI和流程,不仅可以部署站点的内容和媒体,还可以部署所有代码,文档类型和数据类型。这仍然有点新,很多非常复杂的网站可能不适合Umbraco Cloud。此外,严重依赖文档类型继承与文档类型组合的站点可能存在问题。据我所知,Umbraco Cloud适用于中小型网站,但Umbraco确实有一些非常大的网站托管在Umbraco Cloud上。 Umbraco Cloud在很大程度上依赖于基于Courier的新Umbraco Deploy。如果您的网站遇到新Courier问题,可能会在Umbraco Cloud上出现问题。 uMirror 是我从未使用过的,但它存在且可能有用。

uSync内容版是另一个我从未使用过的版本。我们确实有使用常规uSync的经验,并且我发现作者对问题和问题非常敏感。

答案 1 :(得分:2)

听起来你正在寻找像uSync.ContentEdition这样的东西,它允许你将数据库内容导出到磁盘。 您可以将文件复制到暂存,然后将它们导入到数据库中。 但是要小心,作者自己说它是实验性的(但越来越好)&#34;。

另一种选择是将数据库本身从实时复制到暂存,假设可以覆盖临时数据库。这是我要采取的方法。