配置 Web Deploy 的步骤 -摘自网络

今天的文章里,我会介绍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管理服务的委托设置,而是使用管理员的权限进行操作:

然后回到IIS管理器的主界面,并双击“管理服务”图标:

双击“管理服务”图标后会打开下面的页面。选中“Enable Remote Connections”复选框来启用远程部署。另外你也可以选择填写正在运行的管理服务的IP和端口号—还有允许那些客户端IP可以连接进来。你可以通过调整这些设置来限制访问部署服务的人员。

在“操作”页签点击“启动”连接就会在服务期上启动Web管理服务:

现在这台服务器已经使用管理员账号的Web Deploy安装了部署服务。

重要事项:一个需要关注的事情是你的服务器上是否启用了防火墙,或你的服务器在集群中的位置。管理服务默认使用HTTPS协议运行在8172这个端口。这个端口可能默认被你主机的设置关闭了。这样的话,要么你需要在防火墙/或宿主上打开它—要么选择一个允许的端口号。要测试管理服务是否可用,只需要打开浏览器并访问类似https://yourservername:8172/MsDeploy.axd 的链接就可以—如果你被要求提供用户名/密码,那说明它没有被防火墙阻挡。如果是超时则说明防火墙禁用了端口。

在非Windows Server 2008的操作系统上启用Web Deploy

上面的步骤演示了如何在Windows Server 2008或Windows Server 2008 R2操作系统上启用Web Deploy服务。IIS 7管理服务内置于这些操作系统里,Web Deploy可以直接用它。

如果你要在Windows 7,Windows Vista或者Windows Server 2003上尝试上面的步骤时,你会发现上面没有IIS管理服务(和在IIS管理器里的图标)。而你需要稍微改变一下上面的步骤来启用Web Deploy服务。

在Windows 7,Windows Vista和Windows Server 2003上启用Web Deploy

你可以使用下面的步骤,在Windows 7,Windows Vista和Windows Server 2003上启用Wed Deploy发布服务:

1) 打开一个管理员权限命令行窗口(即你需要右击并通过“以管理员身份运行”启动)。

2) 输入“net start msdepsvc”来启动“Web部署代理服务”:

3) 为了确认发布服务是否在运行,更换目录到“c:"Program Files"IIS"Microsoft Web Deploy”,然后输入命令“msdeploy –verb:dump –source:appHostConfig,computername=localhost”:

这会导致本地的msdeploy客户端连接到你刚刚启动的发布服务上,并打印出你Web服务器上ApplicationHost.Config文件的当前状态:

如果有很多东西显示出来,你就会知道所有的东西工作正常,而且你刚刚启用了Wed Deploy。使用这种方法不能启用“受托访问”(就是允许非管理员发布内容—我下篇文章会详细介绍到)—但是会允许有管理员权限的账号在这台机器上进行部署。

Visual Studio里使用“发布Web”对话框

现在我们有启动了Web Deploy的Web服务器,让我们试着在Visual Studio IDE上发布一些东西。

VS 2010包含了一个可以让你快速部署一个Web应用程序到远程服务器上的新“发布Web”功能。你可以在任何一个ASP.NET Web应用程序项目上通过右击(Web窗体和MVC),然后选择“发布”命令使用它:

接下来会打开“发布Web”对话框,用来让你配置发布设置。你可以使用这个对话框,通过FTP/FTPS, Web Deploy和FrontPage服务器扩展,将ASP.NET应用程序发布到远程机上。

我们在下拉框里选择“Web部署”选项,然后输入我们Web部署服务器的发布信息:

请注意你只需要输入这些设置一次—然后你就可以使用顶端的“保存/重命名/删除”按钮将它们保存为一个“发布配置文件”。发布配置文件允许你保存多个部署/发布选项,并可以在你要用的服务器之间快速切换。

下面是你可用选项的一些说明:


服务 URL:


这是Web部署管理服务的URL地址。如果你用的是 Windows Server 2008,那URL的默认格式是https://mysite:8172/MsDeploy.axd 。请注意协议是“https://”,而且端口号必须与你在上面启用IIS管理服务的端口号一致。

如果你在往Windows Server 2003, Windows 7或者Windows Vista的机器上部署,那么URL的默认格式是http://server-name (不是https—因为使用内置Windows身份验证发送的安全凭据是加密的)。你也不需要为Windows Server 2003, Windows 7或者Windows Vista的机器指定端口号。


网站/应用程序:


允许您指定远程服务器上要安装应用程序网站的名称(和可选的应用程序的名称)。你可以把你的项目发布为一个站点,这样你必须指定类似www.mysite.com的东西作为站点名,或者是“默认Web站点”,如果你只想发布到根目录上的话。

