将 Express 应用程序部署到 Elastic Beanstalk
本部分演示如何使用 Elastic Beanstalk 命令行界面 (EB CLI) 和 Git 向 Elastic Beanstalk 部署示例应用程序,然后更新该应用程序以使用 Express
先决条件
本教程要求使用 Node.js 语言、其程序包管理器 NPM 以及 Express Web 应用程序框架。有关安装这些组件和设置本地开发环境的详细信息,请参阅设置 Node.js 开发环境。
在本教程中,您不需要安装适用于 Node.js 的 Amazon,这在 设置 Node.js 开发环境 中也有提到。
本教程还需要 Elastic Beanstalk 命令行界面 (EB CLI)。有关安装和配置 EB CLI 的详细信息,请参阅 安装 EB CLI 和 配置 EB CLI。
初始化 Git
先决条件 Node.js 和 Express 设置可实现 node-express
文件夹中的 Express 项目结构。如果尚未生成 Express 项目,请运行以下命令。有关更多信息,请参阅 安装 Express。
~/node-express$ express && npm install
现在,让我们在此文件夹中设置 Git 存储库。
设置 Git 存储库
-
初始化 Git 存储库。如果您没有安装 Git,请从 Git 下载站点
下载它。 ~/node-express$
git init
-
创建名为
.gitignore
的文件,并向其中添加以下文件和目录。这些文件不会被添加到存储库中。这一步不是必须执行的,但建议执行。node-express/.gitignore
node_modules/ .gitignore .elasticbeanstalk/
创建 Elastic Beanstalk 环境
为您的应用程序配置 EB CLI 存储库,并创建运行 Node.js 平台的 Elastic Beanstalk 环境。
-
使用 eb init 命令创建存储库。
~/node-express$
eb init --platform node.js --region us-east-2
Application node-express has been created.此命令在名为
.elasticbeanstalk
的文件夹中创建配置文件,该配置文件指定用于为您的应用程序创建环境的设置;并创建以当前文件夹命名的 Elastic Beanstalk 应用程序。 -
使用 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 组会扩展或收缩以进行响应。
-
Amazon CloudFormation 堆栈 – Elastic Beanstalk 使用 Amazon CloudFormation 启动您环境中的资源并传播配置更改。这些资源在您可通过 Amazon CloudFormation 控制台
查看的模板中定义。 -
域名 – 一个域名,它以下面的形式路由到您的 Web 应用程序:
subdomain
.region
.elasticbeanstalk.com。
-
-
当环境创建完成后,使用 eb open 命令在默认浏览器中打开环境 URL。
~/node-express$
eb open
更新应用程序
在创建具有示例应用程序的环境后,可将其更新为自己的应用程序。在这一步中,我们会更新示例应用程序,以使用 Express 框架。
更新您的应用程序以使用 Express
-
在本地计算机上的源包顶级目录中,创建
.ebextensions
目录。在此示例中,我们使用的是node-express/.ebextensions
。 -
添加一个将 Node Command 设为“npm start”的配置文件:
node-express/.ebextensions/nodecommand.config
option_settings: aws:elasticbeanstalk:container:nodejs: NodeCommand: "npm start"
有关更多信息,请参阅 使用配置文件 (.ebextensions) 进行高级环境自定义。
-
暂存文件:
~/node-express$
git add .
~/node-express$git commit -m "First express app"
-
部署更改:
~/node-express$
eb deploy
-
在环境变为绿色并准备就绪后,刷新 URL 以验证环境是否工作。您应看到一个显示 Welcome to Express(欢迎使用 Express)的网页。
接下来,让我们更新 Express 应用程序以使用静态文件并添加新页面。
配置静态文件并向 Express 应用程序添加新页面
-
添加包含以下内容的第二个配置文件:
node-express/.ebextensions/staticfiles.config
option_settings: aws:elasticbeanstalk:container:nodejs:staticfiles: /public: /public
此设置将代理服务器配置为从应用程序的
public
路径上的/public
文件夹中提供文件。从代理静态提供文件可减少应用程序的负载。 -
注释掉
node-express/app.js
中的静态映射。这一步不是必须执行的,但可以很好地测试出是否正确配置了静态映射。//
app.use(express.static(path.join(__dirname, 'public'))); -
将更新的文件添加到本地存储库,然后提交更改。
~/node-express$
git add .ebextensions/ app.js
~/node-express$git commit -m "Serve stylesheets statically with nginx."
-
添加
node-express/routes/hike.js
. 键入以下内容:exports.index = function(req, res) { res.render('hike', {title: 'My Hiking Log'}); }; exports.add_hike = function(req, res) { };
-
更新
node-express/app.js
以包含三个新行。首先,添加以下行来为此路由添加
require
:var 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);
-
将
node-express/views/index.jade
复制到node-express/views/hike.jade
。~/node-express$
cp views/index.jade views/hike.jade
-
将文件添加到本地存储库,提交更改,然后部署更新的应用程序。
~/node-express$
git add .
~/node-express$git commit -m "Add hikes route and template."
~/node-express$eb deploy
-
您的环境将在几分钟后进行更新。在环境变为绿色并准备就绪后,通过刷新浏览器并将
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.
...