

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

# 步驟 2：建立簡易應用程式伺服器堆疊 - Chef 11
<a name="gettingstarted-simple"></a>

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

基本應用程式伺服器堆疊包含一個具有公有 IP 地址的應用程式伺服器執行個體，以接收使用者請求。應用程式程式碼和任何相關檔案均存放於單獨的儲存庫中，並從該位置部署到伺服器。下圖說明此類堆疊。

![\[Diagram showing application server stack with users, internet, and AWS components.\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/php_walkthrough_arch_2.png)


該堆疊具有下列元件：
+ *layer* 代表執行個體的群組，並指定設定它們的方式。

  此範例中的 layer 代表一組 PHP App Server 執行個體。
+ *執行個體*，代表 Amazon EC2 執行個體。

  在此範例中，執行個體已設定為執行 PHP 應用程式伺服器。Layers 可以有任意數量的執行個體。 OpsWorks Stacks 也支援數個其他應用程式伺服器。如需詳細資訊，請參閱[應用程式伺服器 Layer](workinglayers-servers.md)。
+ 「應用程式」**包含在應用程式伺服器上安裝應用程式的必要資訊。

  程式碼存放在遠端儲存庫中，例如 Git 儲存庫或 Amazon S3 儲存貯體。

下列各節說明如何使用 OpsWorks Stacks 主控台來建立堆疊並部署應用程式。您也可以使用 CloudFormation 範本來佈建堆疊。如需本主題中說明之佈建堆疊的範例範本，請參閱 [AWS OpsWorks 程式碼片段](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/quickref-opsworks.html)。

**Topics**
+ [步驟 2.1：建立堆疊 - Chef 11](gettingstarted-simple-stack.md)
+ [步驟 2.2：新增 PHP 應用程式伺服器層 - Chef 11](gettingstarted-simple-layer.md)
+ [步驟 2.3：將執行個體新增至 PHP App Server Layer - Chef 11](gettingstarted-simple-instance.md)
+ [步驟 2.4：建立和部署應用程式 - Chef 11](gettingstarted-simple-app.md)

# 步驟 2.1：建立堆疊 - Chef 11
<a name="gettingstarted-simple-stack"></a>

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

您可以透過建立堆疊來啟動 OpsWorks Stacks 專案，堆疊可做為執行個體和其他資源的容器。堆疊組態會指定某些由堆疊的所有執行個體共享之基本設定，如 AWS 區域和預設作業系統。

**注意**  
此頁面可協助您建立 Chef 11 堆疊。如需如何建立 Chef 12 堆疊的資訊，請參閱[建立堆疊](https://docs.aws.amazon.com/opsworks/latest/userguide/gettingstarted-intro-create-stack.html)。

此頁面可協助您在 Chef 11 中建立堆疊。

**建立新堆疊**

1. 

**新增堆疊**

   登入 [OpsWorks Stacks 主控台](https://console.aws.amazon.com/opsworks/)。若帳戶沒有堆疊，您會看到 **Welcome to AWS OpsWorks (歡迎使用 AWS OpsWorks)** 頁面。按一下 **Add your first stack (新增您的第一個堆疊)**。否則，您會看到 OpsWorks Stacks 儀表板，其中列出您帳戶的堆疊；按一下**新增堆疊**。  
![\[如果您沒有堆疊，您會在 Stacks OpsWorks 主控台中看到初次執行頁面；否則，您會看到帳戶所有堆疊的清單。\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/firstrun.png)

1. 

**設定堆疊**

   在 **Add Stack (新增堆疊)** 頁面上，選擇 **Chef 11 stack (Chef 11 堆疊)** 並指定下列設定：  
**Stack name (堆疊名稱)**  
輸入堆疊的名稱，其中可包含英數字元 (a–z、A–Z 和 0–9) 和連字號 (-)。本演練的範例堆疊名為 **MyStack**。  
**區域**  
選取美國西部 （奧勒岡） 做為堆疊的區域。

   接受其他設定的預設值，然後按一下 **Add Stack (新增堆疊)**。如需各種堆疊設定的詳細資訊，請參閱 [建立新的堆疊](workingstacks-creating.md)。

# 步驟 2.2：新增 PHP 應用程式伺服器層 - Chef 11
<a name="gettingstarted-simple-layer"></a>

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

儘管堆疊基本上是執行個體的容器，但您無法直接將執行個體新增到堆疊。您會新增 layer，其代表相關執行個體的群組，然後將執行個體新增至 layer。

layer 基本上是 Stacks OpsWorks 用來建立具有相同組態之 Amazon EC2 執行個體集的藍圖。您會為每個相關執行個體群組的堆疊新增一個 layer。 OpsWorks Stacks 包含一組內建層，代表執行 MySQL 資料庫伺服器或 PHP 應用程式伺服器等標準軟體套件的執行個體群組。此外，您可以建立部分或完整自訂的 layer，以符合您的特定需求。如需詳細資訊，請參閱[自訂 OpsWorks Stacks](customizing.md)。

MyStack 有一個 layer，即內建的 PHP App Server layer，代表一組充當 PHP 應用程式伺服器的執行個體。如需詳細資訊，包含內建 layer 的描述，請參閱[層](workinglayers.md)。

**將 PHP App Server layer 新增至 MyStack**

1. 

**開啟新增 Layer 頁面**

   建立堆疊完成後， OpsWorks Stacks 會顯示**堆疊**頁面。按一下 **Add a layer (新增 layer)** 以新增您的第一個 layer。  
![\[MyStack interface showing layers and instances sections with options to add components.\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/gs2a.png)

1. 

**指定 Layer 類型及設定 Layer**

   在**層類型**方塊中，選取 **PHP App Server**，接受預設**的 Elastic Load Balancer** 設定，然後按一下**新增層**。在您建立 layer 後，您可以藉由[編輯 layer](workinglayers-basics-edit.md) 來指定其他屬性，例如：EBS 磁碟區組態。  
![\[Add layer interface showing PHP App Server layer type selection and Elastic Load Balancer option.\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/gs3.png)

# 步驟 2.3：將執行個體新增至 PHP App Server Layer - Chef 11
<a name="gettingstarted-simple-instance"></a>

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

Stacks OpsWorks 執行個體代表特定的 Amazon EC2 執行個體：
+ 執行個體的組態會指定一些基本概念，例如 Amazon EC2operating系統和大小；它會執行，但不會執行太多操作。
+ 執行個體的 layer 可透過判斷要安裝何種套件、執行個體是否具有彈性 IP 地址等，為執行個體新增功能。

OpsWorks Stacks 會在與服務互動的每個執行個體上安裝 代理程式。若要將 layer 的功能新增至執行個體， OpsWorks Stacks 會指示代理程式執行稱為 [Chef 配方](http://docs.chef.io/recipes.html)的小型應用程式，這些應用程式可以安裝應用程式和套件、建立組態檔案等。 OpsWorks Stacks 會在執行個體[生命週期](workingcookbook-events.md)中的關鍵點執行配方。例如，OpsWorks 會在執行個體完成開機後執行安裝配方，處理像是安裝軟體等任務，然後在您部署應用程式時執行部署配方安裝程式碼和相關檔案。

**注意**  
如果您對配方的運作方式感到好奇，所有 OpsWorks Stacks 內建配方都在公有 GitHub 儲存庫中：[OpsWorks 技術指南](https://github.com/aws/opsworks-cookbooks)。您也可以建立您自己的自訂配方，讓 OpsWorks Stacks 執行他們，如稍後所說明。

若要將 PHP 應用程式伺服器新增至 MyStack，請將執行個體新增至您在上一個步驟中建立的 PHP App Server layer。

**將執行個體新增至 PHP App Server layer**

1. 

**開啟新增執行個體**

   新增 layer 完成後， OpsWorks Stacks 會顯示 **Layers **頁面。在導覽窗格中按一下**執行個體**，然後在 **PHP App Server** 下按一下**新增執行個體**。

1. 

**設定執行個體**

   每個執行個體都有 Stacks OpsWorks 為您產生的預設主機名稱。在此範例中， OpsWorks Stacks 只會將數字新增至 layer 的簡短名稱。您可以個別設定每個執行個體，包含覆寫您在建立堆疊時指定的部分預設設定，例如可用區域或作業系統。針對本演練，請接受預設設定，然後按一下 **Add Instance (新增執行個體)** 將執行個體新增至 layer。如需詳細資訊，請參閱[執行個體](workinginstances.md)。  
![\[Form for adding a new PHP App Server instance with hostname, size, and subnet options.\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/gs7.png)

1. 

**啟動執行個體**

   到目前為止，您完成了執行個體組態的指定。您必須啟動執行個體，才能建立執行中的 Amazon EC2 執行個體。然後， OpsWorks Stacks 會使用組態設定在指定的可用區域中啟動 Amazon EC2 執行個體。您啟動執行個體之方式的詳細資訊取決於執行個體的「擴展類型」**。在先前的步驟中，您使用預設擴展類型「全年無休」**建立執行個體，該類型必須手動啟動，並且會持續執行直到手動停止。您也可以建立時間型和負載型擴展類型， OpsWorks 堆疊會根據排程或目前的負載自動啟動和停止。如需詳細資訊，請參閱[使用時間型和負載型執行個體管理負載](workinginstances-autoscaling.md)。

   前往 **PHP App Server** 下的 **php-app1**，然後按一下列**的動作**欄中的**開始**以啟動執行個體。  
![\[PHP App Server instance list showing php-app1 stopped with start and delete options.\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/gs8.png)

1. 

**在啟動時監控執行個體的狀態**

   通常需要幾分鐘的時間來啟動 Amazon EC2 執行個體並安裝套件。隨著啟動的進行，執行個體的 **Status (狀態)** 欄位會顯示下列一系列的值：

   1. **requested** - OpsWorks Stacks 已呼叫 Amazon EC2 服務來建立 Amazon EC2 執行個體。

   1. **待**定 - OpsWorks Stacks 正在等待 Amazon EC2 執行個體啟動。

   1. **開機** - Amazon EC2 執行個體正在開機。

   1. **running\$1setup** - Stacks OpsWorks 代理程式正在執行 layer 的設定配方，處理設定和安裝套件等任務，以及部署配方，將任何應用程式部署到執行個體。

   1. **online** - 執行個體已準備就緒可供使用。

   在 php-app1 上線後，**Instances (執行個體)** 頁面看起來應該會像是這樣：  
![\[PHP App Server instance table showing php-app1 online with details like size and IP address.\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/gs9.png)

   頁面的開頭為所有您堆疊執行個體的快速摘要。現在，它會顯示一個線上的執行個體。在 php-app1 的 **Actions (動作)** 資料行中，請注意會停止執行個體的 **stop (停止)** 已取代 **start (啟動)** 和 **delete (刪除)**。

# 步驟 2.4：建立和部署應用程式 - Chef 11
<a name="gettingstarted-simple-app"></a>

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

若要讓 MyStack 更有用，您需要將應用程式部署到 PHP App Server 執行個體。您將應用程式的程式碼和任何相關檔案存放在儲存庫中 (例如 Git)。您需要幾個步驟，才能使那些檔案進入到您的應用程式伺服器內。

**注意**  
本節中的程序適用於 Chef 11 堆疊。如需如何在 Chef 12 堆疊中將應用程式新增至 layer 的資訊，請參閱[新增應用程式](workingapps-creating.md)。

1. 建立應用程式。

   應用程式包含 OpsWorks Stacks 從儲存庫下載程式碼和相關檔案所需的資訊。您也可以指定額外的資訊，例如應用程式的網域。

1. 將應用程式部署到您的應用程式伺服器。

   當您部署應用程式時， OpsWorks Stacks 會觸發部署生命週期事件。代理程式接著會執行執行個體的部署配方，將檔案下載到適當的目錄並執行相關任務，例如設定伺服器、重新啟動服務等。

**注意**  
當您建立新的執行個體時， OpsWorks Stacks 會自動將任何現有的應用程式部署到執行個體。但是，當您建立新的應用程式或更新現有的應用程式時，您必須手動部署應用程式或更新所有現有的執行個體。

此步驟顯示如何手動從公有 Git 儲存庫將範例應用程式部署到應用程式伺服器。若您想要檢查應用程式，請前往 [https://github.com/amazonwebservices/opsworks-demo-php-simple-app](https://github.com/amazonwebservices/opsworks-demo-php-simple-app)。此範例中使用的應用程式位於版本 1 分支中。 OpsWorks Stacks 也支援數種其他儲存庫類型。如需詳細資訊，請參閱[應用程式來源](workingapps-creating.md#workingapps-creating-source)。

**建立和部署應用程式**

1. 

**開啟應用程式頁面**

   在導覽窗格中，按一下 **Apps (應用程式)**，然後在 **Apps (應用程式)** 頁面上，按一下 **Add an app (新增應用程式)**。  
![\[Apps page showing no apps and an "Add an app" button with a brief description.\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/gs13.png)

1. 

**設定應用程式。**

   在 **App (應用程式)** 頁面上，指定下列值：  
**名稱**  
應用程式的名稱， Stacks OpsWorks 用於顯示目的。範例應用程式名為 **SimplePHPApp**。 OpsWorks Stacks 也會為此範例產生簡短名稱 -simplephpapp，供內部和部署配方使用，如下所述。  
**Type**  
應用程式的類型，判斷部署應用程式的位置。此範例使用 **PHP**，會將應用程式部署到 PHP App Server 執行個體。  
**Data source type (資料來源類型)**  
關聯的資料庫伺服器。現階段請先選取 **None (無)**。我們將於[步驟 3：新增後端資料存放區](gettingstarted-db.md)介紹資料庫伺服器。  
**儲存庫類型**  
應用程式的儲存庫類型。範例應用程式存放於 **Git** 儲存庫。  
**Repository URL (儲存器 URL)**  
應用程式的儲存庫 URL。範例 URL 為 **git://github.com/awslabs/opsworks-demo-php-simple-app.git**  
**Branch/Revision (分支/修訂)**  
應用程式的分支或版本。本演練的此部分使用 **version1** 分支。

   保留剩餘設定的預設值，然後按一下 **Add App (新增應用程式)**。如需詳細資訊，請參閱[新增應用程式](workingapps-creating.md)。  
![\[Add App form with settings for name, type, document root, data sources, and application source.\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/gs14.png)

1. 

**開啟部署頁面**

   若要在伺服器上安裝程式碼，您必須「部署」**應用程式。若要執行此作業，請按一下 SimplePHPApp 中 **Actions (動作)** 資料行中的 **deploy (部署)**。  
![\[Apps table showing SimplePHPApp with deploy, edit, and delete options in the Actions column.\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/gs15.png)

1. 

**部署應用程式**

   當您部署應用程式時，代理程式會在 PHP App Server 執行個體上執行部署配方，以下載和設定應用程式。

   **Command (命令)** 應該已設為 **deploy (部署)**。保持其他設定的預設值，然後按一下 **Deploy (部署)** 部署應用程式。  
![\[Deploy app interface with settings for SimplePHPApp and instance selection options.\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/gs16.png)

   部署完成後，**Deployment (部署)** 頁面便會顯示 **Status (狀態)** 為 **Successful (成功)**，並且 **php-app1** 一旁會有綠色的核取記號。

1. 

**執行 SimplePHPApp**

   SimplePHPApp 現在已安裝並準備好可供使用。若要執行它，請按一下導覽窗格中的 **Instances (執行個體)** 以前往 **Instances (執行個體)** 頁面。然後按一下 php-app1 執行個體的公有 IP 地址。  
![\[PHP App Server instance details showing hostname, status, size, and public IP address.\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/gs20.png)

   您應該會在您的瀏覽器中看到如下的頁面。  
![\[Confirmation page for a simple PHP application running on AWS 雲端 with PHP version 5.3.20.\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/gs21.png)

**注意**  
本演練假設您會繼續前進到下一節，並最終會於一個工作階段中完成整個演練。如果您願意，您可以隨時停止，稍後再登入 Stacks OpsWorks 並開啟堆疊以繼續。但是，您必須為任何您使用的 AWS 資源支付費用 (例如線上執行個體)。為避免不必要的費用，您可以停止您的執行個體，如此便會停止對應的 EC2 執行個體。當您準備好繼續時，您可以再次啟動執行個體。