使用Microsoft Web Deploy技术自动部署 下载本文

使用Microsoft Web Deploy技术自动部署

[原文发表地址]:Automating Deployment with Microsoft Web Deploy [原文发表时间]:2010/9/13 1:40 AM

这是我写的关于VS2010和.Net4的博客系列的第28篇。

这篇文章继续以前博客,介绍关于我们在Web部署领域所作的改进。我在该系列的第一篇文章里,概述了VS 2010 Web部署技术的新功能。

今天的文章里,我会介绍Microsoft Web Deploy—一个采用全面的发布和部署机制的免费服务器技术。Web Deploy不仅仅让你发布文件—还可以部署数据库结构/数据,运行变更的数据库脚本,设置安全访问控制列表等等。所有这些部署步骤都可以用Visual Studio自动完成。

本篇文章将提供一个循序渐进的教程,教你如何在一台Web服务期上安装和启用Web Deploy。接着我们演示如何使用Visual Studio通过Web Deploy直接(将文件)发布到服务器上,以及如何使用Visual Studio创建自动部署你的应用程序的安装包。 Web Deploy—为什么你会喜欢它 部署一个Web应用程序或站点包含好几个步骤。您通常需要: 1. 拷贝文件和文件夹;

2. 提供数据库结构,或许还要生成一些数据库数据; 3. 在文件和文件夹上设置相应的读写和安全访问控制列表; 4. 安装和配置SSL认证;

5. 部署其它杂七杂八的依赖项(事件日志,GAC库,COM对象等等)。

手工执行上面的步骤又累又慢又危险(因为手工部署总是容易出错)。使用自动化流程,可以让你在一台服务器上快速维护和部署应用程序,减少出错的几率,并极大加快你在应用程序上的改动放到作业服务器上的周期。

Microsoft Web Deploy Web Deploy是由我的团队创建,用来改进Web部署的免费技术。它是运行在一台服务器上的部署服务,可以让你在本地或远程将程序部署到它上面。Web Deploy内置了在IIS里创建虚拟目录和应用程序、拷贝文件和文件夹、生成数据库(SQL Server和MySQL)、设置文件系统ACL的支持等等。(它甚至还内置了类似于设置注册表,注册COM组件等功能)。除了这些内置的部署功能,它还支持基于.NET的提供程序API,允许你创建和嵌入你自己的部署步骤—这样你可以按自己的方式自定义它。

Web Deploy的绑定协议是HTTPS—也就是说Web Deploy可以穿过防火墙(使部署程序到远程宿主服务器上简便、安全)。Web Deploy还同时支持管理员账号和非管理员账号的部署方案。非管理方案下,允许管理员在服务器上配置好Web Deploy,然后委托一部分部署工作给在作业服务器上没有管理员权限的程序员。这实现了一个非常安全并有弹性的部署方式。在本系列的下一篇文章里,我会讲到启用委托部署场景的配置步骤。 在Windows Server 2008上安装Web Deploy

在安装Visual Studio 2010(或Visual Web Developer 2010 Express)时,默认情况下会将Web Deploy安装到你的开发机上。它会在VS里提供创建Web部署安装包,还有将它们发布到启用了Web Deploy服务的远程机上要用到的东西。

下面是在一台运行IIS 7.x的Windows Server 2008或Windows Server 2008 R2作业服务器安装Web Deploy的步骤:

1. 在作业服务器上下载并运行Microsoft Web Platform Installer。

2. 在Web Platform Installer上点击―Web平台‖,接着点击―Web服务器‖下面的―自定义‖链接。选择―Web部署工具1.1‖还有―管理服务‖功能。

3. 点击―安装‖按钮。就会下载和安装Web部署安装包,并启用Windows内置的IIS管理服务功能。

在Windows Server 2008启用部署功能

现在我们已经装好了Web Deploy—下一步就是启用它。

Web Deploy支持管理员和非管理员部署(即委托部署)。在本文中,我将演示使用一个在服务器上有管理员权限的帐号启用部署。本系列的下一篇文章,我会涉及委托部署的启用方法。

1) 启用Web Deploy的第一步是打开IIS管理器(开始->运行->inetmgr.exe)。接着在主界面上双击―Management Service Delegation‖图标:

双击―Management Service Delegation‖图标后,会打开类似下图的页面。在动作面板上,点击―Edit Feature Settings …‖链接,打开―Edit Feature Settings‖对话框—选中―Allow administrators to bypass rules‖选项。这允许有服务器上管理员帐号的用户跳过Web管理服务的委托设置,而是使用管理员的权限进行操作: