Microsoft Web 部署 v2:自述文件

作者:Bilal Aslam

概述

Web 部署是用于简化 Web 应用程序、站点和服务器迁移、管理和部署的工具。 它可用于打包网站,自动包含内容、配置、证书和数据库。 它可用于在 IIS 6.0 或 IIS 7.0 之间进行同步,或从 IIS 6.0 迁移到 IIS 7.0。 创建的包可用于版本控制、备份或部署。

请注意,只有 Web 部署 V3 支持 IIS 8.0。

功能

Web 部署包含以下主要功能:

打包网站和应用程序。 开发人员或管理员可以对已安装 Web 应用程序(包括 SQL 数据库)的配置和内容进行打包,并使用这些包进行存储或重新部署。 然后,可以使用 IIS 管理器界面部署这些包,而无需在远程服务器上拥有管理权限。

将部署任务委派给非管理员。 服务器管理员现在可以选择将部署任务委派给非管理员用户。 例如,在共享托管和企业环境中,部署内容和将文件夹标记为应用程序的工作都可以委派他人完成。 还可以启用适合专用环境的更高级任务,如允许部署证书、网站或 GAC 程序集。

简化管理员的部署工作。 服务器管理员会发现委派非常有用,因为部署 Web 应用程序(包括 GAC 程序集、证书和应用程序池)非常耗时,即使拥有所需的全部权限也是如此。

从 IIS 6.0 迁移。 迁移操作为管理员提供了一种将站点或整个服务器(包括其设置和内容)从 IIS 6.0 迁移到 IIS 7.0 的方法。 迁移实质上是一种同步方式,根据迁移规则进行筛选。

IIS 6.0/IIS 7.0 的同步。 同步操作为管理员提供了快速同步站点或服务器并将更改部署到现有站点和服务器的方法。 通过同步,可以将一个源与一个目标同步。 例如,可以同步两个目录路径或两个 Web 服务器。 可以通过本地或远程对象执行同步。

为 IIS 6.0/IIS 7.0 创建快照。 快照或存档功能允许管理员或开发人员快速获取其网站或服务器的存档以进行回滚、还原或备份。

分析 IIS 6.0/IIS 7.0 上的依赖项。 分析操作使管理员能够检查源服务器上安装了哪些组件。 这样,他们就可以确定 IIS 7.0 中是否有他们需要的功能,或者是否需要比仅复制文件更高级的设置。

故障排除和验证。 对于操作验证,-whatif 参数可让管理员查看执行操作时会发生哪些行为。 这在执行同步或迁移时尤其有用,因为他们想在执行之前验证将进行哪些更改。 对于故障排除,-verbose 参数可让管理员详细了解正在执行的操作,并在出现故障时诊断问题。

差异同步。 该工具只会同步源和目标之间发生更改的内容。

