在AWS上部署一个网站
使用Elastic Beanstalk,用户就不必操心自己的操作系统或虚拟服务器,因为它在它们之上加了一个抽象层。
前言
Elastic Beanstalk帮助用户处理下面反复发生的任务。
为网站应用(PHP、Java等)提供一个运行环境。
自动安装并更新网站应用。
配置网站应用及其环境。
调整网站应用规模来负载均衡。
监控和调试网站应用。
一、Elastic Beanstalk是什么?
Elastic Beanstalk的不同组成部分有助于了解它的功能。应用是一个逻辑上的容器。它包含了版本、环境和配置。如果用户在一个区域开始使用Elastic Beanstalk,首先需要创建一个应用。版本包含用户的应用的指定版本。要创建一个新版本,用户必须上传自己的可执行文件到用来存储静态文件的Amazon S3服务。版本是一个指向这个可执行文件的压缩文档的指针。配置模板包含默认配置。用户可以通过自定义的配置模板管理自己的应用的配置以及环境配置。环境是Elastic Beanstalk执行应用的地方。它由版本和配置构成。用户可以通过多次使用版本和配置为一个应用运行多个环境。
二、使用步骤
1.部署一个Node.js
Etherpad是一个开源的在线编辑器,它让许多人可以同时编辑一份文档。我们将通过以下3个步骤在Elastic Beanstalk的帮助下部署这个基于Node.js的应用。
(1)创建应用:逻辑上的容器。
(2)创建版本:指向特定Etherpad版本的指针。
(3)创建环境:Etherpad运行的地方。
打开命令行并且执行下面的命令来为Elastic Beanstalk服务创建一个应用:
$ aws elasticbeanstalk create-application --application-name etherpad
2.用Elastic Beanstalk创建一个环境来执行Etherpad
要使用Elastic Beanstalk部署Etherpad,需要基于Amazon Linux及Etherpad的版本为Node.js创建一个环境。要获取最新的Node.js环境版本,列出包含它的解决方案堆栈名(solution stack name),运行下面的命令:
$ aws elasticbeanstalk list-available-solution-stacks --output text \ --query "SolutionStacks[?contains(@, 'running Node.js')] | [0]"\ 64bit Amazon Linux 2015.03 v1.4.6 running Node.js
选项EnvironmentType = SingleInstance自动启动一个不可变规模且无负载均衡的单台虚拟服务器。使用从前一个命令得到的输出替换$SolutionStackName:
$ aws elasticbeanstalk create-environment --environment-name etherpad \ --application-name etherpad \ --option-settings Namespace=aws:elasticbeanstalk:environment,\ OptionName=EnvironmentType,Value=SingleInstance \ --solution-stack-name "$SolutionStackName" \ --version-label 1.5.2
上传了一个包含了Etherpad版本1.5.2的zip压缩文档。如果想部署另一个应用,可以上传自己的应用的静态文件至AWS S3服务。
总结
在将浏览器指向我们的Etherpad安装前,需要花费几分钟用下面的命令来跟踪Etherpad环境的状态:
$ aws elasticbeanstalk describe-environments --environment-names etherpad
如果Status变为Ready,并且Health变成Green,说明已经准备好了,可以创建我们的第一个Etherpad文档了。命令describe的输出应该与以下的例子类似。
{ "Environments": [{ "ApplicationName": "etherpad", "EnvironmentName": "etherpad", "VersionLabel": "1", "Status": "Ready", ←--等待Status 变为Ready "EnvironmentId": "e-pwbfmgrsjp", "EndpointURL": "23.23.223.115", "SolutionStackName": "64bit Amazon Linux 2015.03 v1.4.6 running Node.js", "CNAME": "etherpad-cxzshvfjzu.elasticbeanstalk.com", ←--环境的DNS 记录(例如,要从浏览器打开) "Health": "Green", ←--等待Health变为Ready "Tier": { "Version": " ", "Type": "Standard", "Name": "WebServer" }, "DateUpdated": "2015-04-07T08:45:07.658Z", "DateCreated": "2015-04-07T08:40:21.698Z" }] }
我们已经利用3个命令在AWS上部署了一个Node.js网站应用。现在把浏览器指向CNAME中的URL,并输入一个新文档名,点击OK按钮来打开一个新文档。