什么是部署ASP.Net Web应用程序的好方法?

时间:2020-03-05 18:53:27  来源:igfitidea点击:

当前,我们通过创建数据库并通过查询分析器运行SQL脚本来部署Web应用程序。然后,我们复制"发布网站"的输出,并在IIS中设置该网站。

我们已经在Visual Studio中看到了websetup,但是该部分似乎很少记录。例如,我们不清楚如何向用户询问SQL Server的IP和密码。我们还倾向于以这种方式将网站部署到http://example.com/project之类的文件夹下,而不只是http://example.com。

然后是未安装AJAX.Net或者未应用某些补丁或者其他补丁的问题。

到目前为止,我们已经可以物理访问服务器了。尽管我们将要发货CDROM,但很快。手动干预和自动化之间的实际权衡是什么?

解决方案

回答

我们是否尝试过使用Web部署项目?现在也支持VS 2008.

回答

避免部署Visual Studio,并尽可能实现自动化。 Web部署项目和NAnt可以成为朋友!

简而言之,我们的部署设置:

  • 我们使用RedGate SQL编写开发数据库和实时数据库之间的差异的脚本。
  • 一个NAnt生成文件,该文件调用MSBUILD来构建Web部署项目(.wdproj),将生成的已编译Web应用程序压缩(连同SQL更改脚本一起),然后将该zip文件上传到服务器。
  • 在服务器端,还有另一个NAnt构建文件,该文件使应用程序脱机,备份数据库,备份网站。运行SQL更改脚本,解压缩新版本并将应用程序联机。

第3步通常是"手动"运行(双击),但有时安排在深夜。我们可以通过CDROM进行完全相同的操作,甚至可以编写一个很小的Windows Forms应用程序作为包装器。

如果我们有兴趣,很高兴提供NAnt脚本的详细信息。

回答

我主要将ASP.NET应用程序部署到Linux服务器。这是我的标准工作流程:

  • 我使用源代码存储库(例如Subversion)
  • 进行构建(创建DLL)
  • 将文件过滤为基本内容(例如,删除代码文件)
  • 备份数据库
  • 将文件部署到Web服务器的当前日期命名的目录中
  • 如果部署中包含新架构,则更新数据库
  • 将新安装设为默认安装,以便下次安装时使用

签出是使用Subversion的命令行版本完成的,构建是使用xbuild完成的(与Mono项目中的msbuild相似)。大多数魔术都是在ReleaseIt中完成的。

在我的开发服务器上,我基本上是持续集成的,但是在生产方面,我实际上是通过SSH进入服务器并通过运行脚本手动启动部署。我的脚本被巧妙地称为"部署",这就是我在bash提示符下键入的内容。我很有创造力。不是。

在生产环境中,我必须输入两次" deploy":一次是检出,构建并部署到已过时的目录,一次是将该目录设为默认实例。由于目录已过时,因此只要在相关目录中键入" deploy",我就可以恢复到以前的任何部署。

初始部署需要花费几分钟,而还原到先前版本则需要花费几秒钟。

对我来说,这是一个不错的解决方案,它仅依赖于三个命令行实用程序(svn,xbuild和releaseit),数据库客户端,SSH和Bash。

我确实需要在CodePlex上更新ReleaseIt的副本:

http://releaseit.codeplex.com/