注意:指定的站点名必须与在IIS管理器里的站点名一致。因此如果你将www.scottgu.com站点在IIS注册时,用的是显示名称“ScottGu’s Site”或者“scottgu.com”的话,你必须确保在发布设置里指定的也是显示名称(即你要指定“ScottGu’s Site”,而不是www.scottgu.com)。如果你设置错误,你会收到一个远程代理“无法连接”的错误。

要么你可以使用类似“www.mysite.com/myapplication”或“ScottGu Site/myapplication”的值发布到一个子应用程序上,如果应用程序的/myapplication虚拟目录尚不存在,那么Web Deploy服务会先为你创建一个,然后将你的项目发布上去。

你也可以勾选“标记为目标上的IIS应用程序”来指明你要将这个子路经设置为虚拟目录(默认值)或是一个应用程序。


凭据:


如果你要向不属于你Windows域的远程机上部署,你需要在发布对话框里指明你的用户名/密码。用户名/密码要么映射到远程机的Windows账号,要么映射为IIS用户名(这样可以使用更有弹性的授权选项—我的下一篇文章会涉及)。

注意:除非你在远程机上安装了签过名的SSL认证,否则请勾选“允许不受信任的证书”复选框。默认情况下Web Deploy会安装一个唯一(而且没有签过名)的证书—如果你不勾选这个复选框,那么你就不能登录,因为VS不信任一个未签名的证书。


其它:


还有一个复选框,允许你指明“保留目标上的多余文件”与否。如果你不选它,那么在你发布的站点/应用程序的现有文件里,不在你的VS项目里的文件会被删除掉。

一旦你填好了发布设置,你可以点击“发布”按钮,连接到远程Web部署服务来将你的程序部署到指定的位置。Visual Studio的“输出”窗口会显示类似下面的输出,来解释部署步骤中执行的操作。

