<?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: James Ackah-Blay</title>
    <description>The latest articles on DEV Community by James Ackah-Blay (@james_ackahblay_54cae846).</description>
    <link>https://dev.to/james_ackahblay_54cae846</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%2F2450301%2F6f563845-81bc-4370-92db-327b92b09bbb.jpg</url>
      <title>DEV Community: James Ackah-Blay</title>
      <link>https://dev.to/james_ackahblay_54cae846</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/james_ackahblay_54cae846"/>
    <language>en</language>
    <item>
      <title>COMPREHENSIVE GUIDE TO DEPLOYING JAVA WEB APPLICATIONS ON TOMCAT USING MAVEN AND AWS INFRASTRUCTURE</title>
      <dc:creator>James Ackah-Blay</dc:creator>
      <pubDate>Mon, 18 Nov 2024 23:42:20 +0000</pubDate>
      <link>https://dev.to/james_ackahblay_54cae846/comprehensive-guide-to-deploying-java-web-applications-on-tomcat-using-maven-and-aws-infrastructure-4ob9</link>
      <guid>https://dev.to/james_ackahblay_54cae846/comprehensive-guide-to-deploying-java-web-applications-on-tomcat-using-maven-and-aws-infrastructure-4ob9</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;COMPREHENSIVE GUIDE TO DEPLOYING JAVA WEB APPLICATIONS ON TOMCAT USING MAVEN AND AWS INFRASTRUCTURE&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;PROJECT OUTLINE&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Part 1: Setting Up the Cloud Environment&lt;br&gt;
Part 2: Creating AWS Resources Using AWS CLI&lt;br&gt;
Part 3: Creating an EC2 Instance&lt;br&gt;
Part 4: Building the Java Web App&lt;br&gt;
Part 5: Setting Up the Tomcat Server&lt;br&gt;
Part 6: Tomcat Configuration&lt;br&gt;
Part 7: Deploying from Maven to Tomcat Using Plugin&lt;br&gt;
Part 8: Deploying from Maven to Tomcat Using SCP Command&lt;/p&gt;

&lt;p&gt; &lt;br&gt;
&lt;strong&gt;PART 1: SETTING UP THE CLOUD ENVIRONMENT&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Sign in to AWS Management Console&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to the AWS website and log in to your account.&lt;/li&gt;
&lt;li&gt;Set the region to **US East (N. Virginia) or your preferred 
region.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Open the CloudShell in the AWS console to run AWS CLI commands&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;PART 2: CREATING THE RESOURCES USING AWS CLI&lt;/strong&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   1. Create a VPC (Virtual Private Cloud)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Open the CloudShell in the AWS Console to run AWS CLI 
  commands.&lt;/li&gt;
&lt;li&gt;Run the command to create a VPC:
 aws ec2 create-vpc --cidr-block 10.1.0.0/16 --region us- 
 east-1
&lt;strong&gt;Note: Save the VPC ID shown in the output.&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&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%2Fyxizooydmweolz9zl8sa.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%2Fyxizooydmweolz9zl8sa.png" alt="Image description" width="800" height="386"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Create a Subnet&lt;/strong&gt;&lt;br&gt;
      - Run the command to create a subnet within the VPC:&lt;br&gt;
        aws ec2 create-subnet --vpc-id  --cidr-block &lt;br&gt;
        10.1.1.0/24 --region us-east-1&lt;br&gt;
    ** Note: Save the Subnet ID.**&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%2Fx2ktish3v8wni1rkrla6.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%2Fx2ktish3v8wni1rkrla6.png" alt="Image description" width="800" height="342"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Create an Internet Gateway&lt;/strong&gt;&lt;br&gt;
     Run the command to create an Internet Gateway:&lt;br&gt;
     aws ec2 create-internet-gateway --region us-east-1&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; **Note: Save the Internet Gateway ID.**
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fk3hr9n1np739jslwyl58.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%2Fk3hr9n1np739jslwyl58.png" alt="Image description" width="800" height="225"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Attach the Internet Gateway to the VPC&lt;/strong&gt;&lt;br&gt;
  aws ec2 attach-internet-gateway --vpc-id  -- &lt;br&gt;
  internet-gateway-id  --region us- &lt;br&gt;
  east-1&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Create a Route Table&lt;/strong&gt;&lt;br&gt;
