关于部署:您使用什么方法将ASP.Net应用程序部署到野外?

What method do you use to deploy ASP.Net applications to the wild?

目前,我们部署编译的ASP.NET应用程序,方法是在本地发布网站,并通过电子邮件将zip文件发送给系统管理员,其中包含一组(通常)冗长的部署说明。这是因为我们第一次将ASP.NET应用程序部署到客户时,开发人员和测试IIS实例是相同的,我们无法将站点部署到同一台计算机上两次。这为所有后续项目的部署设置了基调。

我现在正在评估我们的部署方法,并特别关注内置的部署工具;特别是我正在关注自定义安装任务,并尽可能多地使用标准安装程序功能(主要是用户界面)。

其次,我正在考虑合并部署和自动更新。

如何在组织中部署Sofware?你使用什么工具,最经常遇到什么问题?


我们有专门的开发、测试、阶段和生产服务器。

我们也有一个专门的机器,运行巡航控制。

巡航控制配置为持续集成构建,在代码签入后运行。它还针对单独的开发、QA、阶段和生产任务进行配置。

要部署到开发,首先从SVN中检索并构建代码,然后将"预编译的Web"文件夹复制到开发网站,并将Web服务项目复制到开发应用程序服务器。Cruise Control还配置为在构建开始之前"标记"源代码,这样我们可以稍后重新生成构建,或者在需要执行热修复时从标记中分支。

要部署到QA,文件将从开发机器复制到QA机器。

同样,要部署到阶段,文件将从QA机器复制到阶段机器。

最后,为了部署到生产环境中,文件将再次从后台机器复制到生产环境中。

为了配置每个环境,我们有一个自定义工具,它是每个环境的巡航控制任务的一部分,用于修改连接字符串、"debug=true_false"、"customErrors=off_remoteOnly"和其他特定于环境的设置。

因此,每个环境都可以通过巡航控制仪表板上的按钮进行部署。

一个警告是,我们目前在巡航控制配置文件中配置了生产数据库密码……最好把它移到别处!

最后,让我补充一下,即使我们的生产机器在专用的托管设施中,服务器也可以从我们的巡航控制机器访问,这使得进行生产部署非常容易。唯一的手动步骤是加密web.config文件并删除巡航控制系统提供的"appoffline.html"文件。

如果这有帮助,或者你有任何问题,请告诉我。

谢谢!


1)使用msbuild生成项目

2)FTP文件到生产环境

3)手动复制/粘贴到每个Web服务器


对于Intranet站点,我们使用CruiseControl和SVN来自动重建站点。

理论上,如果可以将驱动器远程映射到客户端的内部网,那么可以通过VPN扩展此模型。或者更快速更脏的解决方案可能是使用类似syncback的工具来同步包含站点编译的DLL的远程文件夹。


我们使用Web部署项目和VS 2008项目从WebDeployment和其他项目的输出创建.msi。一个名为"安装"的普通Windows应用程序用于进行大量的数据库创建和准备工作,而不是尝试用自定义步骤自定义安装项目。这比自定义MS代码要容易得多。然后,此Windows应用调用用户需要的正确.msi文件。

Team Foundation Buy每天晚上运行以重建解决方案,并将所有内容复制到"发布CD"目录,任何人都可以访问并在最新的"发布"上进行测试。老实说,对于像我们这样的小团队来说,TFS构建有点过分,我使用它只是因为它是我习惯的。

在以前的一家公司中,我们使用了这个http://www.finalbuilder.com/,我可以推荐它,以便于使用和支持的软件数量。


我做了以下几件事:

1)使用Web部署项目来编译和清理构建,并在环境之间的配置发生更改时处理web.config节替换。2)使用nant以重复的方式进行所有的构建、归档和复制。

Web部署项目最终创建了一个MSBube文件,它可以用来代替NANT;但是,我来自Java背景,并且一直使用Ant,所以NATE是我在.NET中的首选项。如果您添加了nant contrib任务,那么您不仅可以部署文件,还可以处理诸如源代码管理(如果它不是默认任务的一部分)和SQL脚本执行之类的项目来进行更改。

目前我同时使用这两个选项。我的nant构建文件通过msbuild调用web部署项目。通过为每个环境设置Configuration Manager,它允许我自动管理web.config节替换,并且仍然可以相当好地控制对发布的复制和存档。

希望这有帮助。


使用复制Web工具部署Web应用程序
来自Microsoft培训工具包手册"基于Web的开发"的文本
如果您向许多用户提供Web应用程序(例如,允许用户从Web下载并安装应用程序),则Web安装项目非常有用。如果您负责为组织更新特定网站,则每次进行更新时都无法登录到Web服务器并安装Windows Installer软件包。对于内部应用程序,可以直接在Web服务器上编辑Web应用程序。但是,您所做的更改会立即在生产Web应用程序中实现,这包括可能存在的任何错误。要使自己能够测试Web应用程序,可以在计算机上编辑Web应用程序的本地副本,并使用"复制Web"工具将更改发布到生产Web服务器。还可以使用复制Web工具将更改从临时服务器发布到生产Web服务器,或在任意两个Web服务器之间发布。"复制网站"工具可以将单个文件或整个网站复制到源网站和远程网站或从源网站和远程网站复制。您还可以选择同步文件,这涉及到只复制更改的文件和检测可能的版本控制冲突,其中源站点和远程站点上的同一文件都已分别编辑。复制Web工具无法合并单个文件中的更改;只能复制完整的文件。