配置用于 Web 部署发布的 Web 服务器(Web 部署处理程序)

本主题介绍如何配置 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 地址。

注意

有关将计算机加入域的详细信息,请参阅 将计算机加入域和登录。 有关配置静态 IP 地址的详细信息,请参阅 配置静态 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 应用程序所需的程序集。

注意

本演练介绍如何使用 Web 平台安装程序安装和配置各种组件。 虽然无需使用 Web 平台安装程序,但它通过自动检测依赖项并确保始终获得最新的产品版本来简化安装过程。 有关详细信息,请参阅 Microsoft Web 平台安装程序

安装所需的产品和组件

  1. 下载并安装 Web 平台安装程序

  2. 安装完成后,Web 平台安装程序将自动启动。

    注意

    现在,可以随时从“ 开始 ”菜单启动 Web 平台安装程序。 为此,请在“开始”菜单上单击“所有程序”,然后单击“Microsoft Web 平台安装程序”。

  3. 在“Web 平台安装程序”窗口的顶部,单击“产品”

  4. 在窗口左侧的导航窗格中,单击“ 框架”。

  5. Microsoft .NET Framework 4 行中,如果尚未安装.NET Framework,请单击“添加”。

    注意

    你可能已经通过 Windows 更新 安装了 .NET Framework 4.0。 如果已安装产品或组件,Web 平台安装程序将通过将 “添加” 按钮替换为文本“ 已安装”来指示这一点。

    如果已安装产品或组件,Web 平台安装程序将通过将“添加”按钮替换为文本“已安装”来指示这一点。

  6. ASP.NET MVC 3 (Visual Studio 2010) 行中,单击“ 添加”。

  7. 在导航窗格中,单击“ 服务器”。

  8. “IIS 7 建议的配置” 行中,单击“ 添加”。

  9. “Web 部署工具 2.1 ”行中,单击“ 添加”。

  10. “IIS: 基本身份验证 ”行中,单击“ 添加”。

  11. “IIS: 管理服务 ”行中,单击“ 添加”。

  12. 单击“安装” 。 Web 平台安装程序将显示要安装的产品列表以及任何关联的依赖项,并提示你接受许可条款。

    单击“安装”。Web 平台安装程序将显示产品列表以及要安装的任何关联依赖项,并提示你接受许可条款。

  13. 查看许可条款,如果同意条款,请单击“ 我接受”。

  14. 安装完成后,单击“ 完成”,然后关闭 “Web 平台安装程序” 窗口。

如果在安装 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

  1. 单击“ 开始”,然后键入 “命令提示符”。

  2. 在搜索结果中,右键单击“ 命令提示符”,然后单击“ 以管理员身份运行”。

  3. 在命令提示符窗口中,导航到 %WINDIR%\Microsoft.NET\Framework\v4.0.30319 目录。

  4. 键入此命令,然后按 Enter:

    aspnet_regiis -iru
    
  5. 如果计划随时托管 64 位 Web 应用程序,还应将 64 位版本的 ASP.NET 注册到 IIS。 为此,请在命令提示符窗口中导航到 %WINDIR%\Microsoft.NET\Framework64\v4.0.30319 目录。

  6. 键入此命令,然后按 Enter:

    aspnet_regiis -iru
    

作为一种好的做法,此时再次使用Windows 更新下载并安装已安装的新产品和组件的任何可用更新。

配置 Web 管理服务

安装所需的一切内容后,下一步是在 IIS 中配置 Web 管理服务。 概括而言,需要完成以下任务:

  • 在服务器级别启用基本身份验证。
  • 将 Web 管理服务配置为接受远程连接。
  • 启动 Web 管理服务。
  • 检查所需的 Web 管理服务委派规则是否已到位。

