飞川科技论坛

标题: VS2010 Web部署 [打印本页]

作者: admin    时间: 2010-10-14 16:47
标题: VS2010 Web部署

[原文发表地址]:VS 2010 Web Deployment

[原文发表时间]:2010/7/29 11:36 PM

这是我正在写的关于VS 2010和.NET 4文章系列的第二十五篇。

今天的文章是关于我们在web部署方面功能改进的几篇文章中的第一篇。这里我会概述几个关键改进,后续文章里会详细介绍每一个功能改进以及使用它们的最佳方式。

让Web部署更加简单

所有(至少是成功的)项目都必须要将web程序部署到服务器上。工欲善其事,必先利其器——特别是在手工部署的情况下。

VS 2010包含了一系列便于你发布ASP.NET web程序的改进——允许你创建自动化部署,便于重复部署过程。不只是发布你的网站内容,还支持自定义web.config文件的设置,部署或更新你的数据库,并管理网站其他的依赖项。你可以手工启动部署过程——抑或通过自动化脚本,抑或作为自动生成的一个步骤,抑或作为独立环节整合进一个流程当中。

下面是关于VS 2010里关键几个新的web部署功能的概览,我会在后续的文章里详细介绍每一个功能的用法和自定义它们的方法。

新的“发布Web”对话框

Visual Studio 2010添加了一个新的“发布Web”对话框,你能通过它将web应用程序快速部署到远程服务器上。

在解决方案资源管理器里,右击一个ASP.NET 网站项目节点,然后选择右键菜单里的“发布 …”项就可以打开这个对话框。

单击它会弹出“发布Web”对话框,你可以从中设置发布地点等信息。

配置和保存一个部署方案

你只需要设置一次发布方案——取个名字并保存这个“发布配置文件”,以后就可以重用设置了。

在上面我创建了一个“ScottGu Site”的配置文件,设置它通过FTPS(启用了SSL的FTP协议)部署到远程服务器上。要通过FTPS部署的话,在下拉列表里选择“FTP”节点,然后在即将部署的服务器地址前加上“ftps://”前缀就好了。

请注意要么你在每次部署的时候都重新输入密码,要么将密码存在一个保险的地方以备后用(选中“保存密码”复选框)。

Web部署

除了支持FTP/FTPS以外,VS 2010还支持一个叫做“Web部署”的更强大的部署机制。Web部署(以前称做MSDeploy)提供了一个比FTP方式更全面的发布和部署机制。它不仅允许你发布文件,还允许你发布IIS Web服务器设置,数据库结构和数据,更改数据库的脚本,安全访问控制列表以及等等等,点点点。

Web部署既可以将程序部署到单个服务器上,也可以部署到Web农场(web farm)里的多个服务器上。现在很多不贵的Windows主机服务器提供商(有些人便宜到一个ASP.NET +SQL帐号每月只要3.5美元) 也支持Web部署。在这个页面上你可以找到很多很好的支持Web部署的ASP.NET主机提供商:http://asp.net/find-a-hoster

一键发布工具栏

单击“发布Web”对话框上的“发布”按钮就可以将一个Web应用程序(还有相关的数据库结构和内容)发布到远程web服务器上了。

VS 2010还支持一个“一键发布”工具,你可以把它添加到IDE界面上快速发布和重新发布你的网站项目,这样就不用打开“发布Web”对话框了:

只要在工具栏的下拉列表里选择好你的发布配置文件,然后点击右边的发布图标就可以开始部署你的程序了。

Web.config变形记

在很多现实情况中,你在开发时用的web.config文件和作业部署时用的是不同的文件。一般来说你会改变环境设置,比如数据库连接字符串,确保调试功能被关闭了,启用自定义错误页面,这样一来终端用户(还有黑客)就看不到你应用程序的内部工作方式了。

VS 2010现在使你在发布/部署网站时,更改和调整web.config文件的过程变的更容易。具体来说, 你现在可以根据编译设置指定专门的转换文件,这样你在部署程序前就可以预先自定义web.config文件:

你可以为每一个Visual Studio编译环境维护一个单独的转换文件。比如说,你可以给项目或解决方案添加“Debug”,“Staging”和“Release”编译设置—这时VS会为你维护三个转换文件。VS在部署的时候,会根据当前的VS编译环境选择合适的web.config转换文件。

在后面的文章里,我会详细解释web.config转换的方式。

部署数据库

当使用Web部署选项发布网站时,除了web应用程序的文件以外,VS 2010还允许部署程序的数据库。这个数据库部署方式可以包括数据库结构和数据,而且也可以包括更新现有数据库的变更脚本。

VS 2010的ASP.NET Web工程的“项目属性”配置页包含了一个特殊的页面,用来设置部署数据库的方式:

在后面的博客里我会详细解释数据库部署。

Web部署包

VS 2010支持一个打包功能,它能将你的ASP.NET Web程序(包括它用到的文件例如web.config,数据库,访问控制列表等)打包成一个.zip文件包。你可以把它交给网管,他既可以通过IIS管理工具,也可以通过一个命令行/PowerShell脚本部署网站。

这个部署包里面的应用程序设置(比如文件路径、数据库连接字符串等)是可以修改的。当使用IIS 7管理工具时,安装向导可以提示管理员修改每一项设置—这样为你准备了清晰的自定义体验,而你不需要写任何的代码来做这件事。当然啦,这些设置也可以在部署时,作为命令行或PowerShell脚本的参数传入。

要在VS 2010里创建一个Web部署包,只需右击解决方案资源管理器里的ASP.NET Web工程节点,选择“生成部署包”菜单项就可以了:

这样做会编译程序,执行相应的web.config转换,也许还会为你的数据库结构和数据创建.sql脚本,然后将它们统统打包进.zip部署包。在那个.zip文件旁边,你可以找到一个部署脚本,它是将包自动部署到远程服务器上用的。

我将在后面的文章里深入讲解创建web部署包的过程。

与Team Build的集成

上面我说的VS 2010 web部署的大部分功能都是建在MSBuild任务(Tasks)和目标(Target)之上的。TFS的“Team Build”功能用的也是MSBuild,支持每晚编译,增量编译及持续集成。这也就意味着你可以在 Team Build环境里创建部署包并自动发布你的web程序。

我将在后面的文章里深入讲解启用这个功能的方法。

总结

今天的文章只是泛泛地讲了一些VS 2010 web新的部署功能。上面我谈到的所有功能都可用在VS 2010和免费的Visual Web Developer 2010 体验版上。

希望今天的文章可以描绘出部署功能的一个框架,帮助你理解它们对你的价值。后续的文章里,我会深入讲解使用它们的方法。

希望这能对您有所帮助。






欢迎光临 飞川科技论坛 (http://www.flysoft.cn/bbs/) Powered by Discuz! X3.2