

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Node.js 应用服务器 OpsWorks 堆栈层
<a name="workinglayers-node"></a>

**重要**  
该 AWS OpsWorks Stacks 服务于 2024 年 5 月 26 日终止，新客户和现有客户均已禁用。我们强烈建议客户尽快将其工作负载迁移到其他解决方案。如果您对迁移有疑问，请通过 re [AWS : Post 或通过 Pre](https://repost.aws/) mium Su [AWS pp](https://aws.amazon.com/support) ort 与 AWS 支持 团队联系。

**注意**  
此层仅适用于基于 Linux 的堆栈。

Node.js App Server 层是一个 OpsWorks Stacks 层，它为充当 [Node.js](http://nodejs.org/) 应用程序服务器的实例提供蓝图。 OpsWorks Stacks 还会安装 [Express](http://expressjs.com/)，因此该层的实例同时支持标准和 Express 应用程序。

**安装**：Node.js 安装在 `/usr/local/bin/node` 中。

**Add Layer** 页面提供以下配置选项：

**Node.js 版本**  
有关当前支持的版本的列表，请参阅[OpsWorks 堆栈操作系统](workinginstances-os.md)。

**自定义安全组**  
如果您选择不自动将内置 OpsWorks Stacks 安全组与您的图层关联，则会显示此设置。您必须指定要将哪一安全组与层关联起来。有关更多信息，请参阅 [创建新堆栈](workingstacks-creating.md)。

**Elastic Load Balancer**  
您可以将 Elastic Load Balancing 负载均衡器连接到层的实例。

**重要**  
如果您的 Node.js 应用程序使用 SSL，我们建议您尽可能禁用 SSLv3 ，以解决 [CVE-2015-8027](http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-8027) 中描述的漏洞。为此，您必须将 **Node.js version** 设置为 `0.12.9`。

## 部署 Node.js 应用程序
<a name="w2ab1c14c71b9c21c21c19c17"></a>

有关如何为 OpsWorks Stacks 实施简单的 Node.js 应用程序并将其部署到一个堆栈的详细演练，请参阅[创建您的第一个 Node.js 堆栈](gettingstarted-node.md)。一般而言， OpsWorks Stacks 的 Node.js 应用程序应满足以下条件：
+ 主文件必须命名为 `server.js` 且驻留在部署的应用程序的根目录下。
+ [Express](http://expressjs.com/) 应用程序必须将 `package.json` 文件放在应用程序的根目录下。
+ 默认情况下，应用程序必须侦听端口 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 层](workinglayers-basics-edit.md#workinglayers-basics-edit-security)。请勿通过编辑内置安全组来修改入站规则。每次创建堆栈时，Stac OpsWorks ks 都会使用标准设置覆盖内置安全组，因此您所做的任何更改都将丢失。

**注意**  
OpsWorks Stacks 将 PORT 环境变量设置为 80（默认）或 443（如果您启用 SSL），因此您可以使用以下代码来侦听请求。  

```
app.listen(process.env.PORT);
```

如果您[将 Node.js 应用程序配置为支持 SSL](workingapps-creating.md#workingapps-creating-domain-ssl)，则必须指定密钥和证书。 OpsWorks Stacks 将每个应用服务器实例的数据作为单独的文件放在`/srv/www/app_shortname/shared/config`目录中，如下所示。
+ `ssl.crt`- SSL 证书。
+ `ssl.key`- SSL 密钥。
+ `ssl.ca`-链证书（如果您已经指定了一个）。

您的应用程序可以从这些文件中获取 SSL 密钥和证书。