配置 Web 管理服务

  1. “开始 ”菜单上,指向 “管理工具”,然后单击“ Internet Information Services (IIS) 管理器”。

  2. 在 IIS 管理器的“ 连接 ”窗格中,单击服务器节点 (例如 ,STAGEWEB1) 。

    在 IIS 管理器的“连接”窗格中,单击服务器节点 (例如STAGEWEB1) 。

  3. 在中心窗格中的 “IIS”下,双击“ 身份验证”。

    在中心窗格中的“IIS”下面,双击“身份验证”。

  4. 右键单击“ 基本身份验证”,然后单击“ 启用”。

    右键单击“基本身份验证”,然后单击“启用”。

  5. 在“ 连接 ”窗格中,再次单击服务器节点以返回到顶级设置。

  6. 在中心窗格中的“ 管理”下,双击“ 管理服务”。

    在中心窗格中的“管理”下,双击“管理服务”。

  7. 在中心窗格中,选择“ 启用远程连接”。

    注意

    如果 Web 管理服务已在运行,则需要先停止它。

  8. “操作 ”窗格中,单击“ 启动 ”以启动 Web 管理服务。

    在“操作”窗格中,单击“启动”以启动 Web 管理服务。

  9. 如果系统提示保存设置,请单击“ ”。

    注意

    可能还需要将服务配置为自动启动。 为此,请打开“服务”控制台,右键单击“ Web 管理服务”,然后单击“ 属性”。 在 “启动类型 ”下拉列表中,选择“ 自动”,然后单击“ 确定”。

  10. 在“ 连接 ”窗格中,再次单击服务器节点以返回到顶级设置。

  11. 在中心窗格中的“ 管理”下,双击“ 管理服务委派”。

    在中心窗格中的“管理”下,双击“管理服务委派”。

  12. 验证中心窗格是否包含一组规则。

    验证中心窗格是否包含一组规则。

    这些规则允许授权的 Web 管理服务用户使用各种 Web 部署提供程序。 例如,若要通过 Web 部署处理程序将 Web 应用程序和内容部署到 IIS,必须有一个委派规则,该规则允许所有经过身份验证的 Web 管理服务用户使用 contentPathiisApp 提供程序, (可在屏幕截图) 中看到的最后一个规则。

    如果按照本主题中所述的顺序安装产品和组件,则最新版本的 Web 部署应自动将所有必需的委派规则添加到 Web 管理服务。 如果“管理服务委派”页未显示任何规则,则需要自行创建这些规则。 有关如何执行此操作的说明,请参阅 配置 Web 部署处理程序

  13. 在“ 连接 ”窗格中,再次单击服务器节点以返回到顶级设置。

创建和配置 IIS 网站

在将 Web 内容部署到服务器之前,需要创建并配置 IIS 网站来托管内容。 Web 部署只能将 Web 包部署到现有 IIS 网站;它无法为你创建网站。 还需要执行一些额外的配置,以允许非管理员帐户远程部署内容。 概括而言,需要完成以下任务:

  • 在文件系统上创建一个文件夹来托管内容。
  • 创建 IIS 网站来提供内容,并将其与本地文件夹相关联。
  • 向本地文件夹上的应用程序池标识授予读取权限。
  • 向将部署 Web 应用程序的域帐户授予必要的 IIS 权限。

尽管没有任何内容可阻止你将内容部署到 IIS 中的默认网站,但除了测试或演示方案之外,不建议使用此方法。 若要模拟生产环境,应使用特定于应用程序要求的设置创建新的 IIS 网站。

