In this blog, I will guide you through step-by-step instructions to set up a two-tier architecture on AWS using VPC, Subnets, Internet Gateway, Route Tables, RDS, EC2, Apache, MySQL, PHP, and HTML. This project will allow you to host a registration web application where users can submit their details, which will be stored in an RDS MySQL database.
Step 1: Create a VPC
1.1 Login to AWS Management Console
- Navigate to the VPC service
- Click Create VPC
- Enter the following details:
- VPC Name: my-vpc
- IPv4 CIDR Block: 10.0.0.0/16
- Tenancy: Default
- Click Create VPC
Step 2: Create Subnets
2.1 Create a Public Subnet
- Go to VPC > Subnets
- Click Create Subnet
- Choose my-vpc
- Set Subnet Name: public-subnet
- IPv4 CIDR Block: 10.0.1.0/24
- Click Create
2.2 Create a Private Subnet
Repeat the steps above but set:
- Subnet Name: private-subnet
- IPv4 CIDR Block: 10.0.2.0/24
Step 3: Create an Internet Gateway (IGW) and Attach to VPC
3.1 Create IGW
- Go to VPC > Internet Gateways
- Click Create Internet Gateway
- Set Name: your-igw
- Click Create IGW 3.2 Attach IGW to VPC
- Select your-igw
- Click Actions > Attach to VPC
- Choose my-vpc and click Attach
Step 4: Configure Route Tables
4.1 Create a Public Route Table
- Go to VPC > Route Tables
- Click Create Route Table
- Set Name: public-route-table
- Choose my-vpc and click Create
- Edit Routes → Add a new route:
- Destination: 0.0.0.0/0
- Target: my-igw
- Edit Subnet Associations → Attach public-subnet
Step 5: Create an RDS Database (MySQL)
- Go to RDS > Create Database
- Choose Standard Create
- Select MySQL
- Set DB instance identifier: my-rds
- Master Username: admin
- Master Password: yourpassword
- Subnet Group: Select private-subnet
- VPC Security Group: Allow 3306 (MySQL) from my-vpc
- Click Create Database
Step 6: Launch an EC2 Instance
- Go to EC2 > Launch Instance
- Choose Ubuntu 22.04
- Set Instance Name: my-ec2
- Select my-vpc and attach public-subnet
- Security Group: Allow
- SSH (22) from your IP
- HTTP (80) from anywhere
- MySQL (3306) from my-vpc
- Click Launch Instance
Step 7: Install Apache, PHP, and MySQL Client
7.1 Connect to EC2
ssh -i your-key.pem ubuntu@your-ec2-public-ip
7.2 Install LAMP Stack
sudo apt update && sudo apt install -y apache2 php libapache2-mod-php php-mysql mysql-client
7.3 Start Apache
sudo systemctl start apache2
sudo systemctl enable apache2
Step 8: Configure Web Application
8.1 Create the Registration Form
cd /var/www/html
sudo nano index.html
Registration Form
User Registration
Name:
DOB:
Email:
Enter fullscreen mode
Exit fullscreen mode
8.2 Create PHP Script (submit.php)
sudo nano /var/www/html/submit.php
Enter fullscreen mode
Exit fullscreen mode
connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$name = $_POST['name'];
$dob = $_POST['dob'];
$email = $_POST['email'];
$stmt = $conn->prepare("INSERT INTO users (name, dob, email) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $name, $dob, $email);
if ($stmt->execute()) {
echo "Registration successful";
} else {
echo "Error: " . $stmt->error;
}
$stmt->close();
$conn->close();
?>
Enter fullscreen mode
Exit fullscreen mode
Step 9: Create Target Group
Go to the AWS EC2 Console → Navigate to Target Groups
Click Create target group
Choose Target type: Instance
Enter Target group name: my-target-group
Select Protocol: HTTP
Select Port: 80
Choose the VPC you created earlier
Click Next
Under Register Targets, select your EC2 instances
Click Include as pending below, then Create target group
Step 10: Create an Application Load Balancer (ALB)
Go to AWS EC2 Console → Navigate to Load Balancers
Click Create Load Balancer
Choose Application Load Balancer
Enter ALB Name: my-alb
Scheme: Internet-facing
IP address type: IPv4
Select the VPC
Select at least two public subnets (for high availability)
Click Next
Step 11: Test the Application
Restart Apache
sudo systemctl restart apache2
Open your browser and visit:
http://your-ec2-public-ip/
Fill in the form and Submit
Check MySQL Database:
mysql -u admin -p -h your-rds-endpoint
USE your_database;
SELECT * FROM table_name;
Enter fullscreen mode
Exit fullscreen mode
This setup ensures a scalable, secure, and high-availability application on AWS! 🚀Follow for more and happy learning :)