Project Architecture Diagram

Summary of the tasks:

  • Step 0: Inspect the archtecture 00:02:23
  • Step 1: Create a Cloud9 IDE 00:05:49
  • Step 2: Get the Project Assets 00:07:51
  • Step 3: Install a LAMP web server on CLoud9 IDE 00:08:49
  • Step 4: Create a MySQL RDS database instance 00:13:15
  • Step 5:Modify Launch Template
  • Step 6: Create an Application Load Balancer 00:20:53
  • Step 7: Importing the data into the RDS database 00:25:18
  • Step 8: Configure the system parameters in Parameter Store Systems Manager 00:38:20

Step 0: Inspect the archtecture

  • Inspect the example VPC.
  • Inspect the subnets.
  • Inspect the Security Groups.
  • Inspect the AMI.

Step 1: Create a Cloud9 IDE

Step 2: Get the Project Assets

  1. Clone the repository:
    1
    git clone https://github.com/baselm/capstoneproject.git
  2. Extract the files to the Apache www folder:
    1
    unzip Example.zip -d /var/www/html/

Step 3: Install a LAMP web server on Amazon Linux 2

LAMP (Linux, Apache HTTP server, MySQL database, and PHP) stack

1
2
3
4
5
6
7
8
sudo yum -y update
sudo amazon-linux-extras install -y lamp-mariadb10.2-php7.2 php7.2

sudo yum install -y httpd mariadb-server
sudo systemctl start httpd

sudo systemctl enable httpd
sudo systemctl is-enabled httpd
  • Open port 80 from the security group of the Cloud9 EC2 instance
  • Get the cloud9 EC2 public instance IP address and test that you can access the website

Step 4: Create a MySQL RDS database instance

with the following specifications.

  • Create a db subnet group
  • Databasetype: MySQL
  • Template: Dev/Test
  • DBinstanceidentifier: Example
  • DB instance size: db.t3.micro
  • Storage type: General Purpose (SSD)
  • Allocatedstorage: 20GiB
  • Storageautoscaling: Enabled
  • Standbyinstance: Enabled
  • Virtualprivatecloud: ExampleVPC
  • Databaseauthenticationmethod: Passwordauthentication
  • Initialdatabasename: exampledb
  • Enhancedmonitoring: Disabled

Step 5: Modify Launch Template

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/bash -ex
sudo yum -y update
amazon-linux-extras install -y lamp-mariadb10.2-php7.2 php7.2
sudo yum install -y httpd mariadb-server
sudo chkconfig httpd on
sudo service httpd start
cd /home/ec2-user
sudo wget https://aws-tc-largeobjects.s3-us-west-2.amazonaws.com/ILT-TF-200-ACACAD-20-EN/capstone-project/Countrydatadump.sql
sudo chown ec2-user:ec2-user Countrydatadump.sql
cd /var/www/html
sudo wget https://aws-tc-largeobjects.s3-us-west-2.amazonaws.com/ILT-TF-200-ACACAD-20-EN/capstone-project/Example.zip
sudo unzip Example.zip -d /var/www/html/
sudo chmod 755 Example
sudo sed -i "2i date.timezone = \"America/New_York\" " /etc/php.ini
sudo service httpd restart
cd /var/www/html/Example
sudo mv * ../

Step 6: Create an Application Load Balancer

  • Create target group
  • Create an auto scaling group
  • Lunch Web Instances in the private subnet

    Step 7: Importing the data into the RDS database

    _Importing the data into the RDS database instance from CLoud9 or by accessing the web instance via bastion host
  1. get the SQLDump file:

  2. connect to the RDS database, run this command:

    1
    mysql -u admin -p --host <rds-endpoint>
  3. Test that you can access the RDS DB

    1
    2
    use exampledb;	
    show tables;
  4. Import the data into the RDS database.

    1
    mysql -u admin -p exampledb --host <rds-endpoint>  < Countrydatadump.sql       

    Test the ALB

  • Test data was imported
    1
    2
    3
    use exampledb;	
    show tables;
    select * from countrydata_final;

Step 8: Configure the system parameters in Parameter Store Systems Manager

Add the following parameters to the Parameter Store and set the correct values:

  1. /example/endpoint

  2. /example/username

  3. /example/password

  4. /example/database


References:
https://github.com/baselm/capstoneproject