创建 IIS 网站

  1. 在本地文件系统上,创建一个文件夹来存储内容 (例如 C:\DemoSite) 。

  2. “开始 ”菜单上,指向 “管理工具”,然后单击“ Internet Information Services (IIS) 管理器”。

  3. 在 IIS 管理器的“ 连接 ”窗格中,展开服务器节点 (例如 ,STAGEWEB1) 。

    在 IIS 管理器的“连接”窗格中,展开服务器节点 (例如,STAGEWEB1) 。

  4. 右键单击“ 站点” 节点,然后单击“ 添加网站”。

  5. 在“ 站点名称 ”框中,键入 IIS 网站的名称 (例如 DemoSite) 。

  6. 在“ 物理路径 ”框中键入“ (”或浏览以) 本地文件夹的路径, (例如 C:\DemoSite) 。

  7. 在“ 端口 ”框中,键入要托管网站的端口号, (例如 85) 。

    注意

    标准端口号为 80(对于 HTTP)和 443(对于 HTTPS)。 但是,如果在端口 80 上托管此网站,则需要先停止默认网站,然后才能访问站点。

  8. “主机名 ”框留空,除非要为网站配置域名系统 (DNS) 记录,然后单击“ 确定”。

    将“主机名”框留空,除非要为网站配置域名系统 (DNS) 记录,然后单击“确定”。

    注意

    在生产环境中,可能需要在端口 80 上托管网站,并配置主机标头以及匹配的 DNS 记录。 有关在 IIS 7 中配置主机标头的详细信息,请参阅 为网站配置主机标头 (IIS 7) 。 有关 Windows Server 中的 DNS 服务器角色的详细信息,请参阅 DNS 服务器概述

  9. 在“操作” 窗格中的“编辑站点” 之下,单击“绑定”

  10. 在“网站绑定”对话框中,单击“添加”

    在“网站绑定”对话框中,单击“添加”。

  11. “添加站点绑定 ”对话框中,设置 IP 地址端口 以匹配现有站点配置。

  12. 在“ 主机名 ”框中,键入 Web 服务器的名称 (例如 ,STAGEWEB1) ,然后单击“ 确定”。

    在“主机名”框中,键入 Web 服务器的名称 (例如,STAGEWEB1) ,然后单击“确定”。

    注意

    第一个站点绑定允许使用 IP 地址和端口 或 http://localhost:85在本地访问站点。 第二个站点绑定允许使用计算机名称 (从域中的其他计算机访问站点,例如, http://stageweb1:85).

  13. “网站绑定”对话框中,单击“关闭”

  14. 在“连接”窗格中,单击“应用程序池”

  15. 在“应用程序池”窗格中,右键单击应用程序池的名称,然后单击“基本设置”。 默认情况下,应用程序池的名称将与网站名称匹配, (例如 DemoSite) 。

  16. .NET CLR 版本 列表中,选择“ .NET CLR v4.0.30319”,并单击“ 确定”。

    在 .NET CLR 版本列表中,选择“.NET CLR v4.0.30319”,并单击“确定”。

    注意

    示例解决方案需要 .NET Framework 4.0。 通常,这不是 Web 部署的要求。

为了使网站提供内容,应用程序池标识必须对存储内容的本地文件夹具有读取权限。 在 IIS 7.5 中,应用程序池默认使用唯一的应用程序池标识运行, (与以前版本的 IIS 相比,应用程序池通常使用网络服务帐户) 运行。 应用程序池标识不是真正的用户帐户,不会显示在任何用户或组列表中,而是在启动应用程序池时动态创建的。 每个应用程序池标识都作为隐藏项添加到本地 IIS_IUSRS 安全组。

若要授予对文件或文件夹的应用程序池标识的权限,有两个选项:

  • 使用 IIS AppPool (应用程序池名称 ) 格式 (例如 IIS AppPool\DemoSite) ,直接向应用程序池标识分配权限。
  • IIS_IUSRS 组分配权限。

最常见的方法是将权限分配给本地 IIS_IUSRS 组,因为此方法使你无需重新配置文件系统权限即可更改应用程序池。 下一过程使用此基于组的方法。

注意

有关 IIS 7.5 中的应用程序池标识的详细信息,请参阅 应用程序池标识

