

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

# 新增應用程式
<a name="workingapps-creating"></a>

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

若要將應用程式部署到您的應用程式伺服器，第一個步驟是將應用程式新增至堆疊。app 代表應用程式，並包含各式各樣的中繼資料，例如應用程式的名稱和類型，以及將應用程式部署至伺服器執行個體所需的資訊，例如儲存庫 URL。您必須具有管理許可才能將應用程式新增至堆疊。如需詳細資訊，請參閱[管理使用者許可](opsworks-security-users.md)。

**注意**  
本節中的程序適用於 Chef 12 和更新的堆疊。如需如何在 Chef 11 堆疊中將應用程式新增至 layer 的資訊，請參閱[步驟 2.4：建立和部署應用程式 - Chef 11](gettingstarted-simple-app.md)。

**將應用程式新增至堆疊**

1. 將程式碼放在您偏好的儲存庫中：Amazon S3 封存、Git 儲存庫、Subversion 儲存庫或 HTTP 封存。如需詳細資訊，請參閱[應用程式來源](#workingapps-creating-source)。

1. 按一下導覽窗格中的 **Apps (應用程式)**。針對您的第一個應用程式，在 **Apps (應用程式)** 頁面中，按一下 **Add an app (新增應用程式)**。針對後續的應用程式，按一下 **\$1App (\$1應用程式)**。

1. 使用 **App New (新的應用程式)** 頁面來設定應用程式，如下節中所述。

## 設定應用程式
<a name="workingapps-creating-general"></a>

**Add App (新增應用程式)** 頁面包含下列區段：**Settings (設定)**、**Application source (應用程式來源)**、**Data Sources (資料來源)**、**Environment Variables (環境變數)**、**Add Domains (新增網域)** 和 **SSL Settings (SSL 設定)**。

**Topics**
+ [設定](#workingapps-creating-settings)
+ [應用程式來源](#workingapps-creating-source)
+ [資料來源](#workingapps-creating-data)
+ [環境變數](#workingapps-creating-environment)
+ [網域和 SSL 設定](#workingapps-creating-domain-ssl)

### 設定
<a name="workingapps-creating-settings"></a>

**名稱**  
應用程式名稱，用於在 UI 中代表應用程式。 OpsWorks Stacks 也會使用此名稱為內部使用的應用程式產生簡短名稱，並在[堆疊組態和部署屬性](workingcookbook-json.md)中識別應用程式。將應用程式新增至堆疊之後，您可以按一下導覽窗格中的 **Apps (應用程式)**，然後按一下應用程式名稱開啟詳細資訊頁面，以查看短名。

****Document root (文件根)****  
OpsWorks Stacks 會將**文件根**設定指派給應用程式[`[:document_root]`](attributes-json-deploy.md#attributes-json-deploy-app-root)屬性中的 `deploy` 屬性。預設值為 `null`。您的部署配方可以使用標準 Chef 節點語法，從 `deploy` 屬性取得該值，並將指定的程式碼部署到伺服器的適當位置。如需如何部署應用程式的詳細資訊，請參閱[部署配方](create-custom-deploy.md)。

### 應用程式來源
<a name="workingapps-creating-source"></a>

您可以從下列儲存庫類型部署應用程式：Git、Amazon S3 套件、HTTP 套件和其他。所有儲存庫類型都要求您必須指定儲存庫類型和儲存庫 URL。個別儲存庫類型都有自己的要求，如下所示。

**注意**  
OpsWorks Stacks 會自動將應用程式從標準儲存庫部署到內建伺服器層。如果您使用其他儲存庫類型，這是 Windows 堆疊的唯一選項， OpsWorks Stacks 會將儲存庫資訊放在應用程式的[`deploy`屬性](workingcookbook-json.md#workingcookbook-json-deploy)中，但您必須實作自訂配方來處理部署任務。

**Topics**
+ [HTTP 封存](#w2ab1c14c57c13c11b8b8)
+ [Amazon S3 封存](#w2ab1c14c57c13c11b8c10)
+ [Git 儲存庫](#w2ab1c14c57c13c11b8c12)
+ [其他儲存庫](#w2ab1c14c57c13c11b8c14)

#### HTTP 封存
<a name="w2ab1c14c57c13c11b8b8"></a>

若要使用可公開存取的 HTTP 伺服器做為儲存庫：

1. 針對包含應用程式程式碼和任何相關聯檔案的資料夾，建立壓縮封存檔 -zip、gzip、bzip2、Java WAR 或 tarball。
**注意**  
OpsWorks Stacks 不支援未壓縮的 tarball。

1. 將封存檔案上傳至伺服器。

1. 若要在主控台中指定儲存庫，請選取 HTTP Archive (HTTP 封存) 做為儲存庫類型並輸入 URL。

    如果封存受到密碼保護，請在**應用程式來源**下指定登入憑證。

#### Amazon S3 封存
<a name="w2ab1c14c57c13c11b8c10"></a>

若要使用 Amazon Simple Storage Service 儲存貯體做為儲存庫：

1. 建立公有或私有 Amazon S3 儲存貯體。如需詳細資訊，請參閱 [Amazon S3 文件](https://aws.amazon.com/documentation/s3/)。

1. 若要讓 OpsWorks Stacks 存取私有儲存貯體，您必須是對 Amazon S3 儲存貯體具有至少唯讀權限的使用者，而且您將需要存取金鑰 ID 和私密存取金鑰。如需詳細資訊，請參閱 [AWS Identity and Access Management 文件](https://docs.aws.amazon.com/iam/)。

1. 將程式碼和任何相關聯的檔案放入資料夾，並將該資料夾存放到壓縮封存 (zip、gzip、bzip2、Java WAR 或 tarball) 中。
**注意**  
OpsWorks Stacks 不支援未壓縮的 tarball。

1. 將封存檔案上傳至 Amazon S3 儲存貯體並記錄 URL。

1. 若要在 Stacks OpsWorks 主控台中指定儲存庫，請將**儲存庫類型**設定為 **S3 Archive**，然後輸入封存的 URL。若是私有封存，您也必須提供 AWS 存取金鑰 ID 和私密存取金鑰，其政策可授予存取儲存貯體的許可。若是公有封存，則將這些設定保留空白。

#### Git 儲存庫
<a name="w2ab1c14c57c13c11b8c12"></a>

[Git](http://git-scm.com/) 儲存庫提供來源控制和版本控制。 OpsWorks Stacks 支援公有託管儲存庫網站，例如 [GitHub](https://github.com/) 或 [Bitbucket](https://bitbucket.org)，以及私有託管的 Git 伺服器。若是應用程式和 Git 子模組，您用來在 **Application Source (應用程式來源)** 中指定儲存庫的 URL 格式則取決於儲存庫為公有或私有：

**公有儲存庫** – 使用 HTTPS 或 Git 唯讀通訊協定。例如，[Chef 11 Linux 堆疊入門](gettingstarted.md) 會使用公有 GitHub 儲存庫，其可透過下列任一 URL 格式來存取：
+ Git 唯讀：**git://github.com/amazonwebservices/opsworks-demo-php-simple-app.git**
+ HTTPS：**https://github.com/amazonwebservices/opsworks-demo-php-simple-app.git**

**私有儲存庫** – 使用以下範例中顯示的 SSH 讀取/寫入格式：
+ Github 儲存庫：**git@github.com:*project*/*repository***。
+ 位於 Git 伺服器上的儲存庫：***user*@*server*:*project*/*repository***

在 **Source Control (來源控制)** 下方選取 **Git** 時，會顯示兩個額外的選擇性設定：

**Repository SSH key (儲存庫 SSH 金鑰)**  
您必須指定部署 SSH 金鑰才能存取私有 Git 儲存庫。此欄位需要私有金鑰；公有金鑰會指派到您的 Git 儲存庫。針對 Git 子模組，指定的金鑰必須要能存取這些子模組。如需詳細資訊，請參閱[使用 Git 儲存庫 SSH 金鑰](workingapps-deploykeys.md)。  
部署的 SSH 金鑰不需要密碼； OpsWorks Stacks 無法傳遞密碼。

**Branch/Revision (分支/修訂)**  
如果儲存庫有多個分支， OpsWorks Stacks 預設會下載主分支。若要指定特定分支，請輸入分支名稱、SHA1 雜湊或標籤名稱。若要指定特定的遞交，請輸入完整 40 個八進位碼的遞交識別符。

#### 其他儲存庫
<a name="w2ab1c14c57c13c11b8c14"></a>

如果標準儲存庫不符合您的需求，您可以使用其他儲存庫，例如 [Bazaar](http://bazaar.canonical.com/en/)。不過， OpsWorks Stacks 不會自動從這類儲存庫部署應用程式。您必須實作自訂配方來處理部署程序，並將這些配方指派給適當 layer 的部署事件。如需如何實作部署配方的範例，請參閱[部署配方](create-custom-deploy.md)。

### 資料來源
<a name="workingapps-creating-data"></a>

此區段會將資料庫連接到應用程式。您有下列選項：
+ **RDS** – 連接其中一個堆疊的 [Amazon RDS 服務層](workinglayers-db-rds.md)。
+ **無** – 請勿連接資料庫伺服器。

如果您選取 **RDS**，則必須指定下列項目。

**資料庫執行個體**  
此清單包含每個 Amazon RDS 服務層。您也可以選取下列之一：  
(必要) 指定哪部資料庫伺服器連接到應用程式。清單內容取決於資料來源而定。  
+ **RDS** – 堆疊的 Amazon RDS 服務層清單。

**資料庫名稱**  
(選用) 指定資料庫名稱。  
+ Amazon RDS layer – 輸入您為 Amazon RDS 執行個體指定的資料庫名稱。

  您可以從 [Amazon RDS 主控台](https://console.aws.amazon.com/rds/)取得資料庫名稱。

當您使用連接的資料庫部署應用程式時， OpsWorks Stacks 會將資料庫執行個體的連線新增至應用程式的[`deploy`屬性](workingcookbook-json.md#workingcookbook-json-deploy)。

您可以編寫自訂配方，以從 `deploy` 屬性擷取資訊，並將資訊放入可供應用程式存取的檔案中。這是將資料庫連線資訊提供給其他應用程式類型的唯一選項。

如需如何處理資料庫連線的詳細資訊，請參閱[連線至資料庫](workingapps-connectdb.md)。

若要將資料庫伺服器與應用程式分離，請[編輯應用程式的組態](workingapps-editing.md)以指定不同的資料庫伺服器，或不指定任何伺服器。

### 環境變數
<a name="workingapps-creating-environment"></a>

您可以為每個應用程式指定一組環境變數，以專屬於該應用程式。例如，如果您有兩個應用程式，則第二個應用程式無法使用您為第一個應用程式定義的環境變數，反之亦然。您也可以為多個應用程式定義相同的環境變數，並為每個應用程式指派不同的值。

**注意**  
環境變數的數目並沒有特定限制。不過，包含變數名稱、值和受保護標記值的相關聯資料結構大小不得超過 20 KB。此限制應該可以容納大多數的使用案例。超過此限制時會導致服務錯誤 (主控台)，或含下列訊息的例外狀況 (API)："Environment: is too large (maximum is 20KB)" (環境：太大 (上限為 10 KB))。

OpsWorks Stacks 會將變數儲存為應用程式屬性中的[`deploy`屬性](workingcookbook-json.md#workingcookbook-json-deploy)。您可以使用標準 Chef 節點語法，讓您的自訂配方擷取這些值。如需如何存取應用程式環境變數的範例，請參閱[使用 環境變數](apps-environment-vars.md)。

**金錀**  
變數名稱。它最多可以包含 64 個大小寫字母、數字和底線 (\$1)，但必須以字母或底線開頭。

**Value**  
變數值。它最多可以包含 256 個字元，且全都必須為可列印字元。

**受保護的值**  
值是否受保護。此設定可讓您隱藏密碼之類的敏感資訊。如果您在建立應用程式之後，為變數設定 **Protected value (受保護的值)**：  
+ 應用程式的詳細資訊頁面只會顯示變數名稱，而非值。
+ 如果您有編輯應用程式的許可，則可以按一下 **Update value (更新值)** 來指定新的值，但您無法查看或編輯舊值。

**注意**  
Chef 部署日誌有時可能包含環境變數。這表示受保護的變數可能會顯示在主控台。為了防止受保護的變數顯示在主控台中，我們建議您使用 Amazon S3 儲存貯體做為您不想在主控台中顯示的受保護變數的儲存體。S3 儲存貯體如何用於此用途，請參閱本指南中的[使用 Amazon S3 儲存貯體](gettingstarted.walkthrough.photoapp.md)。

### 網域和 SSL 設定
<a name="workingapps-creating-domain-ssl"></a>

對於其他應用程式類型， OpsWorks Stacks 會將設定新增至應用程式的`deploy`屬性。您的配方可以從這些屬性擷取資料，並視需要設定伺服器。

**網域設定**  
此區段有一個選用的 **Add Domains (新增網域)** 欄位，可用來指定網域。如需詳細資訊，請參閱[使用自訂網域](workingapps-domains.md)。

**SSL 設定**  
此區段有一個 **SSL Support (SSL 支援)** 切換，可讓您用來啟用或停用 SSL。如果您按一下 **Yes (是)**，則需要提供 SSL 憑證資訊。如需詳細資訊，請參閱[使用 SSL](workingsecurity-ssl.md)。