手动安装 Web 程序包

作者 :Jason Lee

本主题介绍如何将 Web 部署包手动导入 Internet Information Services (IIS) 。

主题生成和打包 Web 应用程序项目介绍了 IIS Web 部署工具 (Web 部署) 如何结合Microsoft 生成引擎 (MSBuild) 和 Web 发布管道 (WPP) ,将 Web 应用程序项目打包到单个 zip 文件中。 此文件通常称为 Web 部署包 (或简称为部署包) ,包含 IIS 在 Web 服务器上重新创建 Web 应用程序所需的所有内容和配置信息。

创建 Web 部署包后,可以通过各种方式将其发布到 IIS 服务器。 在很多情况下,你需要利用 MSBuild、WPP 和 Web 部署之间的集成点,在自动化或单步生成和部署过程中远程创建和安装 Web 包。 部署 Web 包中介绍了此过程。 但是,这并非始终可行。 假设要将 Web 应用程序部署到面向 Internet 的生产环境。 出于安全原因,此类生产环境最可能位于与生成服务器分开的子网上的防火墙后面,位于外围网络 (也称为 DMZ、非军事区域和屏蔽子网) 。 在许多情况下,生产环境将位于单独的域或物理隔离的网络上。

在这些情况下,唯一的选择可能是将 Web 包移植到目标服务器,然后手动将其导入 IIS。 尽管此方法排除了自动部署,但它仍然是一种非常有效的 Web 应用程序发布技术,只需将单个 zip 文件复制到 Web 服务器,并使用向导引导你完成导入过程。

本主题是一系列教程的一部分,这些教程基于名为 Fabrikam, Inc 的虚构公司的企业部署要求。本教程系列使用示例解决方案( Contact Manager 解决方案)来表示具有实际复杂程度的 Web 应用程序,包括 ASP.NET MVC 3 应用程序、Windows Communication Foundation (WCF) 服务和数据库项目。

任务概述

需要完成以下高级任务才能将 Web 部署包导入 IIS:

  • 使用 MSBuild 命令行、团队生成或 Visual Studio 2010 创建 Web 部署包。
  • 将 Web 包复制到目标 Web 服务器。
  • 使用 IIS 管理器中的导入应用程序包向导安装 Web 包,并为连接字符串和服务终结点等变量提供值。

本主题将演示如何执行这些过程。 本主题中的任务和演练假定你已熟悉 Web 包、Web 部署和 WPP 背后的概念。 有关详细信息,请参阅 生成和打包 Web 应用程序项目

注意

本主题最好与 为 Web 部署发布配置 Web 服务器 (脱机部署) 结合使用,其中介绍了如何安装所需组件并准备 IIS 网站以导入包。

创建 Web 部署包

第一个任务是为要部署的 Web 应用程序项目创建 Web 部署包。 可以通过多种方式创建 Web 包。

方法 1:使用 Visual Studio 在生成过程中创建包

可以通过项目属性页上的“ 打包/发布 Web”选项卡,将 Web 应用程序项目配置为在每次生成后创建 Web 部署包。 生成和打包 Web 应用程序项目中介绍了此过程。

方法 2:使用 MSBuild 创建包作为生成过程的一部分

如果通过自定义 MSBuild 项目文件或命令行直接使用 MSBuild 生成 Web 应用程序项目,则可以通过在命令中包含 DeployOnBuild=trueDeployTarget=Package 属性来创建 Web 部署包作为生成过程的一部分。 了解生成过程中介绍了此过程。

方法 3:在 Visual Studio 中按需创建包

可以随时在 Visual Studio 2010 中为 Web 应用程序项目创建 Web 部署包。 为此,请在“解决方案资源管理器”窗口中右键单击 Web 应用程序项目,然后单击“生成部署包”。

若要为 Web 应用程序项目创建 Web 部署包,请在“解决方案资源管理器”窗口中右键单击 Web 应用程序项目,然后单击“生成部署包”。

方法 4:从命令行按需创建包

可以通过使用 MSBuild 在 Web 应用程序项目上调用包目标,从命令行创建 Web 部署包 。 命令应如下所示:

MSBuild.exe [Path to your project].[csproj/vbproj] /T:Package

