本主题介绍如何将 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) 以将最新版本的 ASP.NET 注册到 IIS。 如果不这样做,你会发现 IIS 将提供静态内容 (,如 HTML 文件) 没有任何问题,但它将返回 HTTP 错误 404.0 – 找不到 当你尝试浏览到 ASP.NET 内容。 可以使用此过程来确保注册 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