本主题介绍如何配置 Internet Information Services (IIS) Web 服务器,以支持使用 IIS Web 部署工具 (Web 部署) 远程代理服务进行 Web 发布和部署。
使用 Web 部署 2.0 或更高版本时,可以使用三种 main 方法将应用程序或站点置于 Web 服务器上。可以:
- 使用 Web 部署远程代理服务 。此方法所需的 Web 服务器配置较少,但需要提供本地服务器管理员的凭据才能将任何内容部署到服务器。
- 使用 Web 部署处理程序 。此方法要复杂得多,需要付出更多的初始精力来设置 Web 服务器。但是,使用此方法时,可以将 IIS 配置为允许非管理员用户执行部署。Web 部署处理程序仅在 IIS 版本 7 或更高版本中可用。
- 使用 脱机部署 。此方法需要最少的 Web 服务器配置,但服务器管理员必须手动将 Web 包复制到服务器上,并通过 IIS 管理器导入它。
有关这些方法的主要功能、优点和缺点的详细信息,请参阅 选择正确的 Web 部署方法 。
Web 部署远程代理是否适合你?
是,如果要部署内容的用户可以提供目标服务器上的管理员凭据。在以下类型的方案中,通常需要此方法:
- 开发或测试环境,其中开发人员可以完全控制目标 Web 服务器和数据库服务器。
- 单个用户或一小组用户可控制整个应用程序生命周期的小型组织。
在很多大型组织中,尤其是过渡或生产环境,授予用户在 Web 服务器上的管理员权限通常并不现实。对于托管的 Web 服务器,这种情况尤其不太可能出现。此外,如果计划从生成服务器自动执行部署,则可能不希望在部署过程中使用管理员凭据。在这些方案中,使用 Web 部署处理程序将 Web 服务器配置为支持部署可能会提供更令人满意的选择。
任务概述
本主题介绍如何将 Internet Information Services (IIS) 7.5 Web 服务器配置为使用 Web 部署远程代理方法从远程计算机接受和部署 Web 包。你将需要:
- 安装 IIS 7.5 和 IIS 7 建议的配置。
- 安装 Web 部署 2.1 或更高版本。
- 创建 IIS 网站以托管已部署的内容。
- 确保 Web 部署代理服务正在运行。
若要专门托管示例解决方案,还需要:
- 安装 .NET Framework 4.0。
- 安装 ASP.NET MVC 3。
- 已安装 Windows Server 2008 R2 Service Pack 1 和所有可用更新。
- 服务器已加入域。
- 服务器具有静态 IP 地址。
安装产品和组件
本部分将指导你在 Web 服务器上安装所需的产品和组件。在开始之前,一个好的做法是运行 Windows 更新,以确保服务器完全处于最新状态。
在这种情况下,需要安装以下项:
- IIS 7 建议的配置 。这会在 Web 服务器上启用 Web 服务器 (IIS) 角色,并安装承载 ASP.NET 应用程序所需的 IIS 模块和组件集。
- .NET Framework 4.0。这是运行基于此版本.NET Framework 构建的应用程序所必需的。
- Web 部署工具 2.1 或更高版本 。这会在服务器上安装 Web 部署 (及其基础可执行文件(MSDeploy.exe))。在此过程中,它会安装并启动 Web 部署代理服务。此服务允许你从远程计算机部署 Web 包。
- ASP.NET MVC 3。这将安装运行 MVC 3 应用程序所需的程序集。
安装所需的产品和组件
如果在安装 IIS 之前安装了 .NET Framework 4.0,则需要运行 ASP.NET IIS 注册工具 (aspnet_regiis.exe) 以向 IIS 注册最新版本的 ASP.NET。如果不这样做,你会发现 IIS 将提供静态内容 (,如 HTML 文件),但当你尝试浏览到 ASP.NET 内容时,它将返回 HTTP 错误 404.0 – 未找到 。可以使用此过程来确保注册 ASP.NET 4.0。
向 IIS 注册 ASP.NET 4.0
作为一种好的做法,此时再次使用 Windows 更新下载并安装已安装的新产品和组件的任何可用更新。
配置 IIS 网站
需要创建并配置 IIS 网站以托管内容,然后才能将 Web 内容部署到服务器。Web 部署只能将 Web 包部署到现有 IIS 网站; 它无法为你创建网站。在高级别上,需要完成以下任务:
- 在文件系统上创建一个文件夹以托管内容。
- 创建 IIS 网站来提供内容,并将其与本地文件夹相关联。
- 授予对本地文件夹的应用程序池标识的读取权限。
尽管没有什么能阻止你将内容部署到 IIS 中的默认网站,但除测试或演示方案外,不建议使用此方法。若要模拟生产环境,应使用特定于应用程序要求的设置创建新的 IIS 网站。
创建和配置 IIS 网站
为了使网站提供内容,应用程序池标识必须对存储内容的本地文件夹具有读取权限。在 IIS 7.5 中,应用程序池默认使用唯一的应用程序池标识运行 (,而以前版本的 IIS 则应用程序池通常使用网络服务帐户) 运行。应用程序池标识不是真正的用户帐户,不会显示在任何用户或组列表中,而是在启动应用程序池时动态创建。每个应用程序池标识都作为隐藏项添加到本地 IIS_IUSRS 安全组。
若要授予对文件或文件夹的应用程序池标识的权限,有两个选项:
- 使用 IIS AppPool[应用程序池名称] (格式(例如 IIS AppPool\DemoSite))直接为应用程序池标识分配权限。
- 为 IIS_IUSRS 组分配权限。
最常见的方法是将权限分配给本地 IIS_IUSRS 组,因为此方法使你无需重新配置文件系统权限即可更改应用程序池。下一过程使用此基于组的方法。
为 IIS 网站配置文件夹权限
作为尝试将任何 Web 包部署到服务器之前的最终任务,应确保 Web 部署代理服务正在运行。从远程计算机部署包时,Web 部署代理服务负责提取和安装包的内容。默认情况下,当安装 Web 部署工具并在网络服务标识下运行时,该服务将启动。
可以使用各种命令行实用工具或 Windows PowerShell cmdlet 来检查服务是否以多种不同方式运行。此过程描述了一种基于 UI 的简单方法。
检查 Web 部署代理服务正在运行
配置防火墙例外
默认情况下,远程代理服务在 TCP 端口 80 上侦听以下 URL:
http://servername.com/MSDEPLOYAGENTSERVICE
在大多数情况下,不需要为远程代理服务配置任何其他防火墙规则,因为 Web 服务器通常侦听端口 80 上的 HTTP 请求。如果将安装自定义为侦听非标准端口,则需要根据需要配置防火墙例外。
结束语
此时,Web 服务器已准备好从远程计算机接受和安装 Web 包。在尝试将 Web 应用程序部署到服务器之前,可能需要检查以下要点:
- 是否已将 ASP.NET 4.0 注册到 IIS?
- 应用程序池标识是否具有对网站的源文件夹的读取访问权限?
- Web 部署代理服务是否正在运行?
深入阅读
原文链接:https://learn.microsoft.com/zh-cn/aspnet/web-forms/overview/deployment/configuring-server-environments-for-web-deployment/configuring-a-web-server-for-web-deploy-publishing-remote-agent