实验1:在AWS上部署一个Web Application应用实践

2018-05-13  本文已影响83人  K1024

Deploying a Web Applicaiton on AWS

实验目标

通过多个AWS的服务去部署一个web application

  1. web application是基于PHP 部署在 EC2上
  2. 数据会被存储在Amazon DynamoDB上
  3. 图片会被保存在 Amazon S3 上

操作步骤

创建一个IAM Role

原因:EC2调用其他aws服务的时候需要具备角色去操作,否则是非法操作。这个AWS做的比较严谨。

  1. 选择IAM服务,从导航菜单栏能看到创建角色
  2. 创建一个角色,记得选择是为EC2创建角色,同时设置权限为AmazonS3FullAccess、AmazonDynamoDBFullAccess,这样就可以访问S3和DynamoDB了

创建一个S3存储Bucket

  1. 选择S3服务,直接创建Bucket,设置一个名字,注意这个名字是全球独一无二的,因为将来要通过这个名字组合出的域名访问S3内存储的内容;

创建一个DynamoDB Table

  1. 选择DynamoDB服务,这是一个托管的NosqlDB ,创建相关表.
  2. 创建表的时候需要指定主键名称和排序键的名称。

创建一个VPC,同时创建一个IGW和一个Public Subnet

  1. 创建一个VPC,规划好网段,一般不使用172网段,这里我们可以采用常用的策略 设置 IPv4 CIDR block的值为10.200.0.0/16


    图片.png
  2. 这样VPC内的子网共计有256*256个IP可用(当然包含了那些预留的IP)

  3. 创建一个Public Subnet,要在vpc的网段内,详情参考如下


    图片.png
  4. 创建一个Internet GateWay,这个就是用来连接互联网的。这里要将Internet Gateway 给Attach到刚才创建的VPC上

  5. 创建一个路由表,Route table 是VPC级别的,设置Destination为0.0.0.0/0,将他的Target设置为刚才创建的Internet Gateway。

  6. 将路由表与刚才创建的Public Subnet关联,这里就是更改路由表的属性标签,将其余Public Subnet进行关联。

  7. 至此我们完成了实验环境的VPC的整体设置

部署应用到EC2上

  1. 先创建一个EC2实例,填写的相关信息如下图,建议选择linux AMI,号称改写了内核,完全虚拟化,性能媲美纯物理服务器;


    图片.png

    上图设置EC2的VPC、子网,自动获取公网IP、拥有写DynamoDB和S3的能力。

  2. 打开EC2的user Data标签,这个标签可以输入一些shell脚本,在服务器启动的时候执行。
  3. 这里我将如下过程都给放到user data输入框里边去:
  1. 脚本如下
#!/bin/bash
# Install Apache Web Server and PHP
yum remove -y httpd php
yum install -y httpd24 php56
# Download Lab files
wget https://us-west-2-tcprod.s3.amazonaws.com/courses/ILT-TF-100-ARCHIT/v5.4.0/lab-1-webapp/scripts/lab1src.zip
unzip lab1src.zip -d /tmp/
mv /tmp/lab1src/*.php /var/www/html/
# Download and install the AWS SDK for PHP
wget https://github.com/aws/aws-sdk-php/releases/download/3.15.9/aws.zip
unzip aws -d /var/www/html
# Determine Region
AZ=`curl --silent http://169.254.169.254/latest/meta-data/placement/availability-zone/`
REGION=${AZ::-1}
# Copy files to Amazon S3 bucket with name webapp-*
BUCKET=`aws s3api list-buckets --query "Buckets[?starts_with(Name, 'webapp-')].Name | [0]" --output text`
aws s3 cp /tmp/lab1src/jquery/ s3://$BUCKET/jquery/ --recursive --acl public-read --region $REGION
aws s3 cp /tmp/lab1src/images/ s3://$BUCKET/images/ --recursive --acl public-read --region $REGION
aws s3 ls s3://$BUCKET/ --region $REGION --recursive
# Configure Region and Bucket to use
sed -i "2s/%region%/$REGION/g" /var/www/html/*.php
sed -i "3s/%bucket%/$BUCKET/g" /var/www/html/*.php
# Copy data into DynamoDB table
aws dynamodb batch-write-item --request-items file:///tmp/lab1src/scripts/services1.json --region $REGION
aws dynamodb batch-write-item --request-items file:///tmp/lab1src/scripts/services2.json --region $REGION
aws dynamodb batch-write-item --request-items file:///tmp/lab1src/scripts/services3.json --region $REGION
# Turn on web server
chkconfig httpd on
service httpd start

验证应用是否启动

  1. 直接访问EC2,看刚才启动的实例的公网IP
  2. 通过浏览器访问公网IP,就能看到启动的应用
上一篇下一篇

猜你喜欢

热点阅读