<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: ODINKEMELU INNOCENT</title>
    <description>The latest articles on DEV Community by ODINKEMELU INNOCENT (@odinkemelu_innocent_3b2f5).</description>
    <link>https://dev.to/odinkemelu_innocent_3b2f5</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3196347%2F9c619988-2629-4f1b-a466-faaeb092ed34.png</url>
      <title>DEV Community: ODINKEMELU INNOCENT</title>
      <link>https://dev.to/odinkemelu_innocent_3b2f5</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/odinkemelu_innocent_3b2f5"/>
    <language>en</language>
    <item>
      <title>Building Security by Design: My AWS Project Showcasing VPC, NAT Gateway, and Private Networking Mastery</title>
      <dc:creator>ODINKEMELU INNOCENT</dc:creator>
      <pubDate>Sat, 08 Nov 2025 04:57:58 +0000</pubDate>
      <link>https://dev.to/odinkemelu_innocent_3b2f5/building-security-by-design-my-aws-project-showcasing-vpc-nat-gateway-and-private-networking-2la9</link>
      <guid>https://dev.to/odinkemelu_innocent_3b2f5/building-security-by-design-my-aws-project-showcasing-vpc-nat-gateway-and-private-networking-2la9</guid>
      <description>&lt;p&gt;&lt;strong&gt;INTRODUCTION&lt;/strong&gt;&lt;br&gt;
This project reflects how I combine cloud architecture principles with practical implementation to build secure, scalable environments.&lt;br&gt;
In today’s cloud-driven world, security and design are not optional — they are essential. As part of my hands-on learning and practical implementation of AWS architecture, I completed a project titled “Building a Secure Web Architecture on AWS.” The aim was to design a secure, professional-grade cloud network that demonstrates how public and private resources can coexist in the same environment, safely and efficiently.&lt;/p&gt;

&lt;p&gt;This project combines concepts of network isolation, controlled routing, and secure connectivity — principles that are fundamental to cloud security and modern infrastructure management. Every step was documented with annotated screenshots, from setup to validation.&lt;/p&gt;

&lt;p&gt;PROJECT OVERVIEW&lt;/p&gt;

&lt;p&gt;Objective:&lt;br&gt;
To build a secure network architecture on AWS consisting of a public and a private section. The web server in the public section is accessible from the internet, while the database server in the private section remains hidden from external access but can still reach the internet securely through a NAT Gateway&lt;/p&gt;

&lt;p&gt;Final Architecture&lt;/p&gt;

&lt;p&gt;Phase 1: Foundation Setup - Building Your Private Network (VPC)&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create a VPC (Your Private Cloud Network)
Go to: AWS Console -&amp;gt; VPC service -&amp;gt; "Your VPCs" -&amp;gt; "Create VPC".
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjxp2s67pyc00hfq3adgo.png" alt="Image sowing Red arrow indicating VPC and" width="800" height="420"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiva793wyrjtaen7wedve.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiva793wyrjtaen7wedve.png" alt="Image Red arrow indicate Yours VPC,Green arrow for Create VPC" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Settings:&lt;br&gt;
▪ Name tag: My-Secure-VPC&lt;br&gt;
IPv4 CIDR block: 10.0.0.0/16(This creates 65,536 private IP address for your use).&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyrf2712v13jtmj6hxzle.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyrf2712v13jtmj6hxzle.png" alt="Image Red arrow indicate Tag name, Green forIPv4 CIDR" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click Create.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flxcl719i6pzjemq4uvit.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flxcl719i6pzjemq4uvit.png" alt="Image Red arrow indicate Create VPC " width="800" height="420"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F96ad2rtwxgow56i66azr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F96ad2rtwxgow56i66azr.png" alt="Image Showing VPC Successfully created " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create Subnets (Your Designated Areas)
Go to: Subnets -&amp;gt; Create subnet.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6uuk6hxk5j2ix4nljbqw.png" alt="Image Red Arrow indicate go to Subnet" width="800" height="420"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;VPC ID: Select My-Secure-VPC.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr1la48k7x5kqkrkmtjva.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr1la48k7x5kqkrkmtjva.png" alt="Image VPC-ID, Green arrow select My-Secure-VPC" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Create Public Subnet:&lt;br&gt;
▪ Subnet name: public-subnet-1&lt;br&gt;
▪ Availability Zone: Pick the first one (e.g., us-east-1a).&lt;br&gt;
▪ IPv4 CIDR block: 10.0.1.0/24 (This gives us 256 addresses in this&lt;br&gt;
zone).&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvq8ezi3mg3yqf9f9psjg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvq8ezi3mg3yqf9f9psjg.png" alt="Image Indicating public-Subnet-1,Availability zone and IPv4 subnet" width="800" height="420"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjn0l57mgspc78z3y2u73.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjn0l57mgspc78z3y2u73.png" alt="Image indicating Create Subnet" width="800" height="365"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9dqarr1t59q8ixbzakil.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9dqarr1t59q8ixbzakil.png" alt="Image Subnet successfully created" width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Create Private Subnet:&lt;br&gt;
▪ Click "Create subnet" again.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd2ariq712oncbiktpg4r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd2ariq712oncbiktpg4r.png" alt="Image Create Subnet" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;▪ Subnet name: private-subnet-1&lt;br&gt;
▪ Availability Zone: Pick the same zone (e.g., us-east-1a).&lt;br&gt;
▪ IPv4 CIDR block: 10.0.2.0/24&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frbijeltf1gpi6dq9773a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frbijeltf1gpi6dq9773a.png" alt="Image , Subnet setting,Private-Subnet-1,Availability Zone and IPv4 VPC block" width="800" height="420"&gt;&lt;/a&gt;&lt;br&gt;
▪ Click Create subnet.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxwurmahl96i25qddp23z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxwurmahl96i25qddp23z.png" alt="Image Click Create Subnet" width="800" height="365"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0f29sweuz8ecif8nf24h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0f29sweuz8ecif8nf24h.png" alt="Image Successfuly created 1 subnet" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create an Internet Gateway (Your Front Door to the Internet)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Go to: Internet Gateways -&amp;gt; Create internet gateway.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5406j3bqciakhzma8xes.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5406j3bqciakhzma8xes.png" alt="Image Red on internet gateway, Green on Create Internet gateway" width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Name tag: My-IGW&lt;br&gt;
Click Create.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4viaryk2ggqsb95ywa1k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4viaryk2ggqsb95ywa1k.png" alt="Image showing name tag:My-IGW and Click Create" width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, ATTACH it to your VPC: Select the My-IGW gateway, click Actions -&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Attach to VPC. Select My-Secure-VPC and click Attach.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frethuwssekqk8a67nl52.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frethuwssekqk8a67nl52.png" alt="Image showing Internet gateway successfully created, red arrow clicked internet gateway" width="800" height="365"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fywmdlhgn5my35zwldmo3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fywmdlhgn5my35zwldmo3.png" alt="Image indicating Click Action" width="800" height="420"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flcy6ipyat5ogzvmyf06q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flcy6ipyat5ogzvmyf06q.png" alt="Image Select My-Secure-VPC and green arrow on Attach Internet gateway" width="800" height="365"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6i1aybyt7tbvmlhkatz4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6i1aybyt7tbvmlhkatz4.png" alt="Image Internet gateway successfully Attached" width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Phase 2: Routing &amp;amp; Security - Controlling Traffic&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create a Route Table for the Public Subnet
Go to: Route Tables -&amp;gt; Create route table.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgmlqw4pa9h3hn7s8oi4z.png" alt="Image Red arrow click Goto Route table and Green arrow on Create route table " width="800" height="365"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Name: Public-Route-Table&lt;br&gt;
VPC: Select My-Secure-VPC&lt;/p&gt;

&lt;p&gt;Click Create.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgqt2i3aq6ejr3fzitudz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgqt2i3aq6ejr3fzitudz.png" alt="Image, Name on Public route table and VPC, use for route table " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Edit Routes: Select the new table, click the Routes tab -&amp;gt; Edit routes -&amp;gt; Add&lt;br&gt;
route.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fty0giybphba4dyjt8g99.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fty0giybphba4dyjt8g99.png" alt="Image Public route table created successfully, green arrow on route, red clicked on Edit route" width="800" height="365"&gt;&lt;/a&gt;&lt;br&gt;
▪ Destination: 0.0.0.0/0 (This means "all internet traffic").&lt;br&gt;
▪ Target: Select Internet Gateway and choose My-IGW.&lt;br&gt;
▪ Click Save changes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi1aua1qtetqqd9oy7vvb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi1aua1qtetqqd9oy7vvb.png" alt="Red square for Destination, Green square on Target, Red arrow on Add routes. Then green mixed with red arrow for Click save changes" width="800" height="420"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F07i7091ztzy5in8fkinq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F07i7091ztzy5in8fkinq.png" alt="Updated route for public-Route-Table Successfully .Red arrow on subnet associations, green arrow on edit subnet association" width="800" height="365"&gt;&lt;/a&gt;&lt;br&gt;
Associate with Public Subnet: Click the Subnet associations tab -&amp;gt; Edit&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftiu23u6nqht93yzrlc05.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftiu23u6nqht93yzrlc05.png" alt="Red arrow ticked Public-Subnet-1,green arrow clicked on saved associtions" width="800" height="365"&gt;&lt;/a&gt;&lt;br&gt;
subnet associations. Check the box for public-subnet-1 and click Save&lt;br&gt;
associations.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdzbqgw4d3dlb0c1vu1he.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdzbqgw4d3dlb0c1vu1he.png" alt="Successfully updated Subnet association for Public-route-Table" width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create a Security Group for the Web Server (The Firewall)
Go to: Security Groups -&amp;gt; Create security group.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhu1zl5lc23bmadvi72zg.png" alt="Red arrow go to security groups and green arrow on create security group" width="800" height="420"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Name: Web-Server-SG&lt;br&gt;
Description: Allow HTTP and SSH&lt;br&gt;
VPC: Select My-Secure-VPC&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwqksdo16iyyhs69c3bu7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwqksdo16iyyhs69c3bu7.png" alt=" Security group-AlloW HTTP and SSH, Description-AlloW HTTP and SSH, VPC" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Inbound Rules:&lt;br&gt;
▪ Add rule: Type: HTTP, Source: Anywhere-IPv4 (0.0.0.0/0).&lt;br&gt;
▪ Add rule: Type: SSH, Source: My IP (This automatically adds your&lt;br&gt;
computer's IP for security).&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3yrtwwtb5tdits8gm62s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3yrtwwtb5tdits8gm62s.png" alt="Image SHOWING Inbound rules" width="800" height="420"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fykm5x1z1mygd3dt4hyep.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fykm5x1z1mygd3dt4hyep.png" alt="Type is annotated with red arrow and Source is annotated with green square" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click Create security group.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7731gucgi30enk8g37e5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7731gucgi30enk8g37e5.png" alt="Red arrow Clicked create security group" width="800" height="365"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp7cpkdpdvm81dijh1l8t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp7cpkdpdvm81dijh1l8t.png" alt="Security group Successfully creted" width="800" height="420"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1125zvnteuhxckpbw414.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1125zvnteuhxckpbw414.png" alt="Security group running" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Phase 3: NAT Gateway - Allowing Private Servers Outbound Internet&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Allocate an Elastic IP (A Static Public IP Address)&lt;br&gt;
Go to: Elastic IPs -&amp;gt; Allocate Elastic IP address.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmf0rvkqqpvpu21291sd1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmf0rvkqqpvpu21291sd1.png" alt="Go to Elastic IP, annotated with red arrow and Allocate Elastic IP address with green arrow" width="800" height="420"&gt;&lt;/a&gt;&lt;br&gt;
Just click Allocate. AWS will give you a fixed public IP.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftk1ke2nt2vt75hvovue1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftk1ke2nt2vt75hvovue1.png" alt="Fixed public IP by AWS" width="800" height="420"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuddjshyazxpb6s7zmcuh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuddjshyazxpb6s7zmcuh.png" alt="Red arrow clicked on Allocate" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create the NAT Gateway&lt;br&gt;
Go to: NAT Gateways -&amp;gt; Create NAT Gateway.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4urom61grxo3fvah0s30.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4urom61grxo3fvah0s30.png" alt="Go to NAT gateway with red arrow and create NAT Gateway on green " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Name: My-NAT-Gateway&lt;br&gt;
Subnet: Choose public-subnet-1&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fselr95c1sl1i9kx2h6on.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fselr95c1sl1i9kx2h6on.png" alt="Image showing the name My-NAT-Gateway and Choose public-subnet-1" width="800" height="420"&gt;&lt;/a&gt;&lt;br&gt;
Elastic IP allocation ID: Click the dropdown and select the Elastic IP you&lt;br&gt;
just created.&lt;br&gt;
Click Create NAT Gateway. Wait for the status to change&lt;br&gt;
from Pending to Available. This takes a few minutes.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw5hb1u8p98p2degb2r9s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw5hb1u8p98p2degb2r9s.png" alt="Elastic IP allocation and green arrow on create NAT gateway" width="" height=""&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyc3yfvjcbnzzvm4s5vqt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyc3yfvjcbnzzvm4s5vqt.png" alt="NAT gateway successfully created" width="800" height="420"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhtsyn6bdeu8ilxlbvnvv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhtsyn6bdeu8ilxlbvnvv.png" alt="NAT gateway running" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create a Route Table for the Private Subnet
Go to: Route Tables -&amp;gt; Create route table.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn3t1ogar6tiwggyua6f5.png" alt="Green arrow for Go to Route table and Red arrow click on create route table " width="800" height="420"&gt;
Name: Private-Route-Table
VPC: Select My-Secure-VPC&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Click Create.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm27kwgm0odfzs0c16vp9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm27kwgm0odfzs0c16vp9.png" alt="Route table settings, Name, VPC and click create" width="800" height="365"&gt;&lt;/a&gt;&lt;br&gt;
Edit Routes: Select this new private route table, click Edit routes -&amp;gt; Add&lt;br&gt;
route.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fry5rbgyjft0ks96lvlmo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fry5rbgyjft0ks96lvlmo.png" alt="Private route table was created successfully " width="800" height="365"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ogkkueerzs6dncorjfj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ogkkueerzs6dncorjfj.png" alt="Green on Routes and red on Edit Routes" width="800" height="420"&gt;&lt;/a&gt;&lt;br&gt;
▪ Destination: 0.0.0.0/0 (Send all internet-bound traffic...)&lt;br&gt;
▪ Target: Select NAT Gateway and choose My-NAT-Gateway (...to our&lt;br&gt;
NAT Gateway).&lt;/p&gt;

&lt;p&gt;▪ Click Save changes.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr8ugt8ev1rvx7lngh32n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr8ugt8ev1rvx7lngh32n.png" alt="Destination on red square , Target on green square, Add rules clicked by red arrow and blue arrow on Save changes" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Associate with Private Subnet: Click Subnet associations -&amp;gt; Edit subnet&lt;br&gt;
associations. Check the box for private-subnet-1 and click Save&lt;br&gt;
associations.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh1az330tzpwxpsvt6sia.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh1az330tzpwxpsvt6sia.png" alt="Associations with Private Subnet, green arrow on Subnet association red arrow on Edit Subnet association " width="800" height="365"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz5uoxrtcri2kt31dwdrd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz5uoxrtcri2kt31dwdrd.png" alt="Image indicating red arow Checked the box of Private -Subnet-1 running, green arrow on save association " width="800" height="420"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4eeg0t9hxingx1q9g9a0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4eeg0t9hxingx1q9g9a0.png" alt="Successfully Updated private Subnet association for Private-Route-Table" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Phase 4: Resource Deployment - Launching Your Servers&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Launch the Web Server (in the Public Subnet)
Go to: EC2 -&amp;gt; Launch Instances.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fte5d35tiwnv09f8irtbo.png" alt="AWS Console-Go to EC2,indicated by red arrow" width="800" height="420"&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa0jzkjdi1u080d18qiab.png" alt="Click launch Instance with green arrow  " width="800" height="420"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Name: Web-Server&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjfe46hok6nr4ujpiimkg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjfe46hok6nr4ujpiimkg.png" alt="Instance Name, Web-Server indicated by green arrow " width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;AMI: Amazon linux&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F46uulrwfwklrypbssof4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F46uulrwfwklrypbssof4.png" alt="Amazon Linux, indicted by red arrow" width="800" height="365"&gt;&lt;/a&gt;&lt;br&gt;
Instance type: t2.micro (Free Tier)&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F69x6r5eb65mldxhcrenb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F69x6r5eb65mldxhcrenb.png" alt="Red arrow indicating t2.micro selected, with green arrow showing it is on a free tier eligible" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Key pair: Create a new key pair or choose an existing one. DOWNLOAD&lt;br&gt;
THE .pem KEY IF NEW&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1xga0b7x2d410c2a78o5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1xga0b7x2d410c2a78o5.png" alt="The Blue arrow indicating key-pair.pem already existed/created" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Network Settings:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcm4xktr7ewvl2gu9gfp3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcm4xktr7ewvl2gu9gfp3.png" alt="Image description on the Network Settings" width="800" height="420"&gt;&lt;/a&gt;&lt;br&gt;
▪ VPC: My-Secure-VPC&lt;br&gt;
▪ Subnet: public-subnet-1&lt;br&gt;
▪ Auto-assign Public IP: Enable&lt;br&gt;
▪ Firewall (Security Groups): Select existing security group WebServer-SG&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0v9234hjzb8c3ed0iwtn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0v9234hjzb8c3ed0iwtn.png" alt="VPC, Subnet, Auto-assign Public IP, Select Security Group" width="800" height="420"&gt;&lt;/a&gt;&lt;br&gt;
Advanced details -&amp;gt; User data: Paste this script to install a web server on&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F05ombdrogcuzxs7uewd9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F05ombdrogcuzxs7uewd9.png" alt="Image on Advance detail page clicked by green arrow" width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;boot:&lt;br&gt;
bash&lt;/p&gt;

&lt;h1&gt;
  
  
  !/bin/bash
&lt;/h1&gt;

&lt;p&gt;sudo dnf update -y&lt;br&gt;
sudo dnf install -y httpd&lt;br&gt;
sudo systemctl start httpd&lt;br&gt;
sudo systemctl enable httpd&lt;br&gt;
echo "&lt;/p&gt;
&lt;h1&gt;Hello World from my $(hostname -f)&lt;/h1&gt;" &amp;gt; /var/www/html/index.html

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi2k779ufzxv0cnyozmqt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi2k779ufzxv0cnyozmqt.png" alt="Encoded commands and Bashed directly on Advance details indicated with green square" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click Launch Instance.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm5mbl35xchbmz2d176w1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm5mbl35xchbmz2d176w1.png" alt="Command encoded and indicated by blue square and red arrow clicked on Lunch instance" width="800" height="365"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdc2khjhciysvxr7ga1ce.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdc2khjhciysvxr7ga1ce.png" alt="Image showing EC2 Instance lunched" width="800" height="365"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F91a6d224t47s3k1qdx2l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F91a6d224t47s3k1qdx2l.png" alt="Red arrow checked the box of EC2-instance named Web-Server running " width="800" height="420"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fefriuuvols1300x39bb4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fefriuuvols1300x39bb4.png" alt="EC2-Instance Web-Server Summary details" width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Launch the Database Server (in the Private Subnet)
Go to: EC2 -&amp;gt; Launch Instances
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkwd2v08l5cdwrhx689l8.png" alt="Image showing an EC2 instance launch(in the Private Subnet" width="800" height="420"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Name: DB-Server&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fexzytssqk3uxcfjdtube.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fexzytssqk3uxcfjdtube.png" alt="DB-Server indicated as Instance name by red arrow" width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;AMI: Amazon Linux 2023 AMI&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwti1iytflffgd7tl7en9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwti1iytflffgd7tl7en9.png" alt="AMI: Amazon Linux selected and indicated by red arrow" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Instance type: t2.micro (Free Tier)&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feep5yh47pe57ds3vcnt4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feep5yh47pe57ds3vcnt4.png" alt="Instance type t2.micro selected and indicated by red arrow.The green arrow shows that it is free tier eligible" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Key pair: Choose the same key pair you used for the Web Server.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6utfcs6c2k7qjnk1o58m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6utfcs6c2k7qjnk1o58m.png" alt="Red arrow indicating Key-pair. pem  already existed or created" width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Network Settings:&lt;br&gt;
▪ VPC: My-Secure-VPC&lt;br&gt;
▪ Subnet: private-subnet-1&lt;br&gt;
▪ Auto-assign Public IP: Disable (This is key! It gets no public IP.)&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff1z0d3v76807nbw5bh42.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff1z0d3v76807nbw5bh42.png" alt="Network Settings Image, VPC,Private-Sunet-1,Auto assign Public IP" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click Launch Instance.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdwr5j8pfnv6pfim7lw05.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdwr5j8pfnv6pfim7lw05.png" alt="The Clicked Launch Instance with red arrow" width="800" height="365"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcmcxzwl24cnlm0famx7k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcmcxzwl24cnlm0famx7k.png" alt="DB-Server EC2 instance Successfully created" width="800" height="420"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzkkrs1mtmltsl8bwykzu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzkkrs1mtmltsl8bwykzu.png" alt="DB-Server EC2-instance running , then checked box by green arrow" width="800" height="365"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiejo9jbsd5cl5bcqwvio.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiejo9jbsd5cl5bcqwvio.png" alt="DB-Server EC2-instance Summary details" width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Web-Server EC2-Instance Running and DB-Server EC2-Instance Running &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2zu1rh13jr8et0njpf4n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2zu1rh13jr8et0njpf4n.png" alt="Web-Server EC2-instance running and DB-Server EC2-Instance running" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Phase 5: Validation - Testing Your Setup&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Test Web Access&lt;br&gt;
In the EC2 console, find your Web-Server instance.&lt;br&gt;
Copy its Public IPv4 address.&lt;br&gt;
Open a browser and paste the IP address. You should see "Hello World&lt;br&gt;
from my ...".&lt;br&gt;
OR, use the terminal: curl http://&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjv2ueaskjxogpailwn6z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjv2ueaskjxogpailwn6z.png" alt="The Public -IPv4 address on website-showing--&amp;gt; Hello World from my ip-10-1-232.ec2.internal" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Test Private Instance Internet Access (Via NAT)&lt;br&gt;
SSH into your Web Server first (it's public):&lt;br&gt;
bash&lt;br&gt;
ssh -i "your-key.pem" ec2-user@&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fratnqj14895o8hrjk9uy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fratnqj14895o8hrjk9uy.png" alt="Image showing commands on Gitbash window terminal, green arrow for " width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;From inside your Web Server, try to SSH into the private Database Server:&lt;br&gt;
▪ In the EC2 console, find your DB-Server and copy its Private IPv4&lt;br&gt;
address (e.g., 10.0.2.50).&lt;/p&gt;

&lt;p&gt;▪ Run:&lt;br&gt;
bash&lt;br&gt;
ssh -i "your-key.pem" ec2-user@&lt;br&gt;
Once logged into the private DB-Server, test if it can reach the internet:&lt;br&gt;
bash&lt;br&gt;
curl &lt;a href="https://checkip.amazonaws.com" rel="noopener noreferrer"&gt;https://checkip.amazonaws.com&lt;/a&gt;&lt;br&gt;
This should RETURN THE ELASTIC IP OF YOUR NAT GATEWAY. This proves&lt;br&gt;
your private server is using the NAT Gateway to access the internet!&lt;/p&gt;

&lt;p&gt;Conclusion :&lt;br&gt;
You have successfully built a secure, professional-grade network&lt;br&gt;
architecture on AWS. Your web server is publicly accessible, but your database is securely&lt;br&gt;
hidden in a private network, yet can still download updates.&lt;/p&gt;

</description>
      <category>cloudsecurity</category>
      <category>cloudarchitecture</category>
      <category>vpc</category>
      <category>nategateway</category>
    </item>
    <item>
      <title>Deploying My First NGINX Web Server on AWS EC2: A Beginner-Friendly Walkthrough</title>
      <dc:creator>ODINKEMELU INNOCENT</dc:creator>
      <pubDate>Fri, 03 Oct 2025 07:13:11 +0000</pubDate>
      <link>https://dev.to/odinkemelu_innocent_3b2f5/deploying-my-first-nginx-web-server-on-aws-ec2-a-beginner-friendly-walkthrough-2dg0</link>
      <guid>https://dev.to/odinkemelu_innocent_3b2f5/deploying-my-first-nginx-web-server-on-aws-ec2-a-beginner-friendly-walkthrough-2dg0</guid>
      <description>&lt;p&gt;&lt;strong&gt;INTRODUCTION&lt;/strong&gt;&lt;br&gt;
Cloud computing is about using powerful computers hosted online instead of relying on your personal device. Think of it like renting a house: you can use it when you need it, without worrying about building or maintaining it.&lt;/p&gt;

&lt;p&gt;Amazon Web Services (AWS) is one of the most popular platforms for cloud computing. One of its key services is EC2 (Elastic Compute Cloud), which lets you rent virtual computers called instances. These instances allow you to run applications, websites, or other services directly from the cloud.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Launching an EC2 Instance&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Here are the steps I followed to launch my virtual server:&lt;/p&gt;

&lt;p&gt;1.Logged into the AWS Management Console.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8vcjy9gynt0av23eiv4d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8vcjy9gynt0av23eiv4d.png" alt="Amazon Webserver online page, red arrow showing AWS loggo, while green arrow showing signing up to console" width="800" height="365"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1t4sgbay31xtrfv6zalv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1t4sgbay31xtrfv6zalv.png" alt="AWS Console page, logging in with Account ID,IAM Username and Password" width="800" height="365"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftjurm0duasx1m1eeg4wg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftjurm0duasx1m1eeg4wg.png" alt="AWS Console Home, click search on EC2" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2.Navigated to Services &amp;gt; EC2 &amp;gt; Launch Instance.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp3givm1xxno8d55r5x28.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp3givm1xxno8d55r5x28.png" alt="AWS Console EC2 navigated by Clicking Lunch Instance button" width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3.Named the instance: my-nginx33.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv30ul8d8ikt2us9xar7f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv30ul8d8ikt2us9xar7f.png" alt="The EC2 Instance Named,my-nginx33" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4.Selected Ubuntu Server 22.04 LTS as the operating system.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6hygxjvpp0bhg6umta74.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6hygxjvpp0bhg6umta74.png" alt="Red arrow clicked on the button selecting Ubuntu as OS,Green arrow showing AMI on Ubuntu Server 24.4 LTS, Blue arrow showing the Free tier eligible" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.Ubuntu is a version of Linux widely used for cloud servers.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;5.Chose instance type: t2.micro (eligible for the AWS Free   Tier).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft2p87lb1d9n4u6ukjys1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft2p87lb1d9n4u6ukjys1.png" alt="Red arrow showing the selected Instance type which is t2.micro and Blue arrow indicating it is on free tier eligible" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;6.Created a new key pair called " my-2P-key " and i downloaded the .pem file.  Then after downloading the  ".pem " file ,  it will appear/ becomes  " my-2P-key.pem "&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffrt88d9qovayrfx8n313.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffrt88d9qovayrfx8n313.png" alt="The red arrow showing the key pair created" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This file acts as a secure key for connecting to the server.&lt;/p&gt;

&lt;p&gt;7.Configured security group rules to allow:&lt;/p&gt;

&lt;p&gt;SSH on port 22 for remote access.&lt;/p&gt;

&lt;p&gt;HTTP on port 80 for web access.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffkbv7ysuqgvmu9xcywi1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffkbv7ysuqgvmu9xcywi1.png" alt="Network Settings, Network-vpc indicated by blue arrow,Default Subnet indicated by green arrow and Auto-assign Public IP indicated by red arrow" width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjudaopdcz4w4j8ie7gsz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjudaopdcz4w4j8ie7gsz.png" alt="Firewall(Security group), red arrow indicating default Create Security Group, blue arrow indicating Allow SSH traffic from, green arrow indicating Allow HTPP from the internet" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3l0tb2x9q3ymd0u8sp3j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3l0tb2x9q3ymd0u8sp3j.png" alt="Image Showing the Default Configure Storage" width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;8.Clicked Launch Instance.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyu63js65v1lsffuszkm9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyu63js65v1lsffuszkm9.png" alt="The Add new Volume indicated by red arrow was on default, Then Advanced details was also on default indicated by blue arrow" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh9icy4hk33f6axn9v94p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh9icy4hk33f6axn9v94p.png" alt="Click the Lunch Instance button to lunch, indicated by the red arrow" width="800" height="365"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Analogy&lt;/strong&gt;: The EC2 instance is like renting a small apartment in the cloud, and the security group is like deciding which doors and windows are unlocked for visitors.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6hive4eki4lqd2o5i7qx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6hive4eki4lqd2o5i7qx.png" alt="Launching the Instance and the blue line showing the lunching Installation loading" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgystzig7cucermu01cxp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgystzig7cucermu01cxp.png" alt="I successfully initiated launch instance (i-09b4851scf7fb49c2)" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3.  Connecting to EC2 Using GitBash&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Once my instance was running, I connected to it from my computer:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fncvjb0vo2fh4mff5nuin.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fncvjb0vo2fh4mff5nuin.png" alt="EC2 Instance running, red arrow indicting EC2 name, blue arrow indicating EC2 Instanc ID, green arrow indicting EC2 Public IPv4 address" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;1.Retrieved the public IPv4 address from the AWS console.&lt;br&gt;
IPv address-18.207.154.160&lt;/p&gt;

&lt;p&gt;2.Opened GitBash (Command Prompt/PowerShell also works).&lt;br&gt;
Type : cd downloads&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc6wltk52tp568losoggi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc6wltk52tp568losoggi.png" alt="Type cd downloads indicated by blue arrow" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Type : chmod 400 my-2P-key.pem&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flfcu0757r010k5qhs89k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flfcu0757r010k5qhs89k.png" alt="Type chmod 400 my-2P-key.pem indicated by green arrow" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3.Entered the SSH command:&lt;/p&gt;

&lt;p&gt;ssh -i "C:\Users\Downloads\my-2P-key.pem" ubuntu@&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx6u81bsxkvi747afih57.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx6u81bsxkvi747afih57.png" alt="ssh -i my-2P-key.pem ubuntu@18.207.254.160 indicated by red arrow" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
ssh -i my-2P-key.pem" &lt;a href="mailto:ubuntu@18.207.154.160"&gt;ubuntu@18.207.154.160&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4.Accepted the connection when prompted.&lt;/p&gt;

&lt;p&gt;When the connection is been prompted, Type : yes&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SSH&lt;/strong&gt; is like a secure remote key that unlocks your apartment in the cloud and lets you control it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4.  Updating Ubuntu Server&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Once inside the server, I updated its package list to ensure the latest software versions and security patches were available:&lt;/p&gt;

&lt;p&gt;sudo apt update&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0etuzwk4wr533noc2vn3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0etuzwk4wr533noc2vn3.png" alt="Sudo apt update indicated by the red arrow while updating the package" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is like refreshing the app store on your phone before downloading or upgrading apps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5.  Installing and Configuring NGINX Web Server&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;With the server ready, I installed and configured NGINX:&lt;/p&gt;

&lt;p&gt;Install NGINX:&lt;br&gt;
sudo apt install nginx -y&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fllsewije8hoyqt1zk6dg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fllsewije8hoyqt1zk6dg.png" alt="Installing by typing Sudo apt install nginx -y" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Start the NGINX service:&lt;/strong&gt;&lt;br&gt;
sudo systemctl start nginx&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpmk5p8898n9sp1hi9htq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpmk5p8898n9sp1hi9htq.png" alt="Starting by typing sudo system start nginx" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Check if it is running:&lt;br&gt;
sudo systemctl status nginx&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6kk4y3mgfm9sliwymrdl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6kk4y3mgfm9sliwymrdl.png" alt="Status is by typing sudo systemctl status nginx" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Enable NGINX to start automatically on reboot:&lt;br&gt;
sudo systemctl enable nginx&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmjdg0stu8yx5s41gk9v2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmjdg0stu8yx5s41gk9v2.png" alt="Enabling type sudo systemctl enable nginx" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;NGINX is now running and able to serve webpages from the server.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6.  Testing and Customizing the Web Page&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To test the installation, I opened my browser and typed:&lt;/p&gt;

&lt;p&gt;http://&lt;/p&gt;

&lt;p&gt;&lt;a href="http://18.207.154.160" rel="noopener noreferrer"&gt;http://18.207.154.160&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flwzx0al14umt9wswjmhv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flwzx0al14umt9wswjmhv.png" alt="The tested customized web, using the IPv4 Address 18.207.154.160 on the open browser was indicted by the red arrow on a Google page searched" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fszj6e1plbllnquftbfzd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fszj6e1plbllnquftbfzd.png" alt="Welcome to NGINX !  was confirmed on the web browser because it worked showing it as default" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This showed the default NGINX welcome page, confirming the web server was active.&lt;/p&gt;

&lt;p&gt;Next, I customized the page:&lt;/p&gt;

&lt;p&gt;1.Opened the default web file:&lt;br&gt;
sudo nano /var/www/html/index.nginx-debian.html&lt;/p&gt;

&lt;p&gt;2.Deleted the existing content using Ctrl + K.&lt;/p&gt;

&lt;p&gt;3.Added my own message:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F551p8qrivkabl5qk6ut4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F551p8qrivkabl5qk6ut4.png" alt="The Pharmatech logo is my NGINX web Server on AWS" width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4.Saved and exited by pressing Ctrl + X, then Y, then Enter.&lt;/p&gt;

&lt;p&gt;Refreshing the browser displayed my new page. Editing this file was like changing the welcome sign on the front of a Pharmacy premise to make it personal.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Full Quick Command Summary&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Below are the main commands I used in this project:&lt;/p&gt;

&lt;p&gt;sudo apt update&lt;br&gt;
sudo apt install nginx -y&lt;br&gt;
sudo systemctl start nginx&lt;br&gt;
sudo systemctl enable nginx&lt;br&gt;
sudo nano /var/www/html/index.nginx-debian.html&lt;/p&gt;

&lt;p&gt;GitBash SSH example:&lt;br&gt;
ssh -i "C:\Users\John\Downloads\nginx-key.pem" &lt;a href="mailto:ubuntu@18.207.154.160"&gt;ubuntu@18.207.154.160&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Conclusion&lt;/p&gt;

&lt;p&gt;This project gave me hands-on experience with launching and managing a cloud server. I learned how to:&lt;/p&gt;

&lt;p&gt;Launch an EC2 instance on AWS.&lt;/p&gt;

&lt;p&gt;Connect to it securely using SSH.&lt;/p&gt;

&lt;p&gt;Install and configure NGINX on Ubuntu.&lt;/p&gt;

&lt;p&gt;Edit and customize a web page.&lt;/p&gt;

&lt;p&gt;It was more than just a technical exercise — it gave me a deeper understanding of how cloud infrastructure, Linux commands, and web servers work together in real-world scenarios.&lt;/p&gt;

&lt;p&gt;Completing this project boosted my confidence in working with AWS, Linux, and NGINX, and it opened the door for me to build more advanced cloud-based projects in the future.&lt;/p&gt;

</description>
      <category>cloudcomputing</category>
      <category>awsec2</category>
      <category>nginx</category>
      <category>devopsjourney</category>
    </item>
    <item>
      <title>UNDERSTANDING SERVERS AND CLOUD COMPUTING.</title>
      <dc:creator>ODINKEMELU INNOCENT</dc:creator>
      <pubDate>Sun, 01 Jun 2025 23:33:10 +0000</pubDate>
      <link>https://dev.to/odinkemelu_innocent_3b2f5/assignment-understanding-servers-and-cloud-computing-574m</link>
      <guid>https://dev.to/odinkemelu_innocent_3b2f5/assignment-understanding-servers-and-cloud-computing-574m</guid>
      <description>&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;         Difference between hardware and software.

      Hardware is  part of  a server characteristics, that is              a physical machines with powerful components. Such as                       
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;*High-performance capabilities : Servers often have powerful processors, ample RAM, and Large storage Capacities.&lt;br&gt;&lt;br&gt;
*Reliability and redundancy : Server may include redundant components like power supplies, hard drives, and cooling system to minimize downtime.&lt;br&gt;
*Scalability : Servers can be easily upgraded or expanded to meet growing demands&lt;br&gt;
         Software is a part of Server characteristics which are applications that perform specific tasks like serving web pages over the networking system.&lt;br&gt;
*Operating system : Servers run specialized operating system, such as windows server, Linux, or mac OS server.&lt;br&gt;
*Service-Oriented : Servers provide specific services, like web hosting, file sharing, or database management.&lt;br&gt;
 Name and give example of 3 types of server ?&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;      Here are some common types below
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;*Web Server :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hosts websites, web applications, and serves web pages to clients. Examples are Apache, Nginx, IIS.&lt;/li&gt;
&lt;li&gt;File Server :
-Stores and manages&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is how cloud computing resources are provisioned, managed, and deployed. such as follows :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cloud services are provided over the internet, which is /will be available to anyone /everyone that requested. Examples are Amazon web services(AWS),Microsoft AZure ,Google cloud platform.
*Public Cloud :&lt;/li&gt;
&lt;li&gt;Cloud infrastructure is provisioned and managed within a single organization.&lt;/li&gt;
&lt;li&gt;It can also be hosted on-premise or off-premises.&lt;/li&gt;
&lt;li&gt;Hybrid Cloud &lt;/li&gt;
&lt;li&gt;Combines public and private cloud models, allowing for data and applications to be shared between them.
-It can also enables Flexibility, Scalability, and cost-effectiveness.
*Community Cloud
&lt;/li&gt;
&lt;li&gt;Cloud Infrastructure is shared among several organizations with similar interest or goals.&lt;/li&gt;
&lt;li&gt;It can be also be managed internally or by a third party provider.
          Compare Iaas, Paas, Saas with examples.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;1) Iaas, which is Infrastructure as a service which provides&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Provide Virtualized computing resources, such as servers, storage and networking.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In this case the Users manage the infrastructure, while the Provider manages the underling hardware such as : Amazon web services (AWS),Microsoft AZure, Google cloud platform. The User manage App and OS.&lt;br&gt;
2) Paas,  Which is Platform as a service.&lt;br&gt;
-Provides a Complete platform for developing, running, and managing applications you don't need to be maintaining or building an infrastructure Example are Heroku, Google App Engine, Microsoft AZure Application service. The User manage code.&lt;br&gt;
3) Saas, which is Software as a Service. It is a provides and also manage software application that are accessible over the internet, eliminating the need for local installation and maintenance.&lt;br&gt;
-Users access the application through a web browser or mobile app. Example Salesforce, microsoft office 365,Google workspace. The User need to use it.&lt;/p&gt;

&lt;p&gt;Comparison of Iaas, Paas, Saas, each of them can offer different levels of control , management, and flexibility that best fit the need of an organization.&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;            TRUE OR FALSE 
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;1) False&lt;br&gt;
2) False&lt;br&gt;
3) False&lt;br&gt;
4) True&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;            SCENERO - BASE
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You are starting a business. Which model do you use and why ? Choose AWS services for storage, backend, and database.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Model to use is Hybrid Cloud. Then why is : Security of internal data information, cost effectiveness, Scalability, Elasticity, High-availability and Agility.&lt;br&gt;
I am choosing Iaas , User to manage storage through Amazon web services (AWS-S3) Using it was object storage for files, images, and videos.&lt;br&gt;
AWS Backend :  AWS IAM - Which allows for security, Identity and access management services for controlling access to AWS resources.&lt;br&gt;
AWS data base : &lt;br&gt;
-cost effectiveness - Amazon Aurora database &lt;br&gt;
-Scalability - Amazon DynamoDB database&lt;br&gt;
-Elasticity - Amazon Elastic ache database&lt;br&gt;
-High-availability - Amazon Aurora with plus Amazon Neptune.&lt;br&gt;
-Agility - Amazon Redshift. &lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