无论使用哪种方法,最终结果都是相同的。 WPP 在 Web 应用程序项目的输出文件夹中将 Web 部署包创建为 zip 文件以及各种支持资源。

W P 在 Web 应用程序项目的输出文件夹中创建一个 Web 部署包作为 zip 文件,以及各种支持资源。

计划手动导入 Web 包时,只需 zip 文件。 将此文件复制到目标 Web 服务器,可以开始导入过程。

将 Web 包导入 IIS

可以使用下一过程将 Web 部署包从本地文件系统导入 IIS 网站。 在执行此过程之前,请确保:

  • 已将 Web 部署包复制到 Web 服务器。
  • 配置 IIS Web 服务器以托管应用程序。

有关配置 IIS Web 服务器以支持 Web 部署包的详细信息,请参阅 为 Web 部署发布配置 Web 服务器 (脱机部署)

使用 IIS 管理器导入 Web 部署包

  1. 在 IIS 管理器的“ 连接 ”窗格中,右键单击 IIS 网站,指向 “部署”,然后单击“ 导入应用程序”。

    在“I S 管理器”的“连接”窗格中,右键单击 IIS 网站,指向“部署”,然后单击“导入应用程序”。

  2. 在导入应用程序包向导的 “选择包” 页上,浏览到 Web 部署包的位置,然后单击“ 下一步”。

  3. “选择包的内容” 页上,清除不需要的任何内容,然后单击“ 下一步”。

    在“选择包的内容”页上,清除不需要的任何内容,然后单击“下一步”。

    注意

    在许多情况下,你可能不希望导入 Web 部署包附带的所有内容。 例如,你可能不希望允许 Web 部署替换关联的数据库。
    “授予权限”条目在目标文件系统上设置权限,以确保应用程序池标识可以访问存储网站内容的物理文件夹。 此外,向匿名身份验证用户授予对文件夹的读取权限,以允许应用程序提供多用途 Internet 邮件扩展 (MIME) 类型文件。 如果需要,可以删除这些条目并手动配置权限。

  4. “输入应用程序包信息 ”页上,提供请求的信息。

    在“输入应用程序包信息”页上,提供请求的信息。

  5. 创建 Web 包时,WPP 会分析应用程序的配置文件,并检测任何变量,例如连接字符串和服务终结点。 在这种情况下:

    1. 应用程序路径 是要在其中安装应用程序的 IIS 路径。 此设置对于 WPP 创建的所有部署包都是通用的。

    2. ContactService 服务终结点地址 是应用程序应用来与部署的 WCF 服务通信的地址。 此设置对应于 web.config 文件中的条目。

    3. 第一个 连接字符串 设置是 Web 部署应用于部署与应用程序关联的数据库的连接字符串 (,在这种情况下,ASP.NET 成员资格数据库) 。 此设置对应于 Visual Studio 中 “打包/发布 SQL ”选项卡上的设置。

    4. 第二个 连接字符串 设置是应用程序在数据库启动并运行时实际用于与数据库通信的连接字符串。 这对应于 web.config 文件中的连接字符串条目。

      注意

      有关这些参数来自何处的详细信息,请参阅 为 Web 包部署配置参数

  6. 单击“下一步”。

  7. 如果这不是你第一次将应用程序部署到此网站,系统会提示你指定是否要在安装之前删除所有现有内容。 选择适合你的要求的选项,然后单击“ 下一步”。

    选择适合你的要求的选项,然后单击“下一步”。

  8. IIS 完成包安装后,单击“ 完成”。

    当我完成安装包后,单击“完成”。

此时,已成功将 Web 应用程序发布到 IIS。

结论

本主题介绍如何使用 IIS 管理器将 Web 部署包导入 IIS 网站。 当安全或基础结构限制使远程部署变得不可能或不可取时,这种 Web 应用程序发布方法很合适。

深入阅读

有关如何配置 IIS Web 服务器以支持手动导入 Web 包的指南,请参阅 为 Web 部署发布配置 Web 服务器 (脱机部署) 。 有关部署 Web 包的更多常规指南,请参阅 演练:使用 Web 部署包部署 Web 应用程序项目 (第 1 部分(共 4 部分) )。