菜单
AWS Elastic Beanstalk
开发人员指南 (API Version 2010-12-01)

将 Express 应用程序部署到 Elastic Beanstalk

本部分演示如何使用 EB CLI 和 git 将示例应用程序部署到 Elastic Beanstalk,然后更新该应用程序以使用 Express 框架。

先决条件

本教程要求使用 Node.js 语言及其程序包管理器 NPM。请参阅设置 Node.js 开发环境 了解有关设置本地开发环境的详细信息。

安装 Express 和生成项目

设置 Express 并创建项目结构。以下向您演示了如何在 Linux 操作系统上设置 Express。

在本地计算机上设置 Express 开发环境

  1. 为 Express 应用程序创建目录。

    ~$ mkdir node-express
    ~$ cd node-express
  2. 全局安装 Express,以便您拥有 express 命令的访问权限。

    ~/node-express$ npm install -g express-generator
  3. 根据操作系统,您可能需要设置路径才能运行 express 命令。如果需要设置路径,请使用上一步 (安装 Express) 中的输出。以下是示例。

    ~/node-express$ export:PATH=$PATH:/usr/local/share/npm/bin/express
  4. 运行 express 命令。这会生成 package.json

    ~/node-express$ express

    在系统提示您是否要继续时,键入 y

  5. 设置本地依赖项。

    ~/node-express$ npm install
  6. 验证它是否工作。

    ~/node-express$ npm start

    您应该可以看到类似于如下所示的输出内容:

    > nodejs@0.0.0 start /home/local/user/node-express
    > node ./bin/www

    Ctrl+c 以停止该服务器。

  7. 初始化 Git 存储库。如果您没有安装 Git,请从 Git 下载站点下载它。

    ~/node-express$ git init
  8. 创建名为 .gitignore 的文件,并向其中添加以下文件和目录。这些文件不会被添加到存储库中。这一步不是必须执行的,但建议执行。

    node-express/.gitignore

    node_modules/
    .gitignore
    .elasticbeanstalk/

创建 Elastic Beanstalk 环境

为您的应用程序配置 EB CLI 存储库,并创建运行 Node.js 平台的 Elastic Beanstalk 环境。

  1. 使用 eb init 命令创建存储库。

    ~/node-express$ eb init --platform node.js --region us-west-2
    Application node-express has been created.

    此命令在名为 .elasticbeanstalk 的文件夹中创建配置文件,该配置文件指定用于为您的应用程序创建环境的设置;并创建以当前文件夹命名的 Elastic Beanstalk 应用程序。

  2. 使用 eb create 命令创建运行示例应用程序的环境。

    ~/node-express$ eb create --sample node-express-env

    此命令使用 Node.js 平台的默认设置以及以下资源来创建负载均衡环境:

    • EC2 实例 – 配置来在您选择的平台上运行 Web 应用程序的 Amazon Elastic Compute Cloud (Amazon EC2) 虚拟机。

      各平台运行一组不同的软件、配置文件和脚本以支持特定的语言版本、框架、Web 容器或其组合。大多数平台使用 Apache 或 nginx 作为 Web 应用程序前的反向代理,向其转发请求、提供静态资产以及生成访问和错误日志。

    • 实例安全组 – 配置来允许通过端口 80 访问的 Amazon EC2 安全组。通过此资源,HTTP 流量可以从负载均衡器到达运行您的 Web 应用程序的 EC2 实例。默认情况下,其他端口不允许流量进入。

    • 负载均衡器 – 配置来向运行您的应用程序的实例分配请求的 Elastic Load Balancing 负载均衡器。负载均衡器还使您无需将实例直接公开在 Internet 上。

    • 负载均衡器安全组 – 配置来允许通过端口 80 访问的 Amazon EC2 安全组。利用此资源,HTTP 流量可从 Internet 到达负载均衡器。默认情况下,其他端口不允许流量进入。

    • Auto Scaling 组 – 配置来在实例终止或不可用时替换实例的 Auto Scaling 组。

    • Amazon S3 存储桶 – 使用 Elastic Beanstalk 时创建的源代码、日志和其他内容的存储位置。

    • Amazon CloudWatch 警报 – 用于监控环境中的实例负载的两个 CloudWatch 警报,在负载过高或过低时触发。警报触发后,您的 Auto Scaling 组会扩展或收缩进行响应。

    • AWS CloudFormation 堆栈 – Elastic Beanstalk 使用 AWS CloudFormation 启动您环境中的资源并传播配置更改。这些资源在您可通过 AWS CloudFormation 控制台查看的模板中定义。

    • 域名 – 一个域名,它以下面的形式路由到您的 Web 应用程序:子域区域.elasticbeanstalk.com

  3. 当环境创建完成后,使用 eb open 命令在默认浏览器中打开环境 URL。

    ~/node-express$ eb open