为 IIS 网站配置文件夹权限

  1. 在 Windows 资源管理器中,浏览到本地文件夹的位置。

  2. 右键单击该文件夹,然后单击“属性”

  3. 在“Security”选项卡上,依次单击“Edit”、“Add”。

  4. 单击“位置”。 在“ 位置 ”对话框中,选择本地服务器,然后单击“ 确定”。

    单击“位置”。在“位置”对话框中,选择本地服务器,然后单击“确定”。

  5. “选择用户或组 ”对话框中,键入 IIS_IUSRS,单击“ 检查名称”,然后单击“ 确定”。

  6. “ (文件夹名称的权限) ”对话框中,请注意,新组已默认分配了 “读取 & 执行”、“ 列出文件夹内容”和 “读取 ”权限。 保持此更改不变,然后单击“ 确定”。

  7. 单击“ 确定 ”关闭 (文件夹名称) “属性 ”对话框。

作为最终任务,你必须向非管理员用户授予相应的权限,你将使用其凭据来部署内容。 此用户需要权限才能将内容远程部署到网站。

为非管理员域用户配置 IIS 网站权限

  1. 在 IIS 管理器的“ 连接 ”窗格中,右键单击网站节点 (例如 DemoSite) ,指向 “部署”,然后单击“ 配置 Web 部署发布”。

    在 IIS 管理器的“连接”窗格中,右键单击网站节点 (例如 DemoSite) ,指向“部署”,然后单击“配置 Web 部署发布”。

  2. 在“ 配置 Web 部署发布 ”对话框的“ 选择要授予发布权限的用户 ”列表右侧,单击省略号按钮。

    在“配置 Web 部署发布”对话框的“选择要授予发布权限的用户”列表右侧,单击省略号按钮。

  3. 在“ 允许用户 ”对话框中,键入要用于部署内容的帐户的域和用户名,然后单击“ 确定”。

    在“允许用户”对话框中,键入要用于部署内容的帐户的域和用户名,然后单击“确定”。

  4. “配置 Web 部署发布 ”对话框中,单击“ 设置”。

    在“配置 Web 部署发布”对话框中,单击“设置”。

    注意

    此操作在一个步骤中执行两个关键功能。 首先,它根据在上一部分中检查的委派规则,授予用户通过 Web 管理服务远程修改网站的权限。 其次,它授予用户对网站的源文件夹的完全控制权,从而允许用户添加、修改和设置对网站内容的权限。

  5. “配置 Web 部署发布 ”对话框中,单击“ 关闭”。

配置防火墙例外

默认情况下,IIS Web 管理服务侦听 TCP 端口 8172。 如果在 Web 服务器上启用了 Windows 防火墙,则需要创建新的入站规则,以允许端口 8172 上的 TCP 流量, (Windows 防火墙) 默认允许所有出站流量。 如果使用第三方防火墙,则需要创建允许流量的规则。

方向 从端口 转网 端口类型
入站 任意 8172 TCP
出站 8172 任意 TCP

有关在 Windows 防火墙中配置规则的详细信息,请参阅 配置防火墙规则。 对于第三方防火墙,请参阅产品文档。

结论

Web 服务器现在应该已准备好通过 Web 管理服务接受 Web 部署处理程序的远程部署。 在尝试将 Web 应用程序部署到服务器之前,可能需要检查以下要点:

  • 是否在 IIS 中的服务器级别启用了基本身份验证?
  • 是否启用了与 Web 管理服务的远程连接?
  • 是否已启动 Web 管理服务?
  • 是否有管理服务委派规则?
  • 应用程序池标识是否具有对网站的源文件夹的读取访问权限?
  • 非管理员用户帐户是否在 IIS 中具有站点级权限?
  • 防火墙是否允许在 TCP 端口 8172 上与服务器的传入连接?

深入阅读

有关如何配置自定义Microsoft 生成引擎 (MSBuild) 项目文件以将 Web 包部署到 Web 部署处理程序的指南,请参阅为目标环境配置部署属性