

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

# 部署應用程式
<a name="workingapps-deploying"></a>

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

部署的主要目的是將應用程式程式碼和相關檔案部署到應用程式伺服器執行個體。部署操作會由每個執行個體的部署配方處理，該配方則由執行個體的 layer 判斷。

當您啟動執行個體時，安裝配方完成後， OpsWorks Stacks 會自動執行執行個體的部署配方。但是，當您新增或修改應用程式時，您必須手動部署到任何線上的執行個體。您必須具有管理或部署許可才能部署應用程式。如需詳細資訊，請參閱[管理使用者許可](opsworks-security-users.md)。

**部署應用程式**

1. 在 **Apps (應用程式)** 頁面上，按一下應用程式的 **deploy (部署)** 動作。  
![\[Apps page showing SimplePHP app with deploy, edit, and delete action options.\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/apps_with_content.png)
**注意**  
您也可以透過按一下導覽窗格中的 **Deployments (部署)** 來部署應用程式。在 **Deployments & Commands (部署及命令)** 頁面上，按一下 **Deploy an app (部署應用程式)**。當您執行此作業時，您也可以選擇要部署的應用程式。

1. 指定下列內容：
   + (必要項目) 將 **Command: (命令：)** 設為 **deploy (部署)** (若尚未選取的話)。
   + (選用) 包含註解。

1. 按一下**進階 >>** 指定自訂 JSON. OpsWorks Stacks 會將一組[堆疊組態和部署屬性](workingcookbook-json.md)新增至節點物件。`deploy` 屬性包含部署詳細資訊，可由部署配方用來處理安裝及組態。在 Linux 堆疊上，您可以使用自訂 JSON 欄位來[覆寫預設的 Stacks OpsWorks 設定](workingcookbook-json-override.md)，或將自訂設定傳遞至您的自訂配方。如需如何使用自訂 JSON 的詳細資訊，請參閱[使用自訂 JSON](workingstacks-json.md)。
**注意**  
若您在此指定自訂 JSON，它只會新增至此部署的堆疊組態和部署屬性。若您希望永久新增自訂 JSON，您必須[將其新增至堆疊](workingstacks-json.md)。自訂 JSON 的大小限制為 120 KB。如果您需要更多容量，建議您將部分資料儲存在 Amazon S3 上。您的自訂配方接著可以使用 AWS CLI 或[適用於 Ruby 的 AWS 開發套件](https://aws.amazon.com/documentation/sdk-for-ruby/)將資料從儲存貯體下載到您的執行個體。如需範例，請參閱 [使用適用於 Ruby 的 SDK](cookbooks-101-opsworks-s3.md)。

1. 在 **Instances (執行個體)** 下方，按一下 **Advanced >> (進階 >>)** 並指定要在哪個執行個體上執行部署命令。

   部署命令會觸發部署事件，在選取的執行個體上執行部署配方。關聯應用程式伺服器的部署配方會從儲存庫下載程式碼和相關檔案，並將他們安裝在執行個體上，因此您通常會選取所有關聯的應用程式伺服器執行個體。但是，其他執行個體類型可能需要一些組態變更，才能適應新的應用程式，因此通常在那些執行個體上也執行部署配方會非常有用。那些配方會視需要更新組態，但不會安裝應用程式的檔案。如需配方的詳細資訊，請參閱[技術指南和配方](workingcookbook.md)。

1. 按一下 **Deploy (部署)** 以在指定的執行個體上執行部署配方，顯示部署頁面。程序完成時， OpsWorks Stacks 會以綠色核取標記應用程式，表示部署成功。如果部署失敗， OpsWorks Stacks 會將應用程式標記為紅色 X。在這種情況下，您可以前往**部署**頁面並檢查部署日誌以取得更多資訊。  
![\[Deployment status page showing successful deployment of PHPTestApp with details.\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/deployed_app.png)

**注意**  
在您將更新部署至 JSP 應用程式時，Tomcat 可能會無法識別更新，而繼續執行現有的應用程式版本。舉例來說，這可能會在您將應用程式做為僅包含 JSP 頁面的 .zip 檔案部署時發生。若要確保 Tomcat 執行的是最近部署的版本，專案的根目錄應包括內含 `web.xml` 檔案的 WEB-INF 目錄。`web.xml` 檔案可包含各種內容，但以下內容便足以確保 Tomcat 識別更新及執行目前部署的應用程式版本。您不需要為每次更新變更版本。若版本沒有變更，Tomcat 將會識別更新。  

```
<context-param>
  <param-name>appVersion</param-name>
  <param-value>0.1</param-value>
</context-param>
```

## 其他部署命令
<a name="workingapps-deploying-other"></a>

**Deploy app (部署應用程式)** 頁面包含數種其他用於管理您應用程式和關聯伺服器的命令。在下列命令中，只有 **Undeploy (解除部署)** 適用於位於 Chef 12 堆疊上的應用程式。

**Undeploy (解除部署)**  
觸發解除部署[生命週期事件](workingcookbook-events.md)，執行解除部署配方，從指定執行個體移除所有版本的應用程式。

**轉返**  
還原先前部署的應用程式版本。例如，若您已部署應用程式三次，然後執行 **Rollback (轉返)**，伺服器會從第二次部署提供應用程式。若您再次執行 **Rollback (轉返)**，伺服器會從第一次部署提供應用程式。根據預設， OpsWorks Stacks 會存放五個最近的部署，可讓您復原最多四個版本。若您超過存放版本的數目，命令會失敗，並留下最舊的版本。此命令無法在 Chef 12 堆疊中使用。

**Start Web Server (啟動 Web 伺服器)**  
執行會在指定之執行個體上啟動應用程式伺服器的配方。此命令無法在 Chef 12 堆疊中使用。

**Stop Web Server (停止 Web 伺服器)**  
執行會在指定之執行個體上停止應用程式伺服器的配方。此命令無法在 Chef 12 堆疊中使用。

**Restart Web Server (重新啟動 Web 伺服器)**  
執行會在指定之執行個體上重新啟動應用程式伺服器的配方。此命令無法在 Chef 12 堆疊中使用。

**重要**  
**Start Web Server (啟動 Web 伺服器)**、**Stop Web Server (停止 Web 伺服器)**、**Restart Web Server (重新啟動 Web 伺服器)** 和 **Rollback (轉返)** 基本上就是[執行配方堆疊命令](workingstacks-commands.md)的自訂版本。他們會執行一組在指定之執行個體上執行任務的配方。  
這些命令不會觸發生命週期事件，因此您無法引用命令執行自訂程式碼。
這些命令僅適用於內建的[應用程式伺服器 layer](workinglayers-servers.md)。  
特別是，這些命令對於自訂 layer 沒有任何效果，即使他們支援應用程式伺服器也一樣。若要在自訂 layer 上啟動、停止或重新啟動伺服器，您必須實作自訂配方以執行這些任務，並使用[執行配方堆疊命令](workingstacks-commands.md)執行他們。如需如何實作和安裝自訂配方的詳細資訊，請參閱[技術指南和配方](workingcookbook.md)。