人们如何处理内容管理系统的生产分阶段?

33

我为了娱乐而涉足网站开发技术(是的,我应该多出门),但对于生产环境分阶段(即开发、测试、性能和生产环境)的清晰支持的缺失感到有些震惊。实际上,“支持”这个词都不太适用;内容管理系统似乎在积极反对努力实现干净的分阶段。

目前我正在使用Drupal。我很难找到社区如何解决这个问题的信息。我看到的大部分帖子都建议在生产系统上复制开发中进行的步骤(读了这些帖子,我寿命缩短了一点)。我还听说过将生产数据推送回开发人员,以便他们添加增量功能。这肯定不是正确的做法,如果客户不想让您将其数据拉回到您的开发环境呢?

因此,最后我的问题是:

你是如何管理CMS的真实世界生产分阶段问题的?

我来自一个推向生产就像送人上月球的背景,所以我可能需要放松一下。然而,我仍然对包括源代码控制、允许进行生产回滚的答案和测试感兴趣。


4
+1 是为了弥补缩短的寿命,这也让我感到震惊。 - iftheshoefritz
3个回答

10

我已经回答了有关数据库部署策略的问题

还有一个问题涉及代码部署。

在我工作的地方,我们正在进行一个相当大的Drupal部署。我们大致拥有以下设置。

所有开发人员都有一个本地沙盒(Drupal + DB)。他们提交的代码会被共享给其他所有开发人员使用的分支(我们大约有15个人)。这包括通过更新功能进行的配置更改。

当开发人员执行svn up时,他们还会运行update.php以在本地执行任何配置更改。

我们有一个冲刺测试系统,它运行simpletest并可用于用户测试。

在冲刺结束时(我们使用scrum),我们将分支合并到主干,并在此上运行测试。

然后,我们将其标记为发布并将其部署到现场(使用Capistrano),最后在现场运行update.php以将配置更改应用于现场。

任何紧急修复都会从主干部署到现场作为点版本7.1等。

如果您需要更多详细信息,请留言。


+1 for the links. 我喜欢使用模块进行更新。您对这个过程有什么改进的建议吗? - reccles
你的开发和部署设置真的很酷。你有没有关于如何将所有这些工具整合在一起的链接或文章?Capistrano、simpletest等等?你使用过Cruise Control吗?有趣文章的指针会很不错。 - Pasta
@Pasta 我觉得你可以在这里看到一个概述 http://www.archive.org/details/TransformingTheEconomistOnlineusingDrupal - Jeremy French
1
@Ryan 我们面临的最大问题是在我们的集成服务器上增量运行更新,但在实际应用中作为批处理运行。这可能会表现出略微不同的行为,因此我们正在建立一个实例,在其中每天导入实时数据并测试更新是否作为批处理正常工作。 - Jeremy French

7
在花费了几周时间克服Drupal的学习曲线之后,如果您正在构建一个复杂的网站,“太多配置存储在DB中”的问题会让人非常不安。看看Development Seed正在做的工作,以解决这个问题。他们领导开发ContextFeaturesSpaces模块,这些模块共同工作,将配置数据存储在模块中(而不是DB中),以便可以与代码一起进行版本控制。

1
很棒的回答,Development Seed是那些可爱公司之一 ;) - sepehr
感谢开发种子和Sepehr Lajevardi对他们的积极反馈,为标志牌加上+1个火焰图标。 - therobyouknow

2

目前我正在使用Drupal。我很难找到社区是如何解决这个问题的。

这是Drupal的一个弱点;它不能很好地处理这个问题。这特别难以解决,因为Drupal的大部分配置都存储在数据库中。


1
你知道有更好的CMS吗?还是只能自己动手写了。 - reccles
4
在我的经验中,大多数开源CMS都存在这个弱点,所以我不太愿意涉足这个领域。个人而言,我更喜欢自己开发,但有很多理由不能把这作为最佳方案。如果你看一下 CMS 以外的东西,Rails拥有非常不错的部署流水线。虽然它不是PHP,但你或许可以借鉴一些概念。 - troelskn
@troelskn 谢谢,我会去看看 Rails。就像我在帖子中提到的那样,这只是闲逛而已 :) - reccles

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