Installation Notes(SAP 支持说明 #1984787 - SUSE Linux Enterprise Server 12:安装说明)

要求

安装该工具必须满足以下前提条件:

  • 必须安装 .NET 2.0 SP1 或更高版本。

下载和安装

该工具有两个独立的可下载包,需要下载相应的包:

https://www.iis.net/download/WebDeploy

需要以管理员身份运行安装包。 可以通过下述方式之一来实现这一点:

  • 使用名为“Administrator”的实际帐户登录到服务器。
  • 使用具有管理员权限的帐户登录并打开命令提示符,方法是右键单击 Windows 程序的“附件”菜单中的命令提示符菜单项,然后选择“以管理员身份运行”,然后键入下面列出的相应命令,以便 Windows 版本运行安装
msiexec /I <path_to_msi>
msiexec /I <path_to_msi>

重要说明! 默认情况下,安装程序将为你提供安装远程服务的选项,并使用默认的远程服务 URL http://+:80/MSDEPLOY.

可以通过从命令行运行安装程序将远程服务 URL 设置为自定义 URL:(其中指定了端口和 URL,请自定义):

msiexec /i <path_to_msi> /passive ADDLOCAL=ALL LISTENURL=http://+:8080/MSDEPLOY2/

已知问题

问题:将 Web 部署升级到 Web 部署 2.0 后,某些管理服务委派规则不起作用

如果 IIS 7+ 服务器使用共享配置,runAs 标识设置为 SpecificUser 的某些委派规则将停止工作。 这是因为 Web 部署安装程序和 .\AddDelegationRules.ps1 脚本会创建本地计算机用户帐户,并在某些委派规则中将它们设置为 runAs 标识。 这些用户帐户在其他计算机上将无法识别,因此这些规则在共享配置中将不起作用。
解决方法:

  • 不要使用 Web 平台安装程序安装 Web 部署 2.0。 请改为从 MSI 直接安装它,并取消选择“为非管理员部署组件进行配置”
  • 如果你的委派规则已被覆盖,请手动重新创建这些规则。

问题:使用 .\SetupSite.ps1 PowerShell 脚本创建的站点不可浏览

当此脚本创建站点时,它会尝试为其分配一个介于 8000 和 8200 之间的端口号(该端口号尚未占用)。 可能没有可用的端口,对于这种情况,分配到该站点的端口将不起作用。 此外,分配到该站点的端口还可能被防火墙阻止。

解决方法:从 IIS 管理器 UI 手动为站点分配不同的端口。 另外,请确保端口未被防火墙阻止,例如在 Windows Server 2008 R2 上,运行以下命令:“netsh advfirewall firewall add rule name="MySite" dir=in action=allow protocol=TCP localport=8080”,其中 MySite 需替换为你的站点名称。

问题:无法发布到使用 SetupSiteForPublish.ps1 PowerShell 脚本创建的站点,或通过“配置 Web 部署发布...”配置为 Web 部署发布的站点UI

站点创建脚本以及为现有站点配置 Web 部署的 UI 会将发布 URL 设置为 https://myserver:8172/msdeploy.axd。 此计算机名通常可在网络中访问。 但是,它通常无法从网络外部访问,因此应将其替换为公共 DNS 名称。

解决方法:

  • 在脚本中:脚本不会对此错误发出警告。 在生成的设置文件中将 URL 替换为正确的 URL(如下所示)。
  • 在 UI 中:在“指定发布服务器连接的 URL”字段中输入公共 DNS 名称,例如,不输入 https://myserver:8172/msdeploy.axd,而输入 https://some.publicDnsName.com:8172/msdeploy.axd

问题:Web 部署在几分钟内占用 100% 的 CPU 时间

如果日志记录级别设置得太高,则当同步操作正在进行时,Web 部署将占用 100% 的CPU。 如果日志记录级别设置为详细 (4) 或信息 (3),则可能会发生这种情况。

解决方法:将日志记录级别设置得更低:

  1. 启动注册表编辑器
  2. 导航到 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\IIS Extensions\MSDeploy\2\WMSVCTracing,根据需要将其设置为 1 或 2。
  3. 打开提升的命令提示符并依次键入“net stop wmsvc”和“net start wmsvc”,以重启 Web 管理服务

问题:IIS 管理器中的 Web 部署 UI 出现“无法强制转换类型对象”错误

如果目标计算机已安装 Web 部署 v1.1,并且源计算机已安装 v2,可能会看到此错误。 这属于跨版本不兼容问题。

解决方法:

  • 将源计算机升级到 Web 部署 v2
  • 卸载源计算机上的所有 Web 部署版本

问题:Web 部署无法从远程服务器检索 USN 编号

“-incremental”开关与 dirPath 提供程序一起使用时,会返回一个 USN 编号用于将来同步,以实现增量同步。
例如:msdeploy -verb:dump -source:dirpath=c:\Temp –incremental
返回:c:\Temp
信息:同步源路径“c:\Temp”的 USN 编号为“2140379512”。
但是,如果源是远程的,则该操作不会返回 USN 编号。 这是一个已知的限制,因为 Web 部署 v2 不支持从远程服务器检索 USN 编号。

解决方法:使用其他工具从远程服务器检索 USN 编号。

问题:如果同步的 IIS 6.0 计算机上有大量站点(导致元数据库超过 500 MB),那么该工具可能会挂起并停止响应。
解决方法:创建站点列表并逐个同步每个站点。

问题: 如果要从计算机同步到内容或共享配置位于第三台独立计算机(即 UNC)上的远程计算机,远程代理将无法正确进行身份验证。
解决方法:手动同步或使用 Web 部署处理程序。

问题:如果尝试打包或存档具有某种循环的文件夹(例如尝试在正在打包的文件夹内创建包),则该工具可能会崩溃或挂起。
解决方法:不要同步循环文件夹。

问题:如果同步的网站包含 100 个以上的子目录 (1\2\3..\100\101),则该工具可能会挂起。
解决方法:不要同步深度达到 120 个子目录的文件夹结构。

问题: 如果更改共享配置设置(例如启用或禁用共享配置),需要稍后重启远程代理。
解决方法:在更改共享配置后重启代理。

问题:如果要将路径为 %systemdrive%\wwwroot 的网站同步到系统驱动器不同(C: 而不是 D:)的目标网站,网站路径将在目标网站上展开。 这意味着,如果你的共享配置具有不同的系统驱动器,并且依赖于 %systemdrive% 来确保内容正常工作,你可能会破坏计算机上的站点。
解决方法:添加替换规则,以在同步期间更改路径。

问题:如果同步的 IIS 6.0 计算机上有大量站点(导致元数据库超过 500 MB),那么该工具可能会挂起并停止响应。
解决方法:创建站点列表并逐个同步每个站点。

问题:如果将 IIS 6.0 中标记为应用程序的文件夹同步到存档或包,有时不会自动收集内容。
解决方法:手动将内容文件夹添加到自定义清单并同步清单。 有关创建清单文件的更多信息,请参阅“帮助”。

问题:如果尝试打包到现有包文件,可能无法正常工作。
解决方法:创建新包之前,使用新名称或删除旧包文件。

问题:Microsoft Web 部署不会移动 Web 服务扩展限制列表中引用的脚本映射和项的物理文件,除非这些文件位于网站的内容目录中。 这是因为许多 ISAPI 可能无法正确迁移,例如:

  • ASP.NET(需要安装)。
  • WebDAV(Windows Server 2008 中默认不包含,需要额外安装)。
  • FrontPage 服务器扩展(Windows Server 2008 中默认不包含,需要额外安装)。

解决方法:在清单文件中手动包含任何不需要安装的脚本映射或文件。 有关创建清单文件的更多信息,请参阅“帮助”。

问题:根级 Web.config 和代码访问安全性 (CAS) 策略设置中引用的自定义信任文件不会被移动。
解决方法:在清单文件中手动指定自定义信任文件和 CAS 策略文件 security.config。 有关创建清单文件的详细信息,请参阅帮助文件。

问题:如果将站点移动到具有不同信任级别的服务器,不会收到警告。
解决方法:请确保在执行站点级别同步或迁移时,在目标计算机上正确设置信任级别。

问题:如果你有指向无效源的自定义清单文件,可能不会收到错误。
解决方法:如果在使用清单文件时未看到预期的输出,请逐个尝试每个项,看看是否输入错误或无效。

问题:FTP 和 SMTP 不包含在 webserver60 的默认定义中。
解决方法:如果需要同步这些位置,请使用 metakey 提供程序手动同步,即 metakey=lm/msftpsvc。

问题:继承属性不会随 IIS 6.0 站点迁移而迁移。 一个常见的示例是在服务器级别设置的身份验证,所有站点都继承这一属性。 迁移单个站点时,现在将继承新目标服务器的设置。 如果目标服务器设置不一致,站点可能会崩溃。 这适用于所有继承属性,包括 mime 映射、脚本映射等。
解决方法:在同步或迁移 IIS 6.0 上的网站时,使用 metadataGetInherited 标志将继承设置复制到站点级别。 或者确保源服务器和目标服务器的服务器设置相同,或者手动将站点设置为使用正确的设置。

安装问题疑难解答

如果在安装过程中遇到任何问题,可运行下面列出的适用于你的 Windows 版本的命令,创建一个包含安装过程信息的日志文件:

msiexec /L msdeployinstall.log /I <path_to_msi>
msiexec /L msdeployinstall.log /I <path_to_msi>

可以在安装失败后分析此日志文件,帮助确定失败的原因。

详细信息

IIS.net 上提供了 Web 部署的以下附加资源:

  • Web 部署演练。 介绍如何下载和安装 Web 部署、如何使用 Web 部署进行同步或迁移操作等。
  • 此外,请务必访问 Web 部署团队博客,获取有关该工具的提示、技巧和最新信息。

© 2007 – 2011 Microsoft Corporation。