

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

# 建立您的第一個 Node.js 堆疊
<a name="gettingstarted-node"></a>

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

此範例說明如何建立支援 Node.js 應用程式伺服器的 Linux 堆疊，以及如何部署簡易應用程式。堆疊包含下列元件：
+ 具有兩個執行個體的 [Node.js App Server layer](workinglayers-node.md) 
+ [Elastic Load Balancing 負載平衡器](layers-elb.md)可將流量分配到應用程式伺服器執行個體
+ 提供後端資料庫的 [Amazon Relational Database Service (Amazon RDS) 服務層](#gettingstarted-node-next) 

**Topics**
+ [先決條件](#gettingstarted-node-start)
+ [實作應用程式](#gettingstarted-node-app)
+ [建立資料庫伺服器和負載平衡器](#gettingstarted-node-create-db)
+ [建立堆疊](#gettingstarted-node-stack)
+ [部署應用程式](#gettingstarted-node-deploy)
+ [後續步驟？](#gettingstarted-node-next)

## 先決條件
<a name="gettingstarted-node-start"></a>

本演練的假設如下：
+ 您有一個 AWS 帳戶，並對如何使用 OpsWorks Stacks 有基本的了解。

  如果您是初次使用 OpsWorks Stacks 或 AWS，請完成 中的簡介教學課程來學習基本知識[Chef 11 Linux 堆疊入門](gettingstarted.md)。
+ 您具有如何實作 Node.js 應用程式的基本理解。

  若您是初次使用 Node.js，請完成簡介教學 (例如 [Node: Up and Running](http://chimera.labs.oreilly.com/books/1234000001808/index.html)) 來學習基本概念。
+ 您已在您計劃於此範例中使用的 AWS 區域內建立至少一個堆疊。

  當您在區域中建立第一個堆疊時， OpsWorks Stacks 會為每個層類型建立 Amazon Elastic Compute Cloud (Amazon EC2) 安全群組。您需要這些安全群組才能建立 Amazon RDS 資料庫 (DB) 執行個體。如果您是初次使用 OpsWorks Stacks，我們建議您在此範例中使用與您在 中遵循教學課程時相同的區域[Chef 11 Linux 堆疊入門](gettingstarted.md)。若您希望使用新的區域，請在區域內建立新的堆疊。堆疊不需要具備任何 layer 或執行個體。建立堆疊後， OpsWorks Stacks 會自動將一組安全群組新增至區域。
+ 您會在[預設 VPC](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-supported-platforms.html) 中建立您的堆疊。

  您可以針對本演練使用 EC2-Classic，但一部分的詳細資訊可能會有所不同。例如，使用 EC2-Classic 時，您必須指定執行個體的可用區域 (AZ) 而非其子網路。
+ 您的 IAM 使用者具有 Stacks OpsWorks 的完整存取許可。

  基於安全考量，我們強烈建議您不要在本演練中使用您帳戶的根登入資料。反之，請建立具有 OpsWorks Stacks 完整存取許可的使用者，並將這些登入資料與 Stacks OpsWorks 搭配使用。如需詳細資訊，請參閱[建立 管理使用者](opsworks-security-users-manage-admin.md)。

## 實作應用程式
<a name="gettingstarted-node-app"></a>

此演練使用連接至 Amazon RDS 資料庫執行個體的簡單 [Express](http://expressjs.com/) 應用程式，並列出執行個體的資料庫。

若要實作應用程式，請在您工作站上方便的位置建立名為 `nodedb` 的目錄，並將下列三個檔案新增至其中。

**Topics**
+ [套件描述項](#w2ab1c14c71b9c11c13b8)
+ [配置檔案](#w2ab1c14c71b9c11c13c10)
+ [程式碼檔案](#w2ab1c14c71b9c11c13c12)

### 套件描述項
<a name="w2ab1c14c71b9c11c13b8"></a>

若要建立應用程式的套件描述項，請在 `nodedb` 目錄中新增名為 `package.json` 的檔案，其中包含以下內容。`package.json` 為 Express 應用程式的必要項目，因此必須位於應用程式的根目錄中。

```
{
  "name": "Nodejs-DB",
  "description": "Node.js example application",
  "version": "0.0.1",
  "dependencies": {
    "express": "*",
    "ejs": "*",
    "mysql": "*"
  }
}
```

此 `package.json` 範例相當精簡。它定義了所需的 `name` 及 `version` 屬性，並列出依存套件：
+ `express` 參考 [Express](http://expressjs.com/) 套件。
+ `ejs` 參考 [EJS](http://www.embeddedjs.com/) 套件，應用程式會用它來將文字插入 HTML 配置檔案。
+ `mysql` 參考 [node-mysql](https://github.com/felixge/node-mysql) 套件，應用程式會用它來連線至 RDS 執行個體。

如需套件描述項檔案的詳細資訊，請參閱 [package.json](https://docs.npmjs.com/cli/v9/configuring-npm/package-json)。

### 配置檔案
<a name="w2ab1c14c71b9c11c13c10"></a>

若要建立應用程式的配置檔案，請將 `views` 目錄新增至 `nodedb` 目錄，然後將名為 `index.html` 的檔案新增至 `views`，其中內容如下：

```
<!DOCTYPE html>
<html>
<head>
  <title>AWS Opsworks Node.js Example</title>
</head>
<body>
  <h1>AWS OpsWorks Node.js Example</h1>
    <p>Amazon RDS Endpoint: <i><%= hostname %></i></p>
    <p>User: <i><%= username %></i></p>
    <p>Password: <i><%= password %></i></p>
    <p>Port: <i><%= port %></i></p>
    <p>Database: <i><%= database %></i></p>

    <p>Connection: <%= connectionerror %></p>
    <p>Databases: <%= databases %></p>
</body>
</html>
```

在此範例中，配置檔案是簡單的 HTML 文件，會顯示來自 Amazon RDS 的一些資料。每個 `<%= ... =>` 元素都代表在應用程式程式碼檔案中定義的變數值。我們會在接下來的步驟中建立。

### 程式碼檔案
<a name="w2ab1c14c71b9c11c13c12"></a>

若要建立應用程式的程式碼檔案，請在 `nodedb` 目錄中新增名為 `server.js` 的檔案，其中包含以下內容。

**重要**  
透過 OpsWorks Stacks，Node.js 應用程式的主要程式碼檔案必須命名`server.js`並位於應用程式的根資料夾中。

```
var express = require('express');
var mysql = require('mysql');
var dbconfig = require('opsworks'); //[1] Include database connection data
var app = express();
var outputString = "";

app.engine('html', require('ejs').renderFile);

//[2] Get database connection data
app.locals.hostname = dbconfig.db['host'];
app.locals.username = dbconfig.db['username'];
app.locals.password = dbconfig.db['password'];
app.locals.port = dbconfig.db['port'];
app.locals.database = dbconfig.db['database'];
app.locals.connectionerror = 'successful';
app.locals.databases = '';

//[3] Connect to the Amazon RDS instance
var connection = mysql.createConnection({
    host: dbconfig.db['host'],
    user: dbconfig.db['username'],
    password: dbconfig.db['password'],
    port: dbconfig.db['port'],
    database: dbconfig.db['database']
});

connection.connect(function(err)
{
    if (err) {
        app.locals.connectionerror = err.stack;
        return;
    }
});

// [4] Query the database
connection.query('SHOW DATABASES', function (err, results) {
    if (err) {
        app.locals.databases = err.stack;
    }
    
    if (results) {
        for (var i in results) {
            outputString = outputString + results[i].Database + ', ';
        }
        app.locals.databases = outputString.slice(0, outputString.length-2);
    }
});

connection.end();

app.get('/', function(req, res) {
    res.render('./index.html');
});

app.use(express.static('public'));

//[5] Listen for incoming requests
app.listen(process.env.PORT);
```

範例顯示資料庫連線資訊，並查詢資料庫伺服器及顯示伺服器的資料庫。您可以輕易的將其一般化，以和資料庫互動 (若需要的話)。下列備註指向先前程式碼中具有編號的註解。

**[1] 包含資料庫連線資料**  
`require` 陳述式包含資料庫連線資料。如稍後所述，當您將資料庫執行個體連接至應用程式時， OpsWorks Stacks 會將連線資料放入名為 的檔案中`opsworks.js`，看起來類似以下內容：  

```
exports.db = {
  "host":"nodeexample.cdlqlk5uwd0k.us-west-2.rds.amazonaws.com",
  "database":"nodeexampledb",
  "port":3306,
  "username":"opsworksuser",
  "password":"your_pwd",
  "reconnect":true,
  "data_source_provider":"rds",
  "type":"mysql"}
```
`opsworks.js` 位於應用程式的 `shared/config` 目錄，`/srv/www/app_shortname/shared/config` 中。不過， OpsWorks Stacks `opsworks.js`會在應用程式的根目錄中將符號連結放入 ，因此您可以只使用 來包含物件`require 'opsworks'`。

**[2] 取得資料庫連線資料**  
這一組陳述式會將 `db` 物件的值指派給一組 `app.locals` 屬性，其中每一項都會對應到 `index.html` 檔案中的其中一個 <%= ... %> 元素，以顯示 `opsworks.js` 的連線資料。轉譯後的文件會使用對應的屬性值取代 <%= ... %> 元素。

**[3] 連線至 Amazon RDS 執行個體**  
範例使用 `node-mysql` 存取資料庫。為連線到資料庫，範例會透過將連線資料傳遞給 `connection`，然後呼叫 `createConnection` 建立連線，來建立 `connection.connect` 物件。

**[4] 查詢資料庫**  
在建立連線後，範例會呼叫 `connection.query` 查詢資料庫。此範例只會查詢伺服器的資料庫名稱。`query` 會傳回 `results` 物件的陣列，每個資料庫一個，並且資料庫名稱會指派給 `Database` 屬性。範例會串連名稱，並將他們指派給 `app.locals.databases,`，在轉譯後的 HTML 頁面上顯示清單。  
在此範例中，有五個資料庫，您在建立 RDS 執行個體時指定的`nodeexampledb`資料庫，以及由 Amazon RDS 自動建立的四個其他資料庫。

**[5] 接聽傳入請求**  
最後一個陳述式會在指定連接埠上接聽傳入請求。您不必指定明確的連接埠值。當您將應用程式新增至堆疊時，您可以指定應用程式是否支援 HTTP 或 HTTPS 請求。 OpsWorks Stacks 接著會將`PORT`環境變數設定為 80 (HTTP) 或 443 (HTTPS)，而且您可以在應用程式中使用該變數。  
您可以監聽其他連接埠，但 Node.js App Server 層的內建安全群組 **AWS-OpsWorks-nodejs-App-Server** 僅允許傳入使用者流量至連接埠 80、443 和 22 (SSH)。若要允許傳入使用者流量到其他連接埠，請使用適當的傳入規則[建立安全群組](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html)[，並將其指派給 Node.js App Server layer](workinglayers-basics-edit.md#workinglayers-basics-edit-security)。請勿透過編輯內建安全群組來修改傳入規則。每次建立堆疊時， OpsWorks Stacks 都會以標準設定覆寫內建的安全群組，因此您所做的任何變更都會遺失。

**注意**  
您可以在您[建立](workingapps-creating.md#workingapps-creating-environment)或[更新](workingapps-editing.md)關聯應用程式時，將自訂環境變數與您的應用程式建立關聯。您也可以使用自訂 JSON 和自訂配方將資料傳遞到您的應用程式。如需詳細資訊，請參閱[傳遞資料到應用程式](apps-data.md)。

## 建立資料庫伺服器和負載平衡器
<a name="gettingstarted-node-create-db"></a>

此範例使用 Amazon RDS 資料庫伺服器和 Elastic Load Balancing 負載平衡器執行個體。您必須分別建立每個執行個體，然後將其併入您的堆疊。本節說明如何建立新的資料庫和負載平衡器執行個體。雖然您可以改為使用現有的執行個體，但我們建議您閱讀整個程序，以確保那些執行個體的設定正確。

以下說明如何建立精簡設定，足以用於此範例的 RDS 資料庫執行個體。如需詳細資訊，請參閱 [Amazon RDS 使用者指南](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html)。

**建立 RDS 資料庫執行個體**

1. 

**開啟 主控台。**

   開啟 [Amazon RDS 主控台，](https://console.aws.amazon.com/rds/)並將區域設定為美國西部 （奧勒岡）。在導覽窗格中，選擇 **RDS Dashboard (RDS 儀表板)**，然後選擇 **Launch DB Instance (啟動資料庫執行個體)**。

1. 

**指定資料庫引擎。**

   選擇 **MySQL Community Edition** 做為資料庫引擎。

1. 

**拒絕異地同步備份部署。**

   選擇 **No, this instance... (否，此執行個體...)**，然後選擇 **Next (下一步)**。您在此範例中不需要使用異地同步備份部署。

1. 

**設定基本設定。**

   在 **DB Instance Details (資料庫執行個體詳細資訊)** 頁面上，指定下列設定：
   + **DB Instance Class (資料庫執行個體類別)**：**db.t2.micro**。
   + **Multi-AZ Deployment (異地同步備份部署)**：**No (否)**
   + **Allocated Storage (配置儲存體)**：**5** GB
   + **DB Instance Identifier (資料庫執行個體識別符)**：**nodeexample**
   + **Master Username (主要使用者名稱)**：**opsworksuser**
   + **Master Password (主要密碼)**：您選擇的密碼

   記錄執行個體識別符、使用者名稱、密碼以供稍後使用，接受其他選項的預設設定，然後選擇 **Next (下一步)**。

1. 

**設定進階設定。**

   在 **Configure Advanced Settings (設定進階設定)** 頁面上，指定下列設定：
   + **資料庫名稱**：**nodeexampledb**
   + **DB Security Group(s) (資料庫安全群組)**：**AWS-OpsWorks-DB-Master-Server**
**注意**  
**AWS-OpsWorks-DB-Master-Server** 安全群組只會允許您堆疊的執行個體存取資料庫。若您希望直接存取資料庫，請將額外的安全群組連接到 RDS 資料庫執行個體，並搭配適當的傳入規則。如需詳細資訊，請參閱 [Amazon RDS 安全群組](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.RDSSecurityGroups.html)。您也可以透過將執行個體置放在 VPC 中，來控制存取。如需詳細資訊，請參閱[在 VPC 中執行堆疊](workingstacks-vpc.md)。

   記錄資料庫名稱以供稍後使用，接受其他設定的預設值，然後選擇 **Launch DB Instance (啟動資料庫執行個體)**。

下列程序說明如何為此範例建立 Elastic Load Balancing 負載平衡器。如需詳細資訊，請參閱《[Elastic Load Balancing 使用者指南](https://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/elastic-load-balancing.html)》。

**建立負載平衡器**

1. 

**開啟 Amazon EC2 主控台。**

   開啟 [Amazon EC2 主控台](https://console.aws.amazon.com/ec2/)，並確保區域設定為美國西部 （奧勒岡）。在導覽窗格中，選擇 **Load Balancers (負載平衡器)**，然後選擇 **Create Load Balancer (建立負載平衡器)**。

1. 

**定義負載平衡器。**

   在 **Define Load Balancer (定義負載平衡器)** 頁面上，指定下列設定。
   + **名稱** – **Node-LB**
   + **在內部建立 LB** – **我的預設 VPC**

   接受其他選項的預設設定，然後選擇 **Next (下一步)**。

1. 

**指派安全群組。**

   在 **Assign Security Groups (指派安全群組)** 頁面上，指定下列群組：
   + **default VPC security group (預設 VPC 安全群組)**
   + **AWS-OpsWorks-nodejs-App-Server**

   選擇**下一步**。在 **Configure Security Settings (設定安全設定)** 頁面上，選擇 **Next (下一步)**。您在此範例中不需要使用安全接聽程式。

1. 

**設定運作狀態檢查。**

   在 **Configure Health Check (設定運作狀態檢查)** 頁面上，將 **Ping Path (Ping 路徑)** 設為 **/**，並接受其他設定的預設值。選擇**下一步**。在 **Add EC2 Instances (新增 EC2 執行個體)** 頁面上，選擇 **Next (下一步)**。在**新增標籤**頁面上，選擇**檢閱和建立**。 OpsWorks Stacks 會處理將 EC2 執行個體新增至負載平衡器的任務，在此範例中您不需要標籤。

1. 

**建立負載平衡器。**

   在 **Review (頁面)** 上，選擇 **Create (建立)** 以建立負載平衡器。

## 建立堆疊
<a name="gettingstarted-node-stack"></a>

您現在已具備所有需要用來建立堆疊的元件。

**建立堆疊**

1. 

**登入 Stacks OpsWorks 主控台。**

   登入 [OpsWorks Stacks 主控台](https://console.aws.amazon.com/opsworks/)，然後選擇 **Add Stack (新增堆疊)**。

1. 

**建立堆疊。**

   若要建立新的堆疊，請選擇 **Chef 11 stack (Chef 11 堆疊)**，然後指定下列設定。
   +  – **NodeStack**
   + **區域** – **美國西部 （奧勒岡）**

     您可以在任何 AWS 區域中建立堆疊，但我們建議美國西部 （奧勒岡） 進行教學課程。

   選擇 **Add Stack (新增堆疊)**。如需堆疊組態設定的詳細資訊，請參閱[建立新的堆疊](workingstacks-creating.md)。

1. 

**使用連接的負載平衡器新增 Node.js App Server layer。**

   在 **NodeStack** 頁面上，選擇 **Add a layer (新增 layer)**，然後指定下列設定：
   + **Layer 類型** – **Node.js 應用程式伺服器**
   + **Elastic Load Balancer** – **Node-LB**

   接受其他設定的預設值，然後選擇 **Add Layer (新增 Layer)**。

1. 

**將執行個體新增至 layer 並啟動。**

   在導覽窗格中選擇 **Instances (執行個體)**，然後新增兩個執行個體至 Rails 應用程式伺服器 layer，如下所示。

   1. 在 **Node.js App Server** 下，選擇**新增執行個體**。

      將 **Size (大小)** 設為 **t2.micro**，接受其他設定的預設值，然後選擇 **Add Instance (新增執行個體)**。

   1. 選擇 **\$1Instance (\$1執行個體)**，然後新增第二個 **t2.micro** 執行個體至位於不同子網路中的 layer。

      這會將執行個體置放在不同的可用區域 (AZ) 中。

   1. 選擇 **Add instance (新增執行個體)**。

   1. 若要啟動兩個執行個體，請選擇 **Start All Instances (啟動所有執行個體)**。

   您已將 Elastic Load Balancing 負載平衡器指派給此層。當執行個體進入或離開線上狀態時， OpsWorks Stacks 會自動向負載平衡器註冊或取消註冊執行個體。
**注意**  
針對生產堆疊，我們建議您將您的應用程式伺服器執行個體分散到多個 AZ 中。若使用者無法連線到其中一個 AZ，負載平衡器會將傳入流量路由至剩餘區域中的執行個體，讓您的網站可繼續運作。

1. 

**向堆疊註冊 RDS 資料庫執行個體。**

   在導覽窗格中選擇 **Resources (資源)** 並向堆疊註冊 RDS 資料庫執行個體，如下所示。

   1. 選擇 **RDS** 標籤，然後選擇 **Show Unregistered RDS DB (顯示未註冊的 RDS 資料庫)** 執行個體。

   1. 選擇 **nodeexampledb** 執行個體，然後指定下列設定：
      + **使用者** – 您在建立執行個體時指定的主要使用者名稱；在此範例中為 **opsworksuser**。
      + **密碼** – 您在建立執行個體時指定的主要密碼。

   1. 選擇**向 Stack 註冊**，將 RDS 資料庫執行個體新增至堆疊做為 [Amazon RDS 服務層](workinglayers-db-rds.md)。
**警告**  
OpsWorks Stacks 不會驗證**使用者**或**密碼**值，只會將值傳遞給應用程式。若您輸入不正確，您的應用程式將無法連線至資料庫。

   若要將 RDS 資料庫執行個體新增至堆疊做為 [Amazon RDS 服務層](workinglayers-db-rds.md)，請選擇**向 Stack 註冊**。

## 部署應用程式
<a name="gettingstarted-node-deploy"></a>

您必須將應用程式存放在遠端儲存庫中。當您部署它時， OpsWorks Stacks 會將程式碼和相關檔案從儲存庫部署到應用程式伺服器執行個體。為了方便起見，此範例使用公有 Amazon Simple Storage Service (Amazon S3) 封存做為儲存庫，但您也可以使用其他幾種儲存庫類型，包括 Git 和 Subversion。如需詳細資訊，請參閱[應用程式來源](workingapps-creating.md#workingapps-creating-source)。

**部署應用程式**

1. 

**將應用程式封裝在封存檔中。**

   建立 `.zip` 目錄和子目錄的 `nodedb` 封存，命名為 nodedb.zip。您也可以使用其他類型的封存檔，包括 gzip、bzip2 和 tarball。請注意， OpsWorks Stacks 不支援未壓縮的 tarball。如需詳細資訊，請參閱[應用程式來源](workingapps-creating.md#workingapps-creating-source)。

1. 

**將封存檔案上傳至 Amazon S3。**

   `nodedb.zip` 上傳至 Amazon S3 儲存貯體，將檔案設為公有，然後複製檔案的 URL 以供日後使用。如需如何建立儲存貯體以及上傳檔案的詳細資訊，請參閱[開始使用 Amazon Simple Storage Service](https://docs.aws.amazon.com/AmazonS3/latest/gsg/GetStartedWithS3.html)。
**注意**  
OpsWorks Stacks 也可以從 Amazon S3 儲存貯體部署私有檔案，但為了簡單起見，此範例會使用公有檔案。如需詳細資訊，請參閱[應用程式來源](workingapps-creating.md#workingapps-creating-source)。

1. 

**建立 OpsWorks Stacks 應用程式。**

   返回 OpsWorks Stacks 主控台，在導覽窗格中，選擇**應用程式**，然後選擇**新增應用程式**。指定下列設定：
   + **Name** (名稱) – `NodeDB`。

     此字串為應用程式的顯示名稱。大多數情況下，您需要應用程式的簡短名稱，Stacks OpsWorks 會透過將所有字元轉換為小寫並移除標點符號，從顯示名稱產生該名稱。針對此範例，短名為 `nodedb`。若要驗證應用程式的短名，在建立應用程式之後，請在 **Apps (應用程式)** 頁面上選擇應用程式以顯示其詳細資訊頁面。
   + **類型** – `Node.js`.
   + **Data source type (資料來源類型)** – `RDS`。
   + **資料庫執行個體** – 選擇您先前註冊的 Amazon RDS 資料庫執行個體。
   + **Database name (資料庫名稱)** – 指定您先前建立的資料庫名稱，此範例中為 `nodeexampledb`。
   + **Repository type (儲存庫類型)** – `Http Archive`。

     您必須將此儲存庫類型用於公有 Amazon S3 檔案。`S3 Archive` 類型僅用於私有封存。
   + **儲存庫 URL** – 封存檔案的 Amazon S3 URL。

   針對剩餘設定使用預設值，然後按一下 **Add App (新增應用程式)** 以建立應用程式。

1. 

**部署應用程式。**

   前往 **Apps (應用程式)** 頁面，然後在 NodeDB 應用程式的 **Actions (動作)** 資料行中，選擇 **deploy (部署)**。然後選擇**部署**，將應用程式部署到伺服器執行個體。 OpsWorks Stacks 會在每個執行個體上執行部署配方，從儲存庫下載應用程式並重新啟動伺服器。當每個執行個體都有綠色的核取記號，並且 **Status (狀態)** 為 **successful (成功)** 時，部署便已完成，應用程式已準備好開始處理請求。
**注意**  
如果部署失敗，請選擇**日誌**欄中**的顯示**以顯示部署的 Chef 日誌。錯誤資訊位於接近底部的位置。

1. 

**開啟 應用程式。**

   若要開啟應用程式，請選擇 **Layer (Layer)**，選擇負載平衡器，然後選擇負載平衡器的 DNS 名稱，將 HTTP 請求傳送到負載平衡器。您應該會看到類似下列的內容。  
![\[AWS OpsWorks Node.js example showing RDS endpoint, user credentials, and database details.\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/node_walkthrough.png)

**注意**  
OpsWorks Stacks 會在設定期間自動將應用程式部署到新的執行個體。只需要針對線上執行個體進行手動部署。如需詳細資訊，請參閱[部署應用程式](workingapps-deploying.md)。如需部署的一般討論，包含一些更複雜的部署策略，請參閱[管理和部署應用程式與技術指南](best-deploy.md)。

## 後續步驟？
<a name="gettingstarted-node-next"></a>

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

本演練帶領您完成設定簡易 Node.js 應用程式伺服器堆疊的基本操作。以下是有關後續作業的一些建議。

**檢查 Node.js 的內建技術指南**  
如果您想要詳細了解執行個體的設定方式，請參閱 layer 的內建技術指南 [opsworks\$1nodejs](https://github.com/aws/opsworks-cookbooks/tree/release-chef-11.10/opsworks_nodejs)，其中包含 Stacks OpsWorks 用來安裝和設定軟體的配方和相關檔案，以及內建[部署技術指南](https://github.com/aws/opsworks-cookbooks/tree/release-chef-11.10/deploy)，其中包含 OpsWorks Stacks 用來部署應用程式的配方。

**自訂伺服器組態**  
範例堆疊相當基本。針對生產用途，您可以會希望自訂堆疊。如需詳細資訊，請參閱[自訂 OpsWorks Stacks](customizing.md)。

**新增 SSL 支援**  
您可以為您的應用程式啟用 SSL 支援，並在建立應用程式時為 OpsWorks Stacks 提供適當的憑證。 OpsWorks Stacks 接著會在適當的目錄中安裝憑證。如需詳細資訊，請參閱[使用 SSL](workingsecurity-ssl.md)。

**新增記憶體內快取**  
生產層級網站通常會透過在記憶體內鍵/值存放區 (例如 Redis 或 Memcache) 中快取資料來改善效能。您可以搭配 Stacks OpsWorks 堆疊使用 。如需詳細資訊，請參閱[ElastiCache Redis](other-services-redis.md)及[Memcached](workinglayers-mem.md)。

**使用更複雜的部署策略**  
範例使用簡易的應用程式部署策略，將更新同時部署到每個執行個體。這種方法非常簡單且快速，但沒有錯誤的餘地。若部署失敗或更新發生任何問題，每個您生產堆疊中的執行個體都會受到影響，可能中斷或停用您的網站，直到您修正問題為止。如需部署策略的詳細資訊，請參閱[管理和部署應用程式與技術指南](best-deploy.md)。

**擴展 Node.js 應用程式伺服器層**  
您可以透過各種方式延伸 layer。例如，您可以實作配方，以在執行個體上執行指令碼，或實作 Chef 部署勾點以自訂應用程式部署。如需詳細資訊，請參閱[擴充 Layer](workingcookbook-extend.md)。

**定義環境變數**  
您可以透過定義關聯應用程式的環境變數，來將資料傳遞給您的應用程式。當您部署應用程式時， OpsWorks Stacks 會匯出這些變數，以便您可以從應用程式存取它們。如需詳細資訊，請參閱[使用 環境變數](apps-environment-vars.md)。