Microsoft Web 部署 v3 自述文件

作者:Harsh Mittal

概述

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

功能

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

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

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

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

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

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

快照 IIS 7.0 及更高版本: 快照或存档功能允许管理员或开发人员快速获取其网站或服务器的存档以进行回滚、还原或备份。 自动快照功能还允许网站管理员自助完成上述某些任务。

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

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

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

通过 PowerShell 轻松编写脚本:常见的 Web 部署任务可使用 PowerShell cmdlet 自动完成。

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

要求

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

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

下载和安装

该工具有两个独立的可下载包,需要下载相应的包。 可下载 (x86) 或 (x64) 版本。

此版本中修复的重要问题:

更改:在以前的 Web 部署版本中,tempAgent 服务总是在端口 80 上运行。 在 Web 部署 v3 RC 中,可以使用 computername=serverName:####, tempagent=true 格式(其中 #### 是要使用的端口号),在计算机名参数中指定新端口,以更改该端口

更改:修复了 Web 部署中的一个问题,即在使用 -useCheckSum 选项时 -whatif 操作的更改计数不准确的问题。

更改:Web 部署 V3 自动禁用代理设置。 这以前是某些客户端的问题,这些客户端在启动同步之前需要打开 Internet Explorer 并禁用代理设置。

更改:在证书同步逻辑中添加了对 IPv6 类型绑定的支持。 以前的版本无法正确同步 IPv6 绑定。

更改:将子注册表项同步到不存在父注册表项的服务器时,现在将创建该子项对应的父注册表项(没有值),而不是同步失败。 例如,如果同步注册表项 HKEY_LOCAL_MACHINE\SOFTWARE\MySoft\TestWeb1 而目标计算机上不存在 MySoft 项,会在目标计算机上创建 MySoft 项,以使同步成功。

更改:在某些情况下,Web 部署发布删除了站点根文件夹的继承权限。 Web 部署 V3 修复了此问题。

已知问题

问题:Web 部署 v3 升级中断使用 Web 部署 v2 进行的 SQLite 同步

Web 部署 v3 可执行文件的默认配置文件(msdeploy.exe.config 和 msdepsvc.exe.config)从 .Net 2.0 更新到了 .Net 4.0,从而导致此中断。

解决方法:

  • SQLite 有一个与 .Net 4 兼容的版本。 将此版本中的 sqlite3.exe 复制到“%ProgramFiles%\IIS\Microsoft Web Deploy V3”目录下即可解决问题。
  • 将 Web 部署 V3 msdeploy.exe.config 的默认 .Net 版本更改为 .Net 2.0,如下所示
<configuration>
  <startup>
    <supportedRuntime version="v2.0.50727" />
    <supportedRuntime version="v4.0" />
  </startup>
</configuration>

问题:Web 部署代理服务无法使用本地用户帐户(非管理员用户帐户,但为管理员组的成员)。 返回 ERROR_USER_NOT_ADMIN 错误。

远程代理服务接受内置管理员或域管理员凭据任何其他管理员凭据都不起作用,并将导致此错误。

解决方法:

使用内置管理员帐户或域用户帐户(本地计算机上管理员组的成员)。远程代理服务接受内置管理员或域管理员凭据。 如果你使用的是非域设置,并希望使用内置管理员以外的帐户,请执行以下操作:

  • 在远程计算机上创建单独的用户组 MSDepSvcUsers。
  • 在本地和远程计算机上创建本地帐户 A。
  • 将 A 添加到远程计算机上的 MSDepSvcUsers。
  • 使用帐户 A 进行发布,这样一来,无需使用内置管理员帐户即可进行发布。

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

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

如果你的委派规则已被覆盖,请手动重新创建受影响的规则。

问题:无法发布到使用 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 部署 V3 创建的包不能在 Web 部署 V2 中使用。 它会导致 System.NullReferenceException。

解决方法:

  • 将目标计算机升级到 Web 部署 v3
  • 使用 Web 部署 V2 创建包。

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

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

解决方法:

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

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

创建站点列表并逐个同步每个站点。

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

手动同步或使用 Web 部署处理程序。

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

在更改共享配置后重启代理。

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

添加替换规则,以在同步期间更改路径。

问题:如果尝试打包到现有包文件,可能无法正常工作。
解决方法:

创建新包之前,使用新名称或删除旧包文件。

问题: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 部署团队博客,获取有关该工具的提示、技巧和最新信息。