

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 安装 Windows 功能：IIS
<a name="cookbooks-101-opsworks-install-software-feature"></a>

**重要**  
该 AWS OpsWorks Stacks 服务于 2024 年 5 月 26 日终止，新客户和现有客户均已禁用。我们强烈建议客户尽快将其工作负载迁移到其他解决方案。如果您对迁移有疑问，请通过 re [AWS : Post 或通过 Pre](https://repost.aws/) mium Su [AWS pp](https://aws.amazon.com/support) ort 与 AWS 支持 团队联系。

 Windows 功能是一组可选的系统组件，包括 .NET 框架和 Internet Information Services (IIS)。本主题介绍如何实施说明书来安装常用功能 Internet Information Services (IIS)。

**注意**  
[安装程序包](cookbooks-101-opsworks-install-software-package.md)说明了如何安装附带有必须下载到实例并运行的安装程序包 (如 MSI 文件) 的软件。[IIS 说明书](https://github.com/opscode-cookbooks/iis) 

[在 Windows 实例上运行配方](cookbooks-101-opsworks-opsworks-windows.md)说明了如何使用 `powershell_script` 资源安装 Windows 功能。本示例展示了一种替代方法：使用 Chef [Windows 说明书的](https://github.com/opscode-cookbooks/windows) `windows_feature` 资源。此说明书包含一系列使用[部署映像服务和管理](https://technet.microsoft.com/en-us/library/dd744256%28v=ws.10%29.aspx)在 Windows 上执行各种任务 (包括功能安装) 的资源。

**注意**  
Chef 还有一个可用于管理 IIS 的 IIS 说明书。有关更多信息，请参阅 [IIS 说明书](https://github.com/opscode-cookbooks/iis)。

**设置说明书**

1. 前往 [Windows 食谱 GitHub 存储库](https://github.com/opscode-cookbooks/windows)并下载`windows`食谱。

   本示例假定您将以 .zip 文件的形式下载 `windows` 存储库，但您也可以克隆该存储库 (如果您愿意)。

1. 前往 [chef\$1handler 食谱 GitHub 存储库并下载](https://github.com/opscode-cookbooks/chef_handler)食谱。`chef-handler`

   `windows` 说明书依赖于 `chef_handler`；您不会直接使用它。本示例假定您将以 .zip 文件的形式下载 `chef_handler` 存储库，但您也可以克隆该存储库 (如果您愿意)。

1. 将 `windows` 和 `chef_handler` 说明书分别提取到您的说明书目录中的名为 `windows` 和 `chef_handler` 的子目录中。

1. 在您的名为 `install-iis` 的说明书目录中创建一个目录并导航到该目录。

1. 将包含以下内容的 `metadata.rb` 文件添加到 `install-iis`。

   ```
   name "install-iis"
   version "0.1.0"
   
   depends "windows"
   ```

   `depends` 指令允许您在配方中使用 `windows` 说明书资源。

1. 将 `recipes` 目录添加到 `install-iis` 并将名为 `default.rb` 的文件添加到包含以下配方代码的目录。

   ```
   %w{ IIS-WebServerRole IIS-WebServer }.each do |feature|
     windows_feature feature do
       action :install
     end
   end
   
   service 'w3svc' do
     action [:start, :enable]
   end
   ```

   配方将使用 `windows` 说明书的 `windows_feature` 资源安装以下内容：

   1. [IIS Web 服务器角色](https://technet.microsoft.com/en-us/library/cc770634.aspx)。

   1. [IIS Web 服务器](https://technet.microsoft.com/en-us/library/cc753433%28v=ws.10%29.aspx)。

   配方随后使用 [https://docs.chef.io/chef/resources.html#service](https://docs.chef.io/chef/resources.html#service) 资源启动并启用 IIS 服务 (W3SVC)。
**注意**  
有关可用 Windows 功能的完整列表，请[使用 RDP 登录实例](workinginstances-rdp.md)，打开命令提示窗口，然后运行以下命令。请注意，该列表非常长。  

   ```
   dism /online /Get-Features
   ```

1. 创建包含 `install-iis`、`chef_handler` 和 `windows` 说明书的 `.zip` 存档，并将存档上传到 S3 存储桶。公开该存档并记录 URL 以供将来使用。本示例假定该存档命名为 `install-iis.zip`。有关更多信息，请参阅 [说明书存储库](workingcookbook-installingcustom-repo.md)。

   发送到 Amazon S3 存储桶的内容可能包含客户内容。有关删除敏感数据的更多信息，请参阅[如何清空 S3 存储桶？](https://docs.aws.amazon.com/AmazonS3/latest/userguide/empty-bucket.html)或[如何删除 S3 存储桶？](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html)。

按下面所示为本示例创建堆栈。您也可以使用现有 Windows 堆栈。只需更新说明书即可，如下文所述。

**创建堆栈**

1. 打开 [OpsWorks Stacks 控制台](https://console.aws.amazon.com/opsworks/)，然后选择 **Add Stack (添加堆栈)**。指定以下设置，接受其他设置的默认值，然后选择 **Add Stack**。
   + **名称 **- InstallIIS
   + **区域**-美国西部（俄勒冈州）

     本示例在任何区域都有效，但我们建议将美国西部（俄勒冈州）用于教程。
   + **默认操作系统 **- Microsoft Windows Server 2012 R2

1. 选择 **Add a layer** 并将采用以下设置的[自定义层添加到](workinglayers-custom.md)堆栈。
   + **名称 **- IIS
   + **短名称 **- iis

1. 向 IIS 层[添加全天候实例](workinginstances-add.md) (采用默认设置) 并[启动该实例](workinginstances-starting.md)。

您现在可以安装说明书并运行配方

**安装说明书并运行配方**

1. [编辑堆栈以启用自定义说明书](workingcookbook-installingcustom-enable.md)，然后指定以下设置。
   + **存储库类型 **- **S3 存档**
   + 存储库 URL -您之前记录的说明书存档 URL。

   接受其他设置的默认值，然后选择 **Save** 更新堆栈配置。

1. [运行 **Update Custom Cookbooks** 堆栈命令](workingstacks-commands.md)，这会将最新版本的自定义说明书安装到堆栈的联机实例上。如果您的说明书存在早期版本，此命令会覆盖该版本。

1. 通过在 **Recipes to execute** 设置为 **install-iis::default** 的情况下运行 **Execute Recipes** 堆栈命令来执行配方。此命令将启动 Chef 运行，它将运行指定的配方。
**注意**  
为了方便起见，此示例使用了 **Execute Recipes**，但通常会 OpsWorks 让 Stacks 通过将[配方分配给相应的生命周期事件来自动运行](workingcookbook-assigningcustom.md)配方。您可以通过手动触发事件来运行此类配方。您可以使用堆栈命令触发设置和配置事件，使用[部署命令](workingapps-deploying.md)触发部署和取消部署事件。

1. 要确认安装，请[使用 RDP 连接到该实例](workinginstances-rdp.md)并打开 Windows 资源管理器。文件系统现在应有一个 `C:\inetpub` 目录。如果您查看管理工具控制面板应用程序中的服务列表，则会发现 IIS 在底部附近。但是，它将被命名为“World Wide Web Publishing Service”，而不是“IIS”。