选择 Web 部署的适当方法
作者 :Jason Lee
使用 Internet Information Services (IIS) Web 部署工具 (Web 部署) 2.0 或更高版本时,可以使用三种main方法将打包的 Web 应用程序放到 Web 服务器上。 可以:
- 通过将目标服务器上的 Web 部署代理服务 (也称为“远程代理”) ,从远程位置部署应用程序。
- 使用 Web 按需部署 (也称为“临时代理”) 从远程位置部署应用程序。
- 通过面向目标服务器上的 IIS Web 部署处理程序 ,从远程位置部署应用程序。
- 通过手动将 Web 包复制到目标服务器并通过 IIS 管理器导入来部署应用程序。
如何配置目标 Web 服务器将取决于要使用的部署方法。 本主题将帮助你确定哪种部署方法适合你。
此表显示了每种部署方法main优缺点,以及最符合每种方法的方案。
方法 | 优点 | 缺点 | 典型方案 |
---|---|---|---|
远程代理 | 它易于设置。 它适用于 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 服务器的计算机名称、Web 服务器的 IP 地址或解析为 Web 服务器的主机名。
Web 部署处理程序比远程代理和临时代理的主要优势在于,可以将 IIS 配置为允许非管理员用户将应用程序和内容部署到特定的 IIS 网站。 Web 部署处理程序还支持基本身份验证,因此可以在 Web 部署命令中提供替代凭据作为参数。 主要缺点是 Web 部署处理程序最初设置和配置要复杂得多。
对于非管理员用户,Web 管理服务 (WMSvc) 将仅允许用户使用站点级连接(而不是服务器级连接)连接到 IIS。 若要访问特定站点,可以在终结点地址中包含特定于站点的查询字符串:
https://[server]:8172/MSDeploy.axd?site=DemoSite
建议 例如,假设将生成过程配置为在每次成功生成后自动将 Web 应用程序部署到过渡环境。 如果使用远程代理方法,则需要使生成过程标识成为目标服务器上的管理员。 相比之下,使用 Web 部署处理程序方法,可以仅向非管理员用户(在本例中为 FABRIKAM\stagingdeployer )授予对特定 IIS 网站的权限,并且生成过程可以提供这些凭据来部署 Web 包。 请注意,以下示例使用 %ContactManagerPublishPassword%
,它从环境变量中拉取密码值。 若要成功执行脚本, %ContactManagerPublishPassword%
必须使用正确的值定义变量。
msdeploy.exe
-source:package='…\ContactManager.Mvc.zip'
-dest:auto,
computerName='https://STAGEWEB1:8172/MSDeploy.axd?site=DemoSite',
userName='FABRIKAM\stagingdeployer',
password=%ContactManagerPublishPassword%,
authtype='Basic',
-verb:sync
-setParamFile:"…\ContactManager.Mvc.SetParameters.xml"
-allowUntrusted
注意
有关 Web 部署命令行操作和语法的详细信息,请参阅 Web 部署命令行参考。 有关使用 .deploy.cmd 文件的详细信息,请参阅 如何:使用 deploy.cmd 文件安装部署包。
Web 部署处理程序提供了一种有用的方法,用于在过渡环境、托管环境和基于 Intranet 的生产环境中进行部署,其中远程访问服务器可用,但管理员凭据不可用。
有关使用 Web 部署处理程序方法的方案的端到端示例,请参阅 方案:为 Web 部署配置过渡环境。
使用脱机部署
在某些情况下,从远程位置将应用程序和内容部署到 IIS 网站是不可能或可行的。 例如,源计算机和目标计算机可能位于隔离的网络或网段中,或者防火墙策略可能不允许远程访问。
在这样的方案中,你仍然可以使用 Web 部署的打包和发布功能;你只是不能从远程位置使用它们。 相反,目标服务器上的管理员必须将 Web 包复制到服务器上,并通过 IIS 管理器导入它。
脱机部署方法通常适用于面向 Internet 的生产环境,在这些环境中,外围网络中的服务器可能与内部网络中的计算机的连接受限。
有关使用脱机部署方法的方案的端到端示例,请参阅 方案:为 Web 部署配置生产环境。
深入阅读
有关 Web 部署命令行操作和语法的详细信息,请参阅 Web 部署命令行参考。 有关使用 .deploy.cmd 文件的详细信息,请参阅 如何:使用 deploy.cmd 文件安装部署包。
有关从远程计算机部署 Web 包的不同方式的更多常规指南,请参阅 使用远程 Web 部署。 有关使用 Web 部署按需的详细信息,请参阅 Web 部署按需。