给学校建网站那个系统好学做网站 软件
aws(学习笔记第二十六课)
- 使用
aws Elastic Beanstalk
学习内容:
AWS Elastic Beanstalk整体架构AWS Elastic Beanstalk的hands onAWS Elastic Beanstalk部署node.js程序包- 练习使用
AWS Elastic Beanstalk的ebcli
1. AWS Elastic Beanstalk整体架构
-
官方的
guide
AWS的官方guide如下。
aws Elastic Beanstalk guide链接 -
为什么使用
AWS Elastic Beanstalk
web application开发,必须考虑很多环境面的问题。VPC如何分割成subnet- 如何设定
AutoScaling - 设定
Elastic Load Balancing Route53设定dev/test/prod的环境设定
对于
web application开发者来说,要考虑应用开发以外的很多,需要很多考虑。如果想简单使用AWS,只考虑开发业务代码,生成.zip或者war文件就能够作成一个完整的web application,那么可以考虑使用AWS Elastic Beanstalk。
2. AWS Elastic Beanstalk的hands on
AWS Elastic Beanstalk的全体架构

- 构建
AWS Elastic Beanstalk- 开始一个新的
Elastic Beanstalk,首先创建Elastic Beanstalk application

- 之后创建
environment- 选择
web服务器环境

- 选择平台
平台选择java。其他的也没有问题,这里首先使用java

- 选择应用程序代码
这里就是应用程序代码,开发人员只关注业务代码上传,web应用程序的部署都交给AWS。这里选择AWS提供的示例程序。后面的练习中使用node.js的打包程序

- 选择
- 权限设定
- 使用
AWS的自动设置功能
自动生成一个生成的role

- 可以查看
AWS创建的两个role的权限设定
可以看出都是关于Elastic Beanstalk执行和ec2的各种权限。

- 使用
- 选择网络设定
VPC和Subnet的设定
这里选择待带有公网权限的default的VPC和Subnet。

database的设定这里无效
主要是练习使用Elastic Beanstalk的功能,这里让database的设置无效化。
- 安全组设定
安全组这里选择网络全开的default安全组,为了方便练习。

- 最后提交
Elastic BeanStalk

- 经过几分钟之后,
Elastic BeanStalk Environment会创建成功

- 开始一个新的
- 访问
AWS Elastic Beanstalk示例程序- 回到
Elastic BeanStalk Application一栏画面,进入创建的Applicaiton

- 点击
Elastic BeanStalk Application的域
可以看出马上会进入该示例程序。

- 回到
3. AWS Elastic Beanstalk部署node.js程序包
- 编写自己的
node.js web application- 进入上面创建的
ec2

- 在
ec2上创建node.js web applicationsudo -i cd /home/ec2-user mkdir my_webapp yum install npm -y npm init -y npm install express - 在
/home/ec2-user/my_webapp上创建app.jsconst express = require('express'); const app = express(); app.get('/',(req,res)=>{ res.send("Welcome to Home Page") }); app.listen(8080,() =>{console.log("I am node js"); }); - 执行
app.jsnode application.js - 访问该
node.js web application

- 打包
node.js web application,上传到s3 bucket[root@ip-172-31-1-135 my_webapp]# zip -r app.zip ./* [root@ip-172-31-1-135 my_webapp]# aws s3 cp ./app.zip s3://finlay-cloudshell
- 进入上面创建的
- 部署
node.js web application- 开始创建另一个
application
- 选择平台环境

- 选择
s3 bucket的应用程序

- 访问
node.js web application

AWS Elastic Beanstalk让开发者单纯面对web application的开发,其他的交个AWS来构建。在这方面表现很出色。
- 开始创建另一个
4.练习使用AWS Elastic Beanstalk的ebcli
- 什么是
eb cli
顾名思义,这个是Elastic Beanstalk Command Line Interface
pypi的官方网站 - 使用
ebcli
这里可以使用cloudshell进行开发。-
进入
cloudshell,并创建一个helloworld的实例applicationmkdir myapp cd myapp echo "I am EB CLI" > index.html eb init(选择区域) eb create -
trouble shooting
这里会有几种常见错误对应方法。Default subnet in ap-northeast-1a not found
这里,loader balancer需要default VPC必须要有default subnet,但是这里的环境没有,所以需要创建一个subnet
并且,AWS console是不能够创建default subnet,必须使用aws cli来创建。
同样,使用cloudshellaws ec2 create-default-subnet --availability-zone ap-northeast-1aAt least two subnets in two different Availability Zones must be specified
这个也是常见的错误,但是这个提示特别的误导开发者,正确的是,AWS Elastic Beanstalk在自动load balancer的时候,需要两个条件。- 必须在有两个以上的
Availability Zone里面作成subnet - 必须对每个
Availability Zone设定default subnet注意AWS console是不能够创建default subnet,必须使用aws cli来创建。 - 创建
subnet代码aws ec2 create-default-subnet --availability-zone ap-northeast-1c aws ec2 create-default-subnet --availability-zone ap-northeast-1d
- 必须在有两个以上的
-
再次挑战
eb create
最后,创建成功。

-
访问
web application(Elastic Beanstalk)- 进入
application,点击environment

- 点击该
environment的domain
这里尝试了9次才成功,所以点击最后一次的domain。

- 访问
application
成功打开页面。
- 进入
-
