配置用于 Web 部署发布的 Web 服务器(离线部署)

作者 :Jason Lee

本主题介绍如何配置 IIS Web 服务器以支持脱机 Web 发布和部署。

使用 Internet Information Services (IIS) Web 部署工具 (Web 部署) 2.0 或更高版本时,可以使用三种main方法将应用程序或站点置于 Web 服务器上。 方法:

  • 使用 Web 部署远程代理服务。 此方法所需的 Web 服务器配置较少,但需要提供本地服务器管理员的凭据才能将任何内容部署到服务器。
  • 使用 Web 部署处理程序。 此方法要复杂得多,需要付出更多的初始精力来设置 Web 服务器。 但是,使用此方法时,可以将 IIS 配置为允许非管理员用户执行部署。 Web 部署处理程序仅在 IIS 版本 7 或更高版本中可用。
  • 使用 脱机部署。 此方法需要最少的 Web 服务器配置,但服务器管理员必须手动将 Web 包复制到服务器上,并通过 IIS 管理器导入它。

有关这些方法的主要功能、优点和缺点的详细信息,请参阅 选择正确的 Web 部署方法

是,如果网络基础结构或安全限制阻止远程部署。 在面向 Internet 的生产环境中,这很可能是这种情况,其中 Web 服务器与服务器基础结构的其余部分隔离(无论是物理上还是防火墙和子网)。

显然,如果定期更新 Web 应用程序,此方法将变得不太理想。 如果基础结构允许,可能需要考虑使用 Web 部署处理程序或 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 的干净服务器版本开始。 在继续之前,请确保:

  • 已安装 Windows Server 2008 R2 Service Pack 1 和所有可用更新。
  • 服务器已加入域。
  • 服务器具有静态 IP 地址。

注意

有关将计算机加入域的详细信息,请参阅 将计算机加入域和登录。 有关配置静态 IP 地址的详细信息,请参阅 配置静态 IP 地址

安装产品和组件

本部分将指导你在 Web 服务器上安装所需的产品和组件。 在开始之前,一个好的做法是运行 Windows 更新,以确保服务器完全处于最新状态。

在这种情况下,需要安装以下项:

  • IIS 7 建议的配置。 这会在 Web 服务器上启用 Web 服务器 (IIS) 角色,并安装承载 ASP.NET 应用程序所需的 IIS 模块和组件集。
  • .NET Framework 4.0。 这是运行基于此版本.NET Framework构建的应用程序所必需的。
  • Web 部署工具 2.1 或更高版本。 这会在服务器上安装 Web 部署 (及其基础可执行文件(MSDeploy.exe) )。 Web 部署与 IIS 集成,可用于导入和导出 Web 包。
  • ASP.NET MVC 3。 这将安装运行 MVC 3 应用程序所需的程序集。

注意

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

安装所需的产品和组件

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

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

    注意

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

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

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

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

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

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

如果在安装 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 更新下载并安装已安装的新产品和组件的任何可用更新。

配置 IIS 网站

在将 Web 内容部署到服务器之前,需要创建并配置 IIS 网站来托管内容。 Web 部署只能将 Web 包部署到现有 IIS 网站;它无法为你创建网站。 概括而言,需要完成以下任务:

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

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

创建和配置 IIS 网站

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

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

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

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

  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 2008 R2 中的 DNS 服务器角色的详细信息,请参阅 DNS 服务器概述

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

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

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

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

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

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

    注意

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

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

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

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

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

    在“.NET Framework版本”列表中,选择“.NET Framework 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. 单击“ 确定 ”关闭 (文件夹名称) “属性 ”对话框。

禁用远程代理服务

安装 Web 部署时,将自动安装并启动 Web 部署代理服务。 此服务允许从远程位置部署和发布 Web 包。 在这种情况下,不会使用远程部署功能,因此应停止并禁用该服务。

注意

无需停止远程代理服务即可手动导入和部署 Web 包。 但是,如果不打算使用该服务,最好停止并禁用该服务。

可以使用各种命令行实用工具或Windows PowerShell cmdlet 以多种方式停止和禁用服务。 此过程描述了一种基于 UI 的简单方法。

停止和禁用远程代理服务

  1. 在“开始” 菜单上,指向“管理工具” ,然后单击“服务” 。

  2. 在“服务”控制台中,找到“Web 部署代理服务”行。

    在“服务”控制台中,找到“Web 部署代理服务”行。

  3. 右键单击“Web 部署代理服务”,然后单击“属性”。

  4. “Web 部署代理服务属性”对话框中,单击“停止”。

  5. “启动类型 ”列表中,选择“ 已禁用”,然后单击“ 确定”。

    在“启动类型”列表中,选择“已禁用”,然后单击“确定”。

结论

此时,Web 服务器已准备好进行脱机 Web 包部署。 在尝试将 Web 包导入 IIS 网站之前,可能需要检查以下要点:

  • 是否已将 ASP.NET 4.0 注册到 IIS?
  • 应用程序池标识是否对网站的源文件夹具有读取访问权限?
  • 是否已停止 Web 部署代理服务?