自动部署Web应用程序?

时间:2008-09-05 13:18:23

标签: .net php deployment web-applications

我的团队目前正在尝试自动部署我们的.Net和PHP Web应用程序。我们希望简化部署,并避免由于手动操作而导致的麻烦和许多麻烦。

我们需要一个解决方案,使我们能够:

- Compile the application  
  - Version the application with the SVN version number
  - Backup the existing site
  - Deploy to a web farm

我们所有的应用都使用SVN来源控制,我们的.Net应用使用CruiseControl。 我们一直在尝试使用MSBuild和NAnt部署脚本,但成效有限。我们过去也使用过Capistrano,但希望尽可能避免使用Ruby。

是否还有其他可以帮助我们的部署工具?

9 个答案:

答案 0 :(得分:32)

谢谢大家的善意建议。我们检查了所有这些,但经过仔细考虑后,我们决定使用CruiseControl,NAnt,MSBuild和MSDeploy的组合来推广自己。

这篇文章有一些很好的信息: Integrating MSBuild with CruiseControl.NET

以下是我们的解决方案的工作原理:

  • 开发人员构建应用程序的“调试”版本并运行单元测试,然后检入SVN。
  • CruiseControl查看更新并调用我们的构建脚本...
    • 在构建数据库上运行任何新迁移
    • 使用build server config
    • 替换配置文件
    • 构建应用的“调试”配置
    • 运行所有单元和集成测试
    • 构建应用的“部署”配置
      • 使用当前主要/次要版本和SVN版本对DLL进行版本控制,例如: 1.2.0.423
      • 将此新版本移至构建服务器上的“release”文件夹
      • 删除不需要的文件
    • 如果需要,在构建服务器上更新IIS

然后,当我们确认所有内容已准备好进入实时/暂存时,我们会运行另一个脚本:

  • 在live / staging服务器上运行迁移
  • MSDeploy:归档当前的实时/暂存站点
  • MSDeploy:从构建同步站点到实时/暂存

现在进入这个阶段并不是很好,但它现在大部分都像魅力一样:D

在我们对流程进行更改时,我会尝试更新此答案,因为现在似乎有几个类似的问题。

答案 1 :(得分:3)

我已经使用Visual Build Pro多年了,它非常灵活且易于使用,并且内置了许多标准操作(如您提到的那些)。

答案 2 :(得分:3)

我使用Puppet,Makefile来构建RPM,Bamboo为我这样做。我的系统没有直接应用,我不熟悉Windows世界,但有一些可转移的模式。

我的make setup允许我为构成我的应用程序的所有内容(php libs,php网站,perl模块,C app等)构建RPM。这可以手动调用,也可以通过Bamboo调用。我将这些RPM转移到yum repo和puppet句柄中,确保在群集中安装最新(或正确)的软件版本。

你能自动将软件包构建到MSI中吗?我认为Puppet可以在Windows中管理软件包和版本的安装。

答案 3 :(得分:2)

我为此使用msdeploy。它完美无缺。

关于Ant;对于.NET平台,我们有NAnt,您可以将它与MSDeploy结合使用;您可以从Nant脚本中调用MSDeploy。

编辑: 只是为了说清楚;你可以用msdeploy做任何事情。使用Nant不是必需的。

答案 4 :(得分:1)

我们设法将带有UNC地址的-source:dirpath命令用于带有msdeploy的服务器,而不是使用xcopy。关键是ignoreAcls = true并删除msdeploy字符串中对用户名和密码的调用:

msdeploy -verb:sync -source:dirpath=\\build\e$\app -dest:dirpath=\\live\d$\app,ignoreAcls=true

该示例将站点从构建服务器的E驱动器部署到我们的实时服务器上的D驱动器。在实时服务器上公开共享或此级别的磁盘访问有一些安全注意事项。我们目前正在考虑使用受限访问共享文件夹。

然后,我们将此输出通过管道传输到日志文件,然后将其移动到备份存档以供参考。日志文件记录了移动的文件以及何时移动。使用输出管道命令继续上面的示例:

... > E:\archive\msdeploy.log

答案 5 :(得分:1)

没有人提到Final Builder http://www.finalbuilder.com。它与Visual build Pro相同。用于创建自动构建部署线束的良好GUI

答案 6 :(得分:0)

Fabric。似乎小,简单,程序化。用Python编写,因为Ruby是禁止的(为什么?)。

答案 7 :(得分:0)

查看Setup Factory(来自靛蓝玫瑰)。它的功能非常强大。它使用Windows安装程序API。它可以做你需要的。

答案 8 :(得分:0)

Nant应该存在的唯一原因是你有一个类似于Ant的框架,我们可以使用.NET语言编写任务。如果您不想让纯.NET开发人员编写自定义任务,我看不出您无法使用Ant的任何原因。仅仅因为您使用.NET语言编写应用程序,并不意味着您必须使用.NET构建工具。

相关问题