aws ec2 create-route-table --vpc-id  -- &lt;br&gt;
    region us-east-1&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;**Note: Save the Route Table ID.**
&lt;/code&gt;&lt;/pre&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%2Fsu6gtzb9d8gjy1osvnow.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%2Fsu6gtzb9d8gjy1osvnow.png" alt="Image description" width="800" height="339"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Create a Route for Internet Access&lt;/strong&gt;
 aws ec2 create-route --route-table-id  
 --destination-cidr-block 0.0.0.0/0 --gateway-id  --region us-east-1&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%2Fx87flyuy1e0qj49uo6q8.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%2Fx87flyuy1e0qj49uo6q8.png" alt="Image description" width="800" height="88"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Associate the Subnet with the Route Table&lt;/strong&gt;
  aws ec2 associate-route-table --subnet-id  
  --route-table-id  --region us-east-1&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%2Fgkufcame4do310y0nh8i.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%2Fgkufcame4do310y0nh8i.png" alt="Image description" width="800" height="110"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PART 3: CREATING AN EC2 INSTANCE&lt;/strong&gt;&lt;br&gt;
          1. Create a Security Group&lt;br&gt;
             Run the command to create a security group:&lt;br&gt;
             aws ec2 create-security-group --group-name 
             Security Group Name&amp;gt; --description "Description of &lt;br&gt;
             SG" --vpc-id  --region us-east-1&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;         **Note: Save the Security Group ID**.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Ffl2um4pf9w8bdb626jr7.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%2Ffl2um4pf9w8bdb626jr7.png" alt="Image description" width="800" height="71"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    2. **Add Security Group Rules**

         Allow SSH (port 22) for connecting to the server:
         aws ec2 authorize-security-group-ingress --group-id 
         &amp;lt;Your Security Group id&amp;gt; --protocol tcp --port 22 -- 
         cidr 0.0.0.0/0 --region us-east-1
       **_NB: it is advisable to allow ssh from my ip in the 
             working environment for security best practices. _**
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2F9k8s1em30bi4lrqfgg7e.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%2F9k8s1em30bi4lrqfgg7e.png" alt="Image description" width="800" height="198"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Create a Key Pair&lt;/strong&gt;&lt;br&gt;
 aws ec2 create-key-pair --key-name  -- &lt;br&gt;
 query 'KeyMaterial' --region us-east-1&lt;/p&gt;

&lt;p&gt;Copy the output into a text editor and save it with your key &lt;br&gt;
pair name.&lt;/p&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%2Fq6yhcraktv47mxlc30ah.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%2Fq6yhcraktv47mxlc30ah.png" alt="Image description" width="800" height="118"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Create an EC2 Instance&lt;/strong&gt;&lt;br&gt;
 aws ec2 run-instances --image-id  --count 1 -- &lt;br&gt;
 instance-type t2.micro --key-name  -- &lt;br&gt;
 security-group-ids  --subnet-id &lt;br&gt;
  --region us-east-1&lt;br&gt;
&lt;strong&gt;Note: For EC2 instance image id check this link &lt;a href="https://us-" rel="noopener noreferrer"&gt;https://us-&lt;/a&gt; &lt;br&gt;
  east-1.console.aws.amazon.com/ec2/home?region=us-east- &lt;br&gt;
  1#LaunchInstances:&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note: Save the Instance ID.&lt;/strong&gt;&lt;/p&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%2Fazw25pxddnik25u3596w.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%2Fazw25pxddnik25u3596w.png" alt="Image description" width="800" height="558"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Allocate and Associate an Elastic IP&lt;/strong&gt;
 aws ec2 allocate-address --domain vpc --region us-east-1&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%2Ftwvo561kicjk7jc61yui.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%2Ftwvo561kicjk7jc61yui.png" alt="Image description" width="800" height="213"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Allocate an Elastic IP to the instance.&lt;/strong&gt; 
 aws ec2 associate-address --instance-id i-07f62fa3f94ddb1bd-
 -allocation-id  --region us-east-1&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%2Fyqmevfism0o7gnn08121.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%2Fyqmevfism0o7gnn08121.png" alt="Image description" width="800" height="85"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PART 3: BUILDING THE JAVA WEB APP&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Connect to the Maven EC2 Instance Server&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use EC2 instance connect or SSH connect:
ssh -i MyCLIKP.pem ec2-user@&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Maven Installation Steps on Ubuntu:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Change the Hostname of The EC2 instance
sudo hostnamectl set-hostname maven
sudo su - ubuntu&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Update and Upgrade the Ubuntu EC2&lt;br&gt;
sudo apt update -y&lt;br&gt;
sudo apt upgrade -y&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Installation of Java and Git&lt;br&gt;
cd /opt&lt;br&gt;
sudo apt install default-jdk git -y&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Verify the Installation of Java and Git&lt;br&gt;
Java -version&lt;br&gt;
git --version&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Installing and Extracting Apache Maven&lt;br&gt;
sudo wget &lt;a href="https://dlcdn.apache.org/maven/maven-" rel="noopener noreferrer"&gt;https://dlcdn.apache.org/maven/maven-&lt;/a&gt; &lt;br&gt;
3/3.9.6/binaries/apache-maven-3.9.6-bin.tar.gz&lt;br&gt;
sudo tar -xvzf apache-maven-3.9.6-bin.tar.gz&lt;/p&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%2F5s89tjr1yh0n4zw6jag2.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%2F5s89tjr1yh0n4zw6jag2.png" alt="Image description" width="800" height="178"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Remove the Zip File and Rename the Extracted File
 sudo rm -rf apache-maven-3.9.6-bin.tar.gz
 sudo mv apache-maven-3.9.6/ maven&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%2F8s60fm8c4vp7uqk350e4.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%2F8s60fm8c4vp7uqk350e4.png" alt="Image description" width="800" height="211"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Setting Up Environmental Variables for Maven
 sudo nano ~/.bashrc
copy the path below and paste it at the end of the script.
 export M2_HOME=/opt/maven
 export PATH=$PATH:$M2_HOME/bin&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%2F0v9fkzddzvwm9e6pwj9p.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%2F0v9fkzddzvwm9e6pwj9p.png" alt="Image description" width="800" height="348"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Restart the .bashrc file&lt;br&gt;
 source ~/.bashrc&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Check the Installation of Maven&lt;br&gt;
   mvn -version&lt;br&gt;
&lt;strong&gt;NB: cd from the /opt directory after the Installation&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Make a directory named webapp-project and cd into it&lt;br&gt;
  mkdir webapp-project&lt;br&gt;
  cd webapp-project&lt;br&gt;
&lt;strong&gt;NB: the cloning must be done in the webapp-project directory &lt;br&gt;
   you created&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Git clone the project repo&lt;br&gt;
  git clone &lt;a href="https://github.com/JOMACS-IT/web-app.git" rel="noopener noreferrer"&gt;https://github.com/JOMACS-IT/web-app.git&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After cloning, you must change the directory (cd) into the &lt;br&gt;
web-app directory before you start executing any maven (mvn) &lt;br&gt;
commands or goal&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;You can start the following maven goals on your project:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;mvn clean&lt;/li&gt;
&lt;li&gt;mvn validate&lt;/li&gt;
&lt;li&gt;mvn compile&lt;/li&gt;
&lt;li&gt;mvn test&lt;/li&gt;
&lt;li&gt;mvn package&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;PART 4: SETTING UP THE TOMCAT SERVER&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Repeat PART 1 and 2 to set up the Tomcat Server&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Installing Tomcat on the Tomcat Ubuntu Server&lt;br&gt;
      sudo apt install update&lt;br&gt;
      sudo apt install upgrade&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Installing and Extracting Apache Tomcat&lt;br&gt;
      sudo wget &lt;a href="https://dlcdn.apache.org/tomcat/tomcat-" rel="noopener noreferrer"&gt;https://dlcdn.apache.org/tomcat/tomcat-&lt;/a&gt; &lt;br&gt;
      9/v9.0.97/bin/apache-tomcat-9.0.97.tar.gz&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  sudo tar -xzvf apache-tomcat-9.0.97.tar.gz
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Remove the Zip File and Rename the Extracted File&lt;br&gt;
      sudo rm -rf apache-tomcat-9.0.97.tar.gz&lt;br&gt;
      sudo mv apache-tomcat-9.0.97/ /opt/tomcat9&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Giving Executable Permission to Tomcat&lt;br&gt;
       sudo chmod 777 -R /opt/tomcat9&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Creating Symbolic Links to Start and Stop Tomcat&lt;br&gt;
     sudo ln -s /opt/tomcat/tomcat9/bin/startup.sh &lt;br&gt;
     /usr/bin/starttomcat&lt;br&gt;
     sudo ln -s /opt/tomcat9/tomcat9/bin/shutdown.sh &lt;br&gt;
     /usr/bin/stoptomcat&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Starting and Stopping Tomcat&lt;br&gt;
   sudo starttomcat&lt;br&gt;
  sudo stoptomcat&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;To access the Tomcat server on the web browser:&lt;br&gt;
   &lt;strong&gt;NB: You must add port 8080 to your security group &lt;br&gt;
     inbound rules&lt;/strong&gt;. Use the ip-address of your Tomcat &lt;br&gt;
     server and the default port number of Tomcat to access &lt;br&gt;
     the homepage of the Tomcat server.&lt;br&gt;&lt;br&gt;
     e.g &lt;a href="http://ip-address:8080" rel="noopener noreferrer"&gt;http://ip-address:8080&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;PART 5: TOMCAT CONFIGURATIONS:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; To gain access to Tomcat's manager's page, you must edit 
     the context.xml file

