工具和方法

时间:2009-10-11 13:53:05

标签: mysql svn deployment project-management

您会推荐或使用哪些工具和程序来帮助简化以下方案:(我知道它很长,但感谢任何帮助)

我在一个拥有我们公司开发的电子商务应用的团队中工作。它是一个合理标准的LAMP应用程序,我们已经开发和关闭了大约3年。我们在测试域上开发应用程序,在这里我们添加新功能并修复错误等。我们的错误跟踪和功能开发都在托管的subversion解决方案(unfuddle.com)中进行管理。当报告错误时,我们在测试域上进行这些修复,然后在我们很高兴修复错误时将更改提交给svn。我们按照相同的步骤添加新功能。

值得指出的是我们的服务器系统和应用程序的一般架构。每次开发新功能时,我们都会使用我们的应用程序(始终是我们控制的服务器)将此更新推送到所有站点。使用我们系统的每个站点实际上对95%的代码库使用完全相同的文件。我们在每个站点中都有几个文件夹,其中包含定制到该站点的文件--css文件/图像等。除此之外,每个站点之间的差异由每个站点数据库中的各种配置设置定义。

这将进入实际部署本身。当我们准备推出某种更新时,我们在测试站点所在的服务器上运行命令。这将执行复制命令(cp -fru / testsite / / othersite /)并通过每个vhost强制根据修改日期更新文件。我们托管的每个附加服务器都有一个vhost,我们将生产代码库与同步,然后我们在该服务器上的所有站点上重复复制过程。在此过程中,我们移出了我们不想覆盖的文件,并在复制完成后将其移回。我们的rollout脚本执行许多其他功能,例如应用SQL命令来更改每个数据库,添加字段/新表等。

我们越来越担心我们的流程不够稳定,不容错,也是一种蛮力方法。我们也意识到我们没有充分利用颠覆,因为我们有一个位置,即在我们不使用分支或标签时,处理新功能会阻止我们推出重要的错误修复。我们在服务器上进行了如此多的文件复制似乎也是错误的。我们也无法轻松地对刚刚推出的内容进行回滚。我们在每次推出之前都会执行差异,因此我们可以获得将要更改的文件列表,以便我们知道之后已经更改的内容,但回滚过程仍然存在问题。就数据库而言,我已开始将dbdeploy视为一种潜在的解决方案。我们真正想要的是关于如何改进文件管理和部署的一般指导。理想情况下,我们希望文件管理与我们的存储库更紧密地链接,因此转出/回滚将更多地连接到svn。比如使用export命令确保站点文件与repo文件相同。如果解决方案可能也会停止我们服务器周围的文件复制,也会很好。

忽略我们当前的方法,听听别人如何处理同样的问题真是太好了。

总结......

跨多个服务器创建文件的最佳方法是什么?与svn保持同步?

我们应该如何阻止文件复制?符号链接/其他东西?

我们应该如何构建我们的仓库,以便开发新功能并修复旧功能?

我们应该如何触发推出/回滚?

提前致谢。

2 个答案:

答案 0 :(得分:4)

对于回滚和测试新功能,分支和标记的标准subversion概念应该足够了:

  • 始终在推出之前创建标记,并推出该标记。回滚将意味着返回上一个标记。
  • 在分支机构中开发新功能并在完成时合并到主干;或者,在trunk中开发新功能,并拥有一个仅接收错误修复的维护分支。
  • 将每站点文件保存在subversion的不同目录中,并使用每个站点上的配置文件或符号链接让站点引用其特定文件。

为了减少文件重复,我建议使用NFS(在特定中,当所有站点都是同一主机上的虚拟机时 - 使主机成为NFS服务器,以及站点为NFS客户端;或者,make NFS服务器的专用VM)。要部署更新,只需在NFS服务器上安装新文件;客户将自动获取更改。

如果您需要多步更新(例如,首先更新每个客户端中的数据库,然后更新代码),您仍应使用NFS,但要添加符号链接。将新代码签出到NFS服务器上的单独目录中,然后转到所有VM,更新数据库,并更改VM中的符号链接以指向新代码。完成后,删除NFS服务器上的旧代码。

答案 1 :(得分:0)

您可能希望查看本文,其中介绍了PHP应用程序的部署。 http://blog.digitalstruct.com/2009/10/07/deployments-php-applications/

具体来说,它提到了一些可能有用的工具:

  1. Phing
  2. Ant
  3. Liquibase
  4. DbDeploy
  5. 我也听过一些人提到使用capistrano,所以你可能也想看一下。

    编辑:

    从查看此民意调查http://twtpoll.com/3zwfox看来,SVN导出是社区中用于部署php应用程序的常用方法。此民意调查似乎已用于此幻灯片共享演示文稿http://www.slideshare.net/ccornutt/taming-the-deployment-beast