更新应用程序

在创建具有示例应用程序的环境后,可将其更新为自己的应用程序。在这一步中,我们会更新示例应用程序,以使用 Express 框架。

更新您的应用程序以使用 Express

  1. 添加一个将 Node Command 设为“npm start”的配置文件:

    node-express/.ebextensions/nodecommand.config

    option_settings:
      aws:elasticbeanstalk:container:nodejs:
        NodeCommand: "npm start"

    有关更多信息,请参阅 使用配置文件 (.ebextensions) 进行高级环境自定义

  2. 暂存文件:

    ~/node-express$ git add .
    ~/node-express$ git commit -m "First express app"
  3. 部署更改:

    ~/node-express$ eb deploy
  4. 在环境变为绿色并准备就绪后,刷新 URL 以验证环境是否工作。您应看到一个显示 Welcome to Express 的网页。

接下来,让我们更新 Express 应用程序以使用静态文件并添加新页面。

配置静态文件并向 Express 应用程序添加新页面

  1. 添加包含以下内容的第二个配置文件:

    node-express/.ebextensions/staticfiles.config

    option_settings:
      aws:elasticbeanstalk:container:nodejs:staticfiles:
        /public: /public

    此设置将代理服务器配置为从应用程序的 /public 路径上的 public 文件夹中提供文件。从代理静态提供文件可减少应用程序的负载。

  2. 注释掉 node-express/app.js 中的静态映射。这一步不是必须执行的,但可以很好地测试出是否正确配置了静态映射。

    //  app.use(express.static(path.join(__dirname, 'public'))); 
  3. 将更新的文件添加到本地存储库,然后提交更改。

    ~/node-express$ git add .ebextensions/ app.js
    ~/node-express$ git commit -m "Serve stylesheets statically with nginx."
  4. 添加 node-express/routes/hike.js. 键入以下内容:

    exports.index = function(req, res) {
     res.render('hike', {title: 'My Hiking Log'});
    };
    
    exports.add_hike = function(req, res) {
    };
  5. 更新 node-express/app.js 以包含三个新行。

    首先,添加以下行来为此路由添加 require

    hike = require('./routes/hike');

    您的文件应类似于以下代码段:

    var express = require('express');
    var path = require('path');
    var hike = require('./routes/hike');

    然后,将以下两行添加到 node-express/app.js 中的 var app = express(); 后面

    app.get('/hikes', hike.index);
    app.post('/add_hike', hike.add_hike);

    您的文件应类似于以下代码段:

    var app = express();
    app.get('/hikes', hike.index);
    app.post('/add_hike', hike.add_hike);
  6. node-express/views/index.jade 复制到 node-express/views/hike.jade

    ~/node-express$ cp views/index.jade views/hike.jade
  7. 将文件添加到本地存储库,提交更改,然后部署更新的应用程序。

    ~/node-express$ git add .
    ~/node-express$ git commit -m "Add hikes route and template."
    ~/node-express$ eb deploy
  8. 您的环境将在几分钟后进行更新。在环境变为绿色并准备就绪后,通过刷新浏览器并将 hikes 追加到 URL 末尾 (例如 http://node-express-env-syypntcz2q.elasticbeanstalk.com/hikes),验证环境是否正常工作。

    您应看到标题为 My Hiking Log 的网页。

清除

如果您已使用完 Elastic Beanstalk,则可以终止您的 环境。

  • 使用 eb terminate 命令终止您的环境以及其中包含的所有资源。

    ~/node-express$ eb terminate
    The environment "node-express-env" and all associated instances will be terminated.
    To confirm, type the environment name: node-express-env
    INFO: terminateEnvironment is starting.
    ...