推动从开发/舞台/测试环境到生产的网站更新的最佳实践是什么?


8

现在我有一个运行基本LAMP配置的开发服务器。生产服务器是slicehost。但我想知道将代码/ db的实例推送到阶段dev> stage> production的最佳方式是什么。这是否与你如何创建阶段有关?

如何在不使网站失效的情况下进行操作?如果你不做负载平衡,甚至有可能吗?

我知道这有些一般,我只是希望指出正确的方向。

1

我想研究某种自动化的“构建”式灯具环境,在这种环境中,您有用于为每个环境打包和准备发布的脚本。

我认识到PHP没有实际的构建,但您可以设置自动化来更改任何配置或设置问题,并将所有内容保存到准备好实施的文件夹中。

我不相信如果没有负载平衡/ Web农场风格的环境,您可以完全消除停机时间。然而,在我的书中最简单的方法是建立一个一致的代码准备过程并多次测试过程。自动化将在那里帮助。至于实际复制文件的行为,以及我不知道使用FTP或任何方便的东西。也许提出一个加载消息。再次,这可以全部编写出来。

最后要记住,因为PHP没有被构建,它可能对您有效地跟踪现在和现在发生了什么变化,并且只会移动这些文件之间的差异。有时候,这可能会增加不必要的复杂性。


2

我使用.htaccess创建一个“维护模式”jiffy,只有我的IP可以在更新时看到主站点。每个人都可以看到一条短消息,以便他们知道所有事情都应该在几秒内恢复在线。

然后我:

  1. 进行任何DB编辑
  2. SVN导出/上传文件
  3. 运行自动化测试,并给予尽可能快速查看,以确保没有什么可怕错误
  4. 还原了的.htaccess

这是一个给定的,但你应该测试的东西,就像你可以在本地脓前欢迎来到现场服务器。有些人使用两台实时服务器(如生产服务器上的加密名称子域)作为实时更新的测试区域。这可以减少主站点的实际停机时间。

我要强调的是,它不是推送更新到实时服务器是很重要的,无需关闭事前(特别是如果你使用的二进制文件ALA ASPNET),因为用户试图使用该网站,而你更新会得到可怕的错误信息和你可能会被锁定的文件。

  0

我会补充一点,htaccess的,换出,DB-编辑,svn签/文件的上传和自动化单元测试都可以编写脚本,以便更新发生了,要快得多。 23 9月. 082008-09-23 19:14:11


1

我不知道这是个好主意,但是如何从源代码管理系统自动签出?也许有几个开发部门 - 测试出血端,开发维护/小改进,生产代码生产。只要开发稳定,就将其合并到生产分支中,并由生产机器定期自动检出。


0

只要将文件推送到所有Web服务器,我就会发现很好的旧的robocopy能做到这一点。当然,我的开发/舞台/产品环境完全相同。只需建立一个临时页面,告诉用户该网站会马上回来。


0

现在我们使用与焦油了我们修改过的文件的配置文件的一系列shell脚本,他们scp将集群中的每个服务器,然后解压缩他们,一旦他们在那里。这种方法当然有其缺点,我们正在考虑一种方法,其中每个服务器成员都安装了一个svn客户端,并且一旦我们标记新版本,我们就会将生产服务器上的工作副本切换到该新标记。当然,我们现在在我们的维护时间内发布,因此我们不必为我们的用户做任何特殊的事情(无论如何他们都会看到维护页面)。


0

我在我的核心配置的选项,以允许访问该网站或预设的URL列表我也可以把所有用户(和停止用适当的HTTP代码的任何API流量)。

这些URL是链接到静态html文件,向用户解释发生了什么。

启用此功能后有到数据库或任何文件中没有请求的所有请求被发送到HTML文件之前,可以发生,给了我一个“清晰的”太空部署任何更新。


0

apache蚂蚁与svn和ftp的任务为我支付账单。甚至有人用ANT来做数据库分析,但我倾向于亲自观察这些数据。一旦你有一个干净的,并推动构建所有你的位置的FTP,你会惊讶于它是多么容易。