配置用于 Web 部署发布的 Web 服务器(远程代理)
作者 :Jason Lee
本主题介绍如何将 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 的干净服务器版本开始。 在继续之前,请确保:
- 已安装 Windows Server 2008 R2 Service Pack 1 和所有可用更新。
- 服务器已加入域。
- 服务器具有静态 IP 地址。
注意
有关将计算机加入域的详细信息,请参阅 将计算机加入域和登录。 有关配置静态 IP 地址的详细信息,请参阅 配置静态 IP 地址。 IIS 6 以后支持远程代理服务,不需要将你加入域。 但是,本教程中的步骤是在 IIS 7.5 上开发和测试的,其他版本的过程可能会有所不同。
安装产品和组件
本部分将指导你在 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 应用程序所需的程序集。
注意
本演练介绍如何使用 Web 平台安装程序安装和配置所需的组件。 尽管无需使用 Web 平台安装程序,但它通过自动检测依赖项并确保始终获得最新的产品版本来简化安装过程。 有关详细信息,请参阅 Microsoft Web 平台安装程序 3.0。
安装所需的产品和组件
下载并安装 Web 平台安装程序。
安装完成后,Web 平台安装程序将自动启动。
注意
现在,可以随时从“ 开始 ”菜单启动 Web 平台安装程序。 为此,请在“开始”菜单上单击“所有程序”,然后单击“Microsoft Web 平台安装程序”。
在 “Web 平台安装程序 3.0 ”窗口顶部,单击“ 产品”。
在窗口左侧的导航窗格中,单击“ 框架”。
在 Microsoft .NET Framework 4 行中,如果尚未安装.NET Framework,请单击“添加”。
注意
你可能已经通过 Windows 更新 安装了 .NET Framework 4.0。 如果已安装产品或组件,Web 平台安装程序将通过将 “添加” 按钮替换为“ 已安装”文本来指示这一点。
在 “ASP.NET MVC 3 (Visual Studio 2010) ”行中,单击“ 添加”。
在导航窗格中,单击“ 服务器”。
在 “IIS 7 建议的配置” 行中,单击“ 添加”。
在 “Web 部署工具 2.1 ”行中,单击“ 添加”。
单击“安装” 。 Web 平台安装程序将显示要安装的产品列表(以及任何关联的依赖项),并提示你接受许可条款。
查看许可条款,如果同意条款,请单击“ 我接受”。
安装完成后,单击“ 完成”,然后关闭 “Web 平台安装程序 3.0 ”窗口。
如果在安装 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
单击“ 开始”,然后键入 “命令提示符”。
在搜索结果中,右键单击“ 命令提示符”,然后单击“ 以管理员身份运行”。
在命令提示符窗口中,导航到 %WINDIR%\Microsoft.NET\Framework\v4.0.30319 目录。
键入此命令,然后按 Enter:
aspnet_regiis -iru
如果计划随时托管 64 位 Web 应用程序,还应将 64 位版本的 ASP.NET 注册到 IIS。 为此,请在命令提示符窗口中导航到 %WINDIR%\Microsoft.NET\Framework64\v4.0.30319 目录。
键入此命令,然后按 Enter:
aspnet_regiis -iru
最佳做法是,此时再次使用 Windows 更新 下载并安装已安装的新产品和组件的任何可用更新。
配置 IIS 网站
需要创建并配置 IIS 网站以托管内容,然后才能将 Web 内容部署到服务器。 Web 部署只能将 Web 包部署到现有 IIS 网站;它无法为你创建网站。 在高级别上,需要完成以下任务:
- 在文件系统上创建一个文件夹以托管内容。
- 创建 IIS 网站来提供内容,并将其与本地文件夹相关联。
- 授予对本地文件夹的应用程序池标识的读取权限。
尽管没有什么能阻止你将内容部署到 IIS 中的默认网站,但除测试或演示方案外,不建议使用此方法。 若要模拟生产环境,应使用特定于应用程序要求的设置创建新的 IIS 网站。
创建和配置 IIS 网站
在本地文件系统上,创建一个文件夹来存储内容 (例如 C:\DemoSite) 。
在 “开始 ”菜单上,指向 “管理工具”,然后单击“ Internet Information Services (IIS) 管理器”。
在 IIS 管理器的“ 连接 ”窗格中,展开服务器节点 (例如 ,TESTWEB1) 。
右键单击“ 站点” 节点,然后单击“ 添加网站”。
在“ 站点名称 ”框中,键入 IIS 网站的名称 (例如 DemoSite) 。
在“ 物理路径 ”框中,键入 (或浏览以) 本地文件夹的路径 (例如 C:\DemoSite) 。
在“ 端口 ”框中,键入要托管网站的端口号 (,例如 85) 。
注意
对于 HTTP,标准端口号为 80,HTTPS 为 443。 但是,如果在端口 80 上托管此网站,则需要先停止默认网站,然后才能访问您的网站。
将“ 主机名 ”框留空,除非要为网站配置域名系统 (DNS) 记录,然后单击“ 确定”。
注意
在生产环境中,可能需要在端口 80 上托管网站,并配置主机标头以及匹配的 DNS 记录。 有关在 IIS 7 中配置主机标头的详细信息,请参阅 为网站配置主机标头 (IIS 7) 。 有关 Windows Server 2008 R2 中的 DNS 服务器角色的详细信息,请参阅 DNS 服务器概述。
在“操作” 窗格中的“编辑站点” 之下,单击“绑定” 。
在“网站绑定”对话框中,单击“添加”。
在“ 添加站点绑定 ”对话框中,设置 IP 地址 和 端口 以匹配现有站点配置。
在“ 主机名 ”框中,键入 Web 服务器的名称 (例如 ,TESTWEB1) ,然后单击“ 确定”。
注意
第一个站点绑定允许使用 IP 地址和端口或
http://localhost:85
在本地访问站点。 第二个站点绑定允许使用计算机名称 (从域中的其他计算机访问站点,例如, http://testweb1:85).在“网站绑定”对话框中,单击“关闭”。
在“连接”窗格中,单击“应用程序池”。
在“应用程序池”窗格中,右键单击应用程序池的名称,然后单击“基本设置”。 默认情况下,应用程序池的名称将与网站名称匹配, (例如 DemoSite) 。
在“.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 网站配置文件夹权限
在 Windows 资源管理器中,浏览到本地文件夹的位置。
右键单击该文件夹,然后单击“属性”。
在“Security”选项卡上,依次单击“Edit”、“Add”。
单击“位置”。 在“ 位置 ”对话框中,选择本地服务器,然后单击“ 确定”。
在 “选择用户或组 ”对话框中,键入 IIS_IUSRS,单击“ 检查名称”,然后单击“ 确定”。
在“ (文件夹名称的权限) ”对话框中,请注意,新组已默认分配了 “读取 & 执行”、“ 列出文件夹内容”和 “读取 ”权限。 保持此更改不变,然后单击“ 确定”。
单击“ 确定 ”关闭 (文件夹名称) “属性 ”对话框。
作为尝试将任何 Web 包部署到服务器之前的最终任务,应确保 Web 部署代理服务正在运行。 从远程计算机部署包时,Web 部署代理服务负责提取和安装包的内容。 默认情况下,当安装 Web 部署工具并在网络服务标识下运行时,该服务将启动。
可以使用各种命令行实用工具或Windows PowerShell cmdlet 来检查服务是否以多种不同方式运行。 此过程描述了一种基于 UI 的简单方法。
检查 Web 部署代理服务正在运行
在“开始” 菜单上,指向“管理工具” ,然后单击“服务” 。
找到“Web 部署代理服务”行,并验证“状态”是否设置为“已启动”。
如果服务尚未启动,请单击“ 启动”。
配置防火墙例外
默认情况下,远程代理服务在 TCP 端口 80 上侦听以下 URL:
http://servername.com/MSDEPLOYAGENTSERVICE
在大多数情况下,不需要为远程代理服务配置任何其他防火墙规则,因为 Web 服务器通常侦听端口 80 上的 HTTP 请求。 如果将安装自定义为侦听非标准端口,则需要根据需要配置防火墙例外。
结论
此时,Web 服务器已准备好从远程计算机接受和安装 Web 包。 在尝试将 Web 应用程序部署到服务器之前,可能需要检查以下要点:
- 是否已将 ASP.NET 4.0 注册到 IIS?
- 应用程序池标识是否具有对网站的源文件夹的读取访问权限?
- Web 部署代理服务是否正在运行?
深入阅读
有关如何配置自定义Microsoft 生成引擎 (MSBuild) 项目文件以将 Web 包部署到远程代理服务的指南,请参阅为目标环境配置部署属性。