

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 Windows 執行個體上安裝套件
<a name="cookbooks-101-opsworks-install-software-package"></a>

**重要**  
 AWS OpsWorks Stacks 此服務已於 2024 年 5 月 26 日終止，並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載遷移至其他解決方案。如果您對遷移有任何疑問，請透過 [AWS re：Post](https://repost.aws/) 或透過 [AWS Premium Support](https://aws.amazon.com/support) 聯絡 AWS 支援 團隊。

**注意**  
此範例假設您已完成[在 Windows 執行個體上執行配方](cookbooks-101-opsworks-opsworks-windows.md)範例。否則，您應該先執行該範例。具體而言，它說明如何啟用 RDP 存取您的執行個體。

如果您的軟體隨附安裝程式套件 (例如 MSI)，則您必須將檔案下載至執行個體後執行。此範例顯示如何實作技術指南來安裝 MSI 套件 (Python 執行時間)，包括如何定義相關的環境變數。如需如何安裝 Windows 功能 (例如 IIS) 的詳細資訊，請參閱[安裝 Windows 功能：IIS](cookbooks-101-opsworks-install-software-feature.md)。

**設定技術指南**

1. 建立並導覽至名為 `installpython` 的目錄。

1. 將 `metadata.rb` 檔案新增至具有以下內容的 `installpython`。

   ```
   name "installpython"
   version "0.1.0"
   ```

1. 將 `recipes` 和 `files` 目錄新增至 `installpython`，並將 `default` 目錄新增至檔案。

1. 將 Python 套件從[適用於 Windows 的 Python 版本](https://www.python.org/downloads/windows/)下載至技術指南的 `files\default` 目錄。此範例會安裝 Windows x86-64 版的 Python 3.5.0a3，以使用名為 `python-3.4.3.amd64.msi` 的 MSI 安裝程式。

1. 將名為 `default.rb` 的檔案新增至包含下列配方程式碼的 `recipes` 目錄。

   ```
   directory 'C:\tmp' do
     rights :full_control, 'Everyone'
     recursive true
     action :create
   end
   
   cookbook_file 'C:\tmp\python-3.4.3.amd64.msi' do
     source "python-3.4.3.amd64.msi"
     rights :full_control, 'Everyone'
     action :create
   end
   
   windows_package 'python' do
     source 'C:\tmp\python-3.4.3.amd64.msi'
     action :install
   end
   
   env "PATH" do
     value 'c:\python34'
     delim ";"
     action :modify
   end
   ```

   配方會執行下列動作：

   1. 使用 [directory](https://docs.chef.io/chef/resources.html#directory) 資源來建立 `C:\tmp` 目錄。

      如需此資源的詳細資訊，請參閱[範例 3：建立目錄](cookbooks-101-basics-directories.md)。

   1. 使用 [cookbook\$1file](https://docs.chef.io/chef/resources.html#cookbook-file) 資源，將安裝程式從技術指南的 `files\default` 目錄複製至 `C:\tmp`。

      如需此資源的詳細資訊，請參閱[從技術指南安裝檔案](cookbooks-101-basics-files.md#cookbooks-101-basics-files-cookbook_file)。

   1. 使用 [windows\$1package](https://docs.chef.io/chef/resources.html#windows-package) 資源執行 MSI 安裝程式，以將 Python 安裝至 `c:\python34`。

      安裝程式會建立必要的目錄並安裝檔案，但不會修改系統的 `PATH` 環境變數。

   1. 使用 [env](https://docs.chef.io/chef/resources.html#env) 資源，將 `c:\python34` 新增至系統路徑。

      您可以使用 env 資源定義環境變數。在此情況下，配方透過將 `c:\python34` 新增至路徑，以讓您輕鬆地從命令列執行 Python 指令碼。
      + 資源名稱指定環境變數的名稱，在此範例中為 `PATH`。
      + `value` 屬性指定變數的值，在此範例中為 `c:\\python34` (您需要逸出 `\` 字元)。
      + `:modify` 動作會將指定的值附加到變數目前值的前面。
      + `delim` 屬性指定隔開新值與現有值的分隔符號，在此範例中為 `;`。

1. 建立 `.zip` 的 `installpython` 封存，並將封存上傳至 S3 儲存貯體，然後將它設為公有。記錄封存的 URL，供日後使用。如需詳細資訊，請參閱[技術指南儲存庫](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 (新增堆疊)**。
   + **名稱** – InstallPython
   + **區域** – 美國西部 （奧勒岡）

     此範例適用於任何區域，但我們建議您使用美國西部 （奧勒岡） 進行教學課程。
   + **預設作業系統** – Microsoft Windows Server 2012 R2

1. 選擇 **Add a layer (新增 layer)**，並[新增自訂 layer](workinglayers-custom.md) 至具有下列設定的堆疊。
   + **名稱** – Python
   + **簡短名稱** – python

1. [新增全年無休執行個體](workinginstances-add.md) (具有預設設定) 至 Python layer，以及[啟動它](workinginstances-starting.md)。

在執行個體上線之後，您可以安裝技術指南並執行配方

**安裝技術指南並執行配方**

1. [編輯堆疊以啟用自訂技術指南](workingcookbook-installingcustom-enable.md)，然後指定下列設定。
   + **儲存庫類型** – **S3 Archive**。
   + **儲存庫 URL** – 您先前記錄的技術指南的封存 URL。

   接受其他設定的預設值，然後選擇 **Save (儲存)** 以更新堆疊組態。

1. [執行 **Update Custom Cookbooks (更新自訂技術指南)** 堆疊命令](workingstacks-commands.md)，以在堆疊線上執行個體上安裝最新版的自訂技術指南。如果存在舊版的技術指南，則此命令會予以覆寫。

1. 透過使用配方執行**執行執行配方**堆疊命令來執行設定為 **的配方****installpython::default**。此命令會啟動 Chef 執行，內含包含 `installpython::default` 的回合清單。
**注意**  
為了方便起見，此範例使用**執行配方**，但您通常會讓 OpsWorks Stacks 透過將配方指派給適當的生命週期事件來[自動執行](workingcookbook-assigningcustom.md)配方。您可以手動觸發事件來執行這類配方。您可以使用堆疊命令來觸發安裝和設定事件，以及使用[部署命令](workingapps-deploying.md)來觸發部署和解除部署事件。

1. 若要驗證安裝，請[使用 RDP 連線至執行個體](workinginstances-rdp.md)，並開啟 Windows 檔案總管。
   + 檔案系統現在應該會有一個 `C:\Python34` 目錄。
   + 如果您從命令列執行 `path`，則它應該看起來像：`PATH=c:\python34;C:\Windows\system32;...`
   + 如果您從命令列執行 `python --version`，則它應該會傳回 `Python 3.4.3`。