本主题介绍如何将 Internet Information Services (IIS) Web 服务器配置为使用 IIS Web 部署处理程序支持 Web 发布和部署。
使用 Web 部署 2.0 或更高版本时,可以使用三种main方法将应用程序或站点置于 Web 服务器上。 可以:
- 使用 Web 部署远程代理服务。 此方法需要的 Web 服务器配置较少,但需要提供本地服务器管理员的凭据才能将任何内容部署到服务器。
- 使用 Web 部署处理程序。 此方法要复杂得多,需要花费更多的初始精力来设置 Web 服务器。 但是,使用此方法时,可以将 IIS 配置为允许非管理员用户执行部署。 Web 部署处理程序仅在 IIS 版本 7 或更高版本中可用。
- 使用 脱机部署。 此方法需要最少的 Web 服务器配置,但服务器管理员必须手动将 Web 包复制到服务器上,并通过 IIS 管理器导入它。
有关这些方法的主要功能、优点和缺点的详细信息,请参阅 选择正确的 Web 部署方法。
是,如果要允许非管理员用户将内容部署到特定 IIS 网站。 在以下类型的方案中,此方法通常很理想:
- 过渡或生产环境,其中触发远程部署的人员或服务帐户不太可能有权访问服务器管理员的凭据。
- 托管环境,你希望让远程用户能够更新其网站,而无需让他们完全控制 web 服务器 (或访问其他人的网站) 。
在开发或测试方案中,或在较小的组织中,使用服务器管理员凭据部署内容通常不太有争议的。 在这些方案中,使用 Web 部署远程代理服务配置 Web 服务器以支持部署提供了一种更简单的方法。
任务概述
若要将 Web 服务器配置为使用 Web 部署处理程序方法从远程计算机接受和部署 Web 包,需要:
- 创建或选择一个域用户帐户, (“非管理员用户”) 用于执行部署的凭据。
- 安装 IIS 7.5,包括 Web 管理服务和基本身份验证模块。
- 安装 Web 部署 2.1 或更高版本。
- 将 Web 管理服务配置为允许远程连接,并启动该服务。
- 创建 IIS 网站以托管已部署的内容。
- 在 IIS 管理器中授予对网站的非管理员用户权限。
- 确保 Web 管理服务委派规则允许服务使用非管理员用户帐户添加和更改网站内容。
- 配置任何防火墙以允许端口 8172 上的传入连接。
若要专门托管 ContactManager 示例解决方案,还需要:
- 安装 .NET Framework 4.0。
- 安装 ASP.NET MVC 3。
本主题将演示如何执行其中每个过程。 本主题中的任务和演练假定你从运行Windows Server 2016的干净服务器生成开始。 在继续之前,请确保:
- Windows Server 2016
- 服务器已加入域。
- 服务器具有静态 IP 地址。
安装产品和组件
本部分将指导你在 Web 服务器上安装所需的产品和组件。 在开始之前,一个好的做法是运行Windows 更新,以确保服务器是完全最新的。
在这种情况下,需要安装以下各项:
- IIS 7 建议的配置。 这会在 Web 服务器上启用 Web 服务器 (IIS) 角色,并安装托管 ASP.NET 应用程序所需的 IIS 模块和组件集。
- IIS:管理服务。 这会在 IIS 中安装 Web 管理服务 (WMSvc) 。 此服务支持远程管理 IIS 网站,并将 Web 部署处理程序终结点公开给客户端。
- IIS:基本身份验证。 这将安装 IIS 基本身份验证模块。 这样,Web 管理服务 (WMSvc) 对所提供的凭据进行身份验证。
- Web 部署工具 2.1 或更高版本。 这会在服务器上安装 Web 部署 (及其基础可执行文件(MSDeploy.exe) )。 在此过程中,它会安装 Web 部署处理程序并将其与 Web 管理服务集成。
- .NET Framework 4.0。 这是运行基于此版本的.NET Framework构建的应用程序所必需的。
- 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 更新 下载并安装已安装的新产品和组件的任何可用更新。
配置 Web 管理服务
安装所需的所有内容后,下一步是在 IIS 中配置 Web 管理服务。 在高级别上,需要完成以下任务:
- 在服务器级别启用基本身份验证。
- 将 Web 管理服务配置为接受远程连接。
- 启动 Web 管理服务。
- 检查所需的 Web 管理服务委派规则是否已到位。
配置 Web 管理服务
创建和配置 IIS 网站
需要创建并配置 IIS 网站以托管内容,然后才能将 Web 内容部署到服务器。 Web 部署只能将 Web 包部署到现有 IIS 网站;它无法为你创建网站。 还需要执行一些额外的配置,以允许非管理员帐户远程部署内容。 在高级别上,需要完成以下任务:
- 在文件系统上创建一个文件夹以托管内容。
- 创建 IIS 网站来提供内容,并将其与本地文件夹相关联。
- 授予对本地文件夹的应用程序池标识的读取权限。
- 向将部署 Web 应用程序的域帐户授予必要的 IIS 权限。
尽管没有什么能阻止你将内容部署到 IIS 中的默认网站,但除测试或演示方案外,不建议使用此方法。 若要模拟生产环境,应使用特定于应用程序要求的设置创建新的 IIS 网站。
创建 IIS 网站
为了使网站提供内容,应用程序池标识必须对存储内容的本地文件夹具有读取权限。 在 IIS 7.5 中,应用程序池默认使用唯一的应用程序池标识运行 (,而以前版本的 IIS 则应用程序池通常使用网络服务帐户) 运行。 应用程序池标识不是真正的用户帐户,不会显示在任何用户或组列表中,而是在启动应用程序池时动态创建。 每个应用程序池标识都作为隐藏项添加到本地 IIS_IUSRS 安全组。
若要授予对文件或文件夹的应用程序池标识的权限,有两个选项:
- 使用 IIS AppPool (应用程序池名称 ) ((例如 IIS AppPool\DemoSite) )格式直接分配对应用程序池标识的权限。
- 为 IIS_IUSRS 组分配权限。
最常见的方法是将权限分配给本地 IIS_IUSRS 组,因为此方法使你无需重新配置文件系统权限即可更改应用程序池。 下一过程使用此基于组的方法。
为 IIS 网站配置文件夹权限
作为最后一项任务,你必须向非管理员用户授予相应的权限,你将使用其凭据部署内容。 此用户需要权限才能将内容远程部署到网站。
为非管理员域用户配置 IIS 网站权限
配置防火墙例外
默认情况下,IIS Web 管理服务侦听 TCP 端口 8172。 如果在 Web 服务器上启用了 Windows 防火墙,则需要创建新的入站规则以允许端口 8172 上的 TCP 流量, (Windows 防火墙) 默认允许所有出站流量。 如果使用第三方防火墙,则需要创建允许流量的规则。
结束语
Web 服务器现在应已准备好通过 Web 管理服务接受 Web 部署处理程序的远程部署。 在尝试将 Web 应用程序部署到服务器之前,可能需要检查以下要点:
- 是否在 IIS 中的服务器级别启用了基本身份验证?
- 是否启用了与 Web 管理服务的远程连接?
- 是否已启动 Web 管理服务?
- 是否存在管理服务委派规则?
- 应用程序池标识是否对网站的源文件夹具有读取访问权限?
- 非管理员用户帐户是否在 IIS 中具有站点级权限?
- 防火墙是否允许 TCP 端口 8172 上的服务器的传入连接?
深入阅读
原文链接: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-web-deploy-handler