上面的项目是一个包含几个文件和文件夹的基本Web工程。Web Deploy会负责将所有的文件和相应的访问列表拷贝到远程服务器上(比如说:将"app_data文件夹设置为读/写)。本系列的下一篇文章里,我将介绍如何将部署数据库的操作包含在Web Deploy过程中—还有如何自动更换web.config的文件设置(例如连接字符串)。

我们已经将站点发布到远程机上。右键单击项目工程,再选一次“发布”命令就可以再发布一次—再次打开发布对话框(默认情况下使用上一次发布的相同设置)。另外,你也可以在VS 2010里启用“Web一键式发布”工具栏—它允许你在已存的发布配置文件之间快速切换,点击右边的“发布”按钮就可以将项目工程发布到目标服务器上(不需要打开对话框):

请注意Web Deploy足够聪明,它会对比你本地项目和远程服务器(的文件)—并只拷贝需要的文件。所以如果你只是对一个大项目做一点改动,并重新发布的话—只有修改过的文件会被拷贝过去。不会重新拷贝没有被修改的文件。这就让重新部署/更新一个站点快很多—特别是那些有很多静态内容和大图片的项目。

默认情况下,Web Deploy将文件拷贝到Web Deploy服务之前会压缩文件—减少传输大小和加快部署。

VS 2010里创建发布包

VS 2010还支持一个打包选项,用来让你打包你的ASP.NET Web应用程序(还有像web.config,数据库,ACL等它的依赖项)到一个Web Deploy支持的zip格式的安装包里。接着你把安装包交给一个可以使用IIS管理器部署它的人手上,或者通过一个命令行/PowerShell脚本将它安装到一个使用Web Deploy的远程服务器上。

你创建的安装包可以选择公开那些可复写的应用程序设置(例如目录路径,数据库链接字符串等)。当使用IIS管理器时,安装向导会提示管理员输入可变更得设置项—这样你可以在不用写任何代码的前提下提供干净的自定义体验。当使用命令行或者PowerShell脚本部署程序到远程服务器时,这些设置可以当作命令行参数输入。

要在VS 2010里创建一个Web部署包,只要在解决方案资源管理器里右击你的ASP.NET Web项目,并选择“生成部署包”菜单:

之后VS 2010就会创建一个Web Deploy兼容的部署包。在项目的“属性”对话框,你可以配置安装包在磁盘里的位置(选择“打包/发布Web”标签)。在“输出”窗口的生成内容里会显示生成Web Deploy部署包的磁盘路径(这样找起来很容易):

生成的部署包是一个.zip文件,包含了一个Wed Deploy清单,让你方便地通过IIS管理器或命令行将它部署远程服务器上。

用IIS管理器安装部署包

一旦你创建了.zip的部署包,你就可以用IIS管理器安装它。在IIS管理器里,点击在“操作”面板上的“导入服务器包或站点包…”链接(Web Deploy安装后才有):

这会打开一个对话框让你选择.zip部署包。当你在IIS管理器做这些的时候,它会对管理员显示在安装包里自动化的部署步骤:

跟着向导走,它就会自动地将程序维护到你的服务器上。

使用命令行部署安装包

另外,你也可以使用一个命令行窗口将包部署到远程服务器上。

打开命令行窗口(管理员权限),更换目录到部署包.zip文件所在的磁盘目录。除了.zip安装包,你可以看到VS在那个目录里还添加了一起其他文件:

ProjectName.deploy.cmd文件为你提供将包部署到远程服务器上的预置脚本。

ProjectName.SetParameters.xml文件包含了一些可设置的部署参数(例如站点名称,链接字符串的路径等)。你可以使用Visual Studio的项目属性面板来设置生成到该文件的参数的默认值。管理员们可以在之后编辑/修改它们(避免将它们通过命令行参数输入)。请打开这个文件并确保默认值是否正确。特别要确保将要部署的站点名/应用程序名是正确的。

要将包安装到远程Web Deploy服务器上,执行下面的命令:

ProjectName.deploy.cmd /y /M:https://WebDeployUrl:8172/MsDeploy.axd /u:username /p:password –allowUntrusted /A:basic

下面是参数的一些说明:


/y


指明Web Deploy应该将程序部署到远程服务器上。

另外除了/y选项,你也可通过/t来执行一个试验安装,它会模拟部署过程来帮助你确认所有的东西是否准备好了(而不是实际安装)。


/M: parameter


指明部署包的那台服务器的发布端点。它需要匹配你设置的发布服务URL(要和“发布Web”对话框里的“Service URL”参数一致)。如果是发布到一台 Windows Server 2008或者2008 R2服务器上,应该是一个“https”的URL。


-allowUntrusted


如果远程Web Deploy的SSL认证没有签过名(默认情况就不是),需要这个选项。


/A:basic


如果远程服务器没有使用Windows身份验证来识别用户,需要这个选项(指明你将用基于http的SSL身份验证)。

执行命令后,它会将包部署到远程服务器上, 执行所有的部署步骤(比如维护数据库,设置文件ACL之类的东西),并在安装过程中将状态返回到命令行窗口。

从一个生成服务器或持续集成服务器上自动部署

除了由程序员/管理员显式启动部署过程,你还可以让它作为一个持续集成过程或者生成服务器的一部分自动执行。自动创建一个Web Deploy .zip包所需的命令可以作为MSbuild的任务。用它们,要么你可以在生成过程中创建一个部署包,要么再加上自动部署程序的过程。

我将在后续的一篇博客里讲到启用自动生成的场景。

在一个Web农场里部署

Web Deploy还可以与Microsoft Web Farm Framework一起使用在Web农场里实现自动部署。你可以在Web Farm Framework集群的主服务器上安装和配置Web Deploy—集群里的辅助服务器接着可以监视并复制所有你发布的程序。这样就允许你在一个Web农场里任意多的机器上以自动化的方式执行部署站点和程序相同的步骤。

请参阅我的前一篇关于Microsoft Web Farm Framework的文章来了解启用的过程。

总结

Web Deploy提供了一个将ASP.NET Web程序部署到远程服务器上强大并有弹性的自动化方式。Web Deploy不仅允许你发布文件—还可以维护数据库结构/数据,执行数据库变更脚本,设置安全ACL以及更多。

你可以在Visual Studio里直接部署到启用Web Deploy的远程服务器上,或者创建可以用管理工具或命令行安装的部署包。你还可以将打包和部署作为一个生成服务器或者持续集成流程的一部分,来实现不间断的交付模式。

下一篇文章里我会提到使用Web Deploy实现授权方案,我还会在博客文章里讲到在部署过程中修改/定制web.config文件,在Web Deploy过程中部署数据库,以及将所有这些整合到一个自动化的生成过程的步骤。

希望这能对您有所帮助。

时间: 2024-07-30 02:22:31

配置 Web Deploy 的步骤 -摘自网络的相关文章

配置Web Deploy的经验之谈

对于基于微软技术开发的技术人员,都会遇到如何把自己开发的程序发布到服务器上,例如:阿里云,腾讯云等公有云上,虽然这部分功能很多都有专业的部署工程师完成,可是我觉得一个搞技术的连网站都发布上去似乎有点说不过去,故在此记录我之前部署网站时遇到的一些问题及部署的一些流程简单介绍. 废话不多说,入正题. 如果你要从VS2012中直接右键发布一个程序(这是一个MVC5+EF架构的项目,相信很多人都很熟悉),那么你将需要先配置好服务器的部署环境,此为必要条件. 发布:  1. 在服务器端启用管理服务(必须在

IIS服务器 远程发布(Web Deploy)配置 VS2010 开发环境 Windows Server 2008服务器系统

sp.net 网站有三种常用的发布方式:分别是拷贝开发机上发布好的文件到服务器硬盘上.打包成安装程序到服务器上安装.通过Visual Studio 开发平台远程发布到服务器. 在asp.net网站的开发阶段,经常需要将系统发布到开发者所在局域网的服务器上,供客户和项目负责人预览.之前都是在开发机上发布好之后再拷贝到服务器上部署,因为开 发阶段系统的更新很快,每次都拷贝文件很麻烦.于是开始研究VS2010发布到远程IIS服务器的方法,经过在网上查找相关资料和亲身实践成功的在Windows Serv

Visual Studio使用Web Deploy远程发布网站及其配置

https://blog.csdn.net/yzj_xiaoyue/article/details/60574378 废话不多说,直接进入正题(各个步骤请看图片的序号): IIS配置 1.打开服务器 2.添加角色和功能向导 3.添加角色和功能向导——选择安装类型 4.添加角色和功能向导——服务器选择 5.添加角色和功能向导——服务器角色:选中IIS(Internet信息服务),安装IIS管理工具 6.添加角色和功能向导——功能:选择安装.Net framework功能 7.添加角色和功能向导——

杂记3:VS使用Web Deploy一键发布网站到服务器

我的开发环境,win7 64位,使用VS2013: 服务器环境WinServer08 64位. 关于Web Deploy是什么,有什么优势,请参考其他文章,比如:Web Deploy自动部署 本文以step by step的方式说明如何配置服务器和本地开发环境,以实现一键发布网站: 以及过程中可能遇到的问题和解决方案. 步骤一:在服务器下载并安装Web Platform Installer 这里推荐通过Web Platform Installer来安装Web Deploy,下载地址:Web Pl

tfs 2013 利用 web deploy 完成asp.net站点自动发布

课题起因: 目前我们团队使用visual studio 2013开发asp.net项目, 使用tfs2013 做源码管理, 每天早上手动发布项目文件包,复制到测试服务器的站点文件夹下覆盖老文件,用此方式发布系统,甚至一天数次.低效费力. 课题目的:利用 tfs 做自动发布asp.net站点,无需人工干预,能够在代码签入时或定时进行asp.net项目发布. 研究结果:初步成功 自动发布系统配置过程: 环境检查 客户端: visual studio 2013 开发环境 ,能够正常连接源码服务器( t

阿里云服务器Web Deploy配置和使用Visual Studio进行Web项目发布部署遇到的坑

阿里云的服务器一直闲着,烧着银子,当初花几千大洋开通,本想弄信息化的项目为所帮扶的贫困户脱贫助手,不想势单力薄,一直没有找到好的项目.最近大家都在众志成城抗击新肺疫情,于是又想能不能尽点自己的力量,于是又开始打开Visual Studio 鼓捣起项目来,为了测试与微信服务器的消息发送,每次都得把项目发布到阿里的去服务器上,由于以前一直没怎么用,发布的方法是采用最原始的复制,然后远程桌面粘贴上去.次数多了感觉太累了,比较的方法,一个是FTP方式,另一个是Web Deploy,FTP方式虚拟主机一直

C#制作ActiveX控件及部署升级(摘自网络)

使用C#开发ActiveX控件 控件开发.制作CAB包.签名.部署 ActiveX控件以前也叫做OLE控件,它是微软IE支持的一种软件组件或对象,可以将其插入到Web页面中,实现在浏览器端执行动态程序功能,以增强浏览器端的动态处理能力.通常ActiveX控件都是用C++或VB语言开发,本文介绍另一种方式,在.NET Framework平台上,使用C#语言开发ActiveX控件. 虽然本文通篇都在讲如何使用C#语言开发ActiveX控件,但我并不极力推荐使用这种技术,因为该技术存在明显的局限,即需

Visual Studio + web deploy部署web服务器到IIS过程记录

一. 服务器配置 为了使用web deploy进行发布,你首先要安装web deploy工具, 可以从WebPlatform Installer中选择最新的版本进行安装,需要注意的是,安装web deploy时最好全部安装,不然会出现一些奇奇怪怪的问题 如果你还没有webPlatform Installer,你可以去MSDN https://www.microsoft.com/web/downloads/platform.aspx 下载 安装号web delopy后点击你的IIS服务器,,你应该

web deploy发布网站各种问题

环境: 服务器:windows server 2012 IIS:8.0 web deploy组件:本身已经带了这个组件,后面我又安装了3.5 VS:2015 发布流程: 在服务器建立站点,绑好域名 VS选择要发布的项目,发布 第一步和发布到文件系统一样,选择配置文件 第二步发布方式选择web deploy,相关配置信息如下 Server:https://YourServerIP:8172/msdeploy.axd(如果服务器开了防火墙记得打开8172端口) Site name:YorSiteNa