美文网首页
实验1:在AWS上部署一个Web Application应用实践

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

作者: K1024 | 来源:发表于2018-05-13 21:59 被阅读83次

    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输入框里边去:
    • 安装httpd服务器和PHP语言运行环境
    • 下载web application程序脚本
    • 下载安装AWS支持PHP的sdk
    • 将文件拷贝到S3的webapp-开头的那个bucket中
    • 将数据拷贝到DynamoDB中
    • 启动web server
    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,就能看到启动的应用

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/hdhrdftx.html