&lt;ul&gt;
&lt;li&gt;sudo nano /opt/tomcat/webapps/manager/META- 
  INF/context.xml

&lt;ul&gt;
&lt;li&gt;Locate these 2 lines and uncomment it as shown in the 
image. 
&lt;/li&gt;
&lt;li&gt;Save and exit&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&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%2Fmti62k45qhy2d91agm6y.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%2Fmti62k45qhy2d91agm6y.png" alt="Image description" width="800" height="470"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Tomcat Users Creation:&lt;/strong&gt;&lt;br&gt;
    - sudo nano /opt/tomcat9/conf/tomcat-users.xml&lt;br&gt;
     
     roles="manager-gui, manager-script, admin-gui, manager- &lt;br&gt;
     status"/&amp;gt;        &lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; &amp;lt;user username="Your user name" password="Your password" 
 roles="manager-script, manager-gui, admin-gui"/&amp;gt;
- Save and exit
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;*&lt;em&gt;NB: The first script can be linked to a root user in AWS and the second as an IAM user with limited permissions. Click on this link &lt;a href="https://tomcat.apache.org/migration-7.html" rel="noopener noreferrer"&gt;https://tomcat.apache.org/migration-7.html&lt;/a&gt; for more explanation about the roles. *&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;PART 6: DEPLOYING FROM MAVEN TO TOMCAT USING PLUGIN:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;On your maven server, navigate to the .m2 directory&lt;br&gt;
       - cd ~/.m2&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a settings.xml file&lt;br&gt;
      - sudo nano settings.xml&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Paste this in the settings.xml&lt;br&gt;
  &lt;br&gt;
  &lt;br&gt;
    &lt;br&gt;
TomcatServer # this id must match that of the  under the configuration in pom.xml&lt;br&gt;
        tomcat username&lt;br&gt;
        tomcat password&lt;br&gt;
    &lt;br&gt;
  &lt;br&gt;
  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Save and exit&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Edit the pom.xml file&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;nano pom.xml 
Note: Add this plugin&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;br&gt;
    org.apache.tomcat.maven&lt;br&gt;
    tomcat7-maven-plugin&lt;br&gt;
    2.3&lt;br&gt;
    &lt;br&gt;
        TomcatServer&lt;br&gt;
        &lt;a href="http://localhost:8080/manager/text" rel="noopener noreferrer"&gt;http://localhost:8080/manager/text&lt;/a&gt; #change the localhost to your ip&lt;br&gt;
    &lt;br&gt;
  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Save and exit&lt;/li&gt;
&lt;/ul&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%2Ftxgxvmyx4b4z3n1aelxj.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%2Ftxgxvmyx4b4z3n1aelxj.png" alt="Image description" width="800" height="567"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Now run this command to deploy from Maven to Tomcat:

&lt;ul&gt;
&lt;li&gt;mvn tomcat7:deploy

&lt;ul&gt;
&lt;li&gt;To undeploy, run:&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;mvn tomcat7:undeploy&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;PART 7: DEPLOYING FROM MAVEN TO TOMCAT USING SCP COMMAND:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Assign a password to the tomcat user (ubuntu) using this &lt;br&gt;
command&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;sudo passwd ubuntu&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enable password authentication &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;sudo nano /etc/ssh/sshd_config&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Locate the PasswordAuthentication line and uncomment by &lt;br&gt;
deleting the #tag&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;PasswordAuthentication yes &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Press CTRL + O to Save and CTRL + X to exit &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Restart the sshd service&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;sudo systemctl restart sshd&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;On the maven server perform the following actions:&lt;br&gt;
N*&lt;em&gt;B: A connection needs to be established between the Maven &lt;br&gt;
server and the Tomcat server.&lt;/em&gt;* &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- Copy the keypair of the tomcat server. 
- create a .pem file on the maven server to save the tomcat 
  keypair

  - sudo nano tomcatkeypair.pem
  - Paste the tomcat keypair copied earlier 
  - Use CTRL + O to save and CTRL + X to exit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Give a read me only permission to the tomcatkeypair.pem&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;chmod 400 tomcatkeypair.pem
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;SSH into the Tomcat server&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ssh -i tomcatkeypair.pem (ubuntu@ip-address)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Now run this command to copy from Maven to Tomcat securely:&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;scp -i keypair name /path/to/local/artifact.war username@tomcat_server_ip:/path/to/tomcat/webapps/&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
Deploying a web application on Tomcat using Maven in an AWS environment showcases a hands-on approach to DevOps practices by combining development tools, cloud infrastructure, and deployment strategies. This project is invaluable for modern enterprise environments, where scalable and reliable application hosting is crucial for business success. &lt;br&gt;
*&lt;em&gt;NB: I am looking forward to Junior DevOps internship opportunities. *&lt;/em&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Now run this command to deploy from Maven to Tomcat:

&lt;ul&gt;
&lt;li&gt;mvn tomcat7:deploy&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;To undeploy, run:

&lt;ul&gt;
&lt;li&gt;mvn tomcat7:undeploy&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;PART 7: DEPLOYING FROM MAVEN TO TOMCAT USING SCP COMMAND:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Assign a password to the tomcat user (ubuntu) using this command&lt;/li&gt;
&lt;li&gt;sudo passwd ubuntu &lt;/li&gt;
&lt;li&gt;Enable password authentication 

&lt;ul&gt;
&lt;li&gt;sudo nano /etc/ssh/sshd_config&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Locate the PasswordAuthentication line and uncomment by deleting the #tag

&lt;ul&gt;
&lt;li&gt;PasswordAuthentication yes
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Press CTRL + O to Save and CTRL + X to exit &lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Restart the sshd service&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;sudo systemctl restart sshd&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;On the maven server perform the following actions:&lt;br&gt;
NB: A connection needs to be established between the Maven server and the Tomcat server. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Copy the keypair of the tomcat server. &lt;/li&gt;
&lt;li&gt;create a .pem file on the maven server to save the tomcat keypair&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  - sudo nano tomcatkeypair.pem

  - Paste the tomcat keypair copied earlier 
  - Use CTRL + O to save and CTRL + X to exit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt; Give permission to the tomcatkeypair.pem&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  - chmod 400 tomcatkeypair.pem  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;SSH into the Tomcat server&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ssh -i tomcatkeypair.pem (ubuntu@ip-address)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Now run this command to securely copy from Maven to Tomcat:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;scp -i keypair name /path/to/local/artifact.war username@tomcat_server_ip:/path/to/tomcat/webapps/&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;scp -i tomcatkeypair.pem /home/ubuntu/webapp-project/web-app/target/web-app.war  &lt;a href="mailto:ubuntu@3.142.232.34"&gt;ubuntu@3.142.232.34&lt;/a&gt;:/opt/tomcat9/webapps&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Conclusion&lt;br&gt;
Deploying a web application on Tomcat using Maven in an AWS environment showcases a hands-on approach to DevOps practices by combining development tools, cloud infrastructure, and deployment strategies. This project is invaluable for modern enterprise environments, where scalable and reliable application hosting is crucial for business success. &lt;br&gt;
NB: Looking forward to Junior DevOps internship opportunities. &lt;/p&gt;

</description>
      <category>devops</category>
      <category>aws</category>
      <category>learning</category>
      <category>cloud</category>
    </item>
  </channel>
</rss>
