作者 :Jason Lee
使用 Internet Information Services (IIS) Web 部署工具 (Web 部署) 2.0 或更高版本时,可以使用三种主要方法将打包的 Web 应用程序放入 Web 服务器。 您可以选择:
- 通过针对目标服务器上的 Web 部署代理服务 (也称为“远程代理”)从远程位置部署应用程序。
- 使用 Web Deploy On Demand(也称为“临时代理”)从远程位置部署应用程序。
- 通过针对目标服务器上的 IIS Web 部署处理程序 从远程位置部署应用程序。
- 通过将 Web 包手动复制到目标服务器并通过 IIS 管理器导入应用程序来部署应用程序。
配置目标 Web 服务器的方式将取决于要使用的部署方法。 本主题将帮助你确定哪种部署方法适合你。
下表显示了每个部署方法的主要优点和缺点,以及最符合每种方法的方案。
方法 | 优点 | 缺点 | 典型方案 |
---|---|---|---|
远程代理 | 易于设置。 它适用于 Web 应用程序和内容的常规更新。 | 用户必须是目标服务器上的管理员。 用户无法提供备用凭据。 | 开发环境。 测试环境。 |
临时代理 | 无需在目标计算机上安装 Web 部署。 最新版本的 Web 部署将被自动使用。 | 用户必须是目标服务器上的管理员。 用户无法提供备用凭据。 | 开发环境。 测试环境。 |
Web 部署管理器 | 非管理员用户可以部署内容。 它适用于 Web 应用程序和内容的常规更新。 | 设置要复杂得多。 | 过渡环境。 Intranet 生产环境。 托管环境。 |
脱机部署 | 设置非常简单。 它适用于隔离环境。 | 服务器管理员必须每次手动复制和导入 Web 包。 | 面向 Internet 的生产环境。 隔离的网络环境。 |
使用远程代理
使用目标服务器上的默认设置安装 Web 部署时,会自动安装并启动 Web 部署代理服务(“远程代理”。 默认情况下,远程代理在此地址公开 HTTP 终结点:
http://[server]/MSDEPLOYAGENTSERVICE
注释
可以将 [server] 替换为 Web 服务器的计算机名称、Web 服务器的 IP 地址或解析为 Web 服务器的主机名。
服务器管理员可以通过指定此终结点地址,从远程位置(如开发人员计算机或生成服务器)部署 Web 包。 例如,假设 Fabrikam Inc. 的 Matt Hink 在其开发人员计算机上构建了 ContactManager.Mvc Web 应用程序项目。 生成过程生成 Web 包,以及包含安装包所需的 Web 部署命令 的 .deploy.cmd 文件。 如果 Matt 是TESTWEB1服务器上的服务器管理员,则可以通过在开发人员计算机上运行以下命令,将 Web 应用程序部署到测试 Web 服务器:
ContactManager.Mvc.deploy.cmd /y /m:http://TESTWEB1/MSDEPLOYAGENTSERVICE a/:NTLM
实际上,如果提供计算机名称,Web 部署可执行文件可以推断远程代理的终结点地址,因此 Matt 只需键入以下命令:
ContactManager.Mvc.deploy.cmd /y /m:TESTWEB1 /a:NTLM
注释
有关 Web 部署命令行语法和 .deploy.cmd 文件的详细信息,请参阅 如何:使用 deploy.cmd 文件安装部署包。
远程代理提供了从远程位置部署内容的简单方法,此方法适用于一键式部署或自动部署。 但是,运行部署命令的用户还必须是目标服务器上的域管理员或本地管理员组的成员。 此外,远程代理不支持基本身份验证,因此不能在命令行上传递备用凭据。
远程代理在开发或测试方案中提供了一种有用的部署方法,开发人员对测试服务器环境拥有完全管理员控制并不罕见,应用程序通常经常重新生成和重新部署。 但是,对于过渡或生产环境,此方法通常不太可接受。
有关使用远程代理方法的方案的端到端示例,请参阅 方案:为 Web 部署配置测试环境。
使用临时代理
部署的临时代理方法类似于远程代理方法。 但是,与远程代理方法相比,无需在目标 Web 服务器上安装 Web 部署。 相反,执行部署时,Web 部署会在目标服务器上安装 Web 部署代理服务的临时版本,并使用此版本将内容部署到 IIS。 部署完成后,将删除所有临时文件。
如果要使用临时代理提供程序设置,请将 /g 标志添加到部署命令:
ContactManager.Mvc.deploy.cmd /y /m:TESTWEB1 /g:true
注释
如果在目标计算机上安装 Web 部署代理服务,即使服务未运行,也不能使用临时代理。
此方法的优点是,无需在目标服务器上维护 Web 部署的安装。 此外,无需确保源计算机和目标计算机运行相同的 Web 部署版本。 但是,此方法遭受与远程代理方法相同的主体限制,即你必须是目标服务器上的本地管理员才能部署内容,并且仅支持 NTLM 身份验证。 临时代理方法还需要对目标环境进行更多的初始配置。
有关使用临时代理的详细信息,请参阅 如何:使用 deploy.cmd 文件和Web 部署按需安装部署包。
使用 Web 部署处理程序
对于 IIS 7 及更高版本,Web 部署通过 IIS Web 部署处理程序提供替代部署方法。 Web 部署处理程序与 IIS Web 管理服务(WMSvc)紧密集成,该服务旨在允许用户从远程位置管理 IIS 网站。
默认情况下,远程代理在此地址公开 HTTP 终结点:
https://[server]:8172/MSDeploy.axd
注释
可以将 [server] 替换为 Web 服务器的计算机名称、IP 地址,或解析到 Web 服务器的主机名。
Web 部署处理程序在远程代理和临时代理上的优势在于,可以将 IIS 配置为允许非管理员用户将应用程序和内容部署到特定的 IIS 网站。 Web 部署处理程序还支持基本身份验证,因此可以在 Web 部署命令中提供替代凭据作为参数。 主要缺点是 Web 部署处理程序最初设置和配置要复杂得多。
对于非管理员用户,Web 管理服务(WMSvc)仅允许用户使用站点级连接而不是服务器级连接连接到 IIS。 若要访问特定站点,可以在终结点地址中包含特定于站点的查询字符串:
https://[server]:8172/MSDeploy.axd?site=DemoSite
例如,假设生成过程配置为在每次成功生成后自动将 Web 应用程序部署到过渡环境。 如果使用远程代理方法,您需要将生成过程的身份设置为目标服务器上的管理员。 相比之下,通过使用 Web 部署处理程序的方法,可以只向特定 IIS 网站的非管理员用户(此处为 FABRIKAM\stagingdeployer )授予权限,生成过程可以提供这些凭据以部署 Web 包。 请注意,以下示例正在使用 %ContactManagerPublishPassword%
,它正在从环境变量中提取密码值。 若要成功执行脚本, %ContactManagerPublishPassword%
必须使用正确的值定义变量。
msdeploy.exe
-source:package='…\ContactManager.Mvc.zip'
-dest:auto,
computerName='https://STAGEWEB1:8172/MSDeploy.axd?site=DemoSite',
userName='FABRIKAM\stagingdeployer',
password=,
authtype='Basic',
-verb:sync
-setParamFile:"…\ContactManager.Mvc.SetParameters.xml"
-allowUntrusted
注释
有关 Web 部署命令行作和语法的详细信息,请参阅 Web 部署命令行参考。 有关使用 .deploy.cmd 文件的详细信息,请参阅 如何:使用 deploy.cmd 文件安装部署包。
Web 部署处理程序在预发布环境、托管环境和基于内联网的生产环境中提供了一种有用的部署方法,在这些环境中可以远程访问服务器,但没有管理员凭据。
有关使用 Web 部署处理程序方法的方案的端到端示例,请参阅 方案:为 Web 部署配置过渡环境。
使用脱机部署
在某些情况下,无法或实际地从远程位置将应用程序和内容部署到 IIS 网站。 例如,源计算机和目标计算机可能位于隔离网络或网段中,或者防火墙策略可能不允许远程访问。
在这些方案中,仍可使用 Web 部署的打包和发布功能;你只是不能从远程位置使用它们。 相反,目标服务器上的管理员必须将 Web 包复制到服务器上,并通过 IIS 管理器导入它。
脱机部署方法在面向 Internet 的生产环境中通常很有用,其中外围网络中的服务器可能与内部网络中的计算机建立受限连接。
有关使用脱机部署方法的方案的端到端示例,请参阅 方案:为 Web 部署配置生产环境。
深入阅读
有关 Web 部署命令行作和语法的详细信息,请参阅 Web 部署命令行参考。 有关使用 .deploy.cmd 文件的详细信息,请参阅 如何:使用 deploy.cmd 文件安装部署包。
有关从远程计算机部署 Web 包的不同方式的更常规指南,请参阅 “远程使用 Web 部署”。 有关使用 Web 按需部署的详细信息,请参阅 Web 部署按需。