<?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: Johnbosco Umeh</title>
    <description>The latest articles on DEV Community by Johnbosco Umeh (@umehifeanyi).</description>
    <link>https://dev.to/umehifeanyi</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%2F1043462%2Ff3204313-7feb-4947-8d9e-aca5e492b6f9.jpeg</url>
      <title>DEV Community: Johnbosco Umeh</title>
      <link>https://dev.to/umehifeanyi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/umehifeanyi"/>
    <language>en</language>
    <item>
      <title>BUG HUNTING ON scrapeAnyWebsite (SAW)</title>
      <dc:creator>Johnbosco Umeh</dc:creator>
      <pubDate>Thu, 04 Jul 2024 05:06:45 +0000</pubDate>
      <link>https://dev.to/umehifeanyi/exploratory-testing-of-scrapeanywebsite-saw-and-recommendation-for-app-improvement-5eoc</link>
      <guid>https://dev.to/umehifeanyi/exploratory-testing-of-scrapeanywebsite-saw-and-recommendation-for-app-improvement-5eoc</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;INTRODUCTION&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;This project was carried out to explore the ScrapeAnyWebsite (SAW) App. A windows application designed to extract various data from any website. The app is meant to help users gather and organize data from the web efficiently. Download the app &lt;a href="https://apps.microsoft.com/detail/9mzxn37vw0s2?hl=en-gb&amp;amp;gl=NG" rel="noopener noreferrer"&gt;Scrape Any Website&lt;/a&gt; and explore&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;OBJECTIVE&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The aim of the exploration of this web application is to explore its functionalities to detect bugs, usability issues and possible inconsistencies in the app with core focus on bug severity in usability, performance and security to ensure delivery of quality product to end users.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;SCOPE&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Exploratory testing of the app for functionality, user navigation, UI issues, performance and data security and other vulnerabilities.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;ENVIRONMENT&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Desktop&lt;br&gt;
Windows 11&lt;br&gt;
SAW desktop app 2.0&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;ISSUES DETECTED&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;In the course of exploring the web application, the following were detected with the more detailed bug report available &lt;a href="https://docs.google.com/spreadsheets/d/1CZtbG_Rt0Cp35sRxa6kzZEVtgESxO_7RCwjVpQskQAA/edit?usp=sharing" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;UI and Presentation:&lt;/strong&gt;  The general presentation of the app page, navigation and presentation of its data is not clear, not user friendly and is not totally dynamic as it is not possible to scroll down to see the ending part of the page.This will pose a serious issue of usability for the users.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Invalid URL handling:&lt;/strong&gt; When setting up website to scrape, the app accepts any url typed in including invalid url without being promptd to enter a correct url. This poses a functionality and performance issue as user will not be able to scrape the website and returning back to correct url add to frustration for the user.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Option to analyse Scraped Data:&lt;/strong&gt; After inputting all neccessary information and scraping websites, there is no means of analysing the data because the values provided by the app are url, status, date, code and size. This prevent users from fully utilizing the potentials offered by the app posing a functionality issue.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Browser Option Switching:&lt;/strong&gt; Switch the browser option of the app from internet headless browser to Chrome via chromedriver did not produce any significant difference in data scraping and/or presentation of the scraped data. This makes the app ambiguous in functionality and can lead to user confusion.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;CONCLUSION&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The SAW app is a great tool that offers the service of scraping websites for users in order to meet their needs, however, the app needs some fine-tuning in terms of the bugs detected in the course of its exploration. This will enhance it functionality, usability, security of users data and general performance. For a more detailed report on the bugs detected click &lt;a href="https://docs.google.com/spreadsheets/d/1CZtbG_Rt0Cp35sRxa6kzZEVtgESxO_7RCwjVpQskQAA/edit?usp=sharing" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;

</description>
      <category>qa</category>
      <category>testing</category>
      <category>bug</category>
    </item>
    <item>
      <title>TOOLING SOLUTION FOR A DEVOPS TEAM</title>
      <dc:creator>Johnbosco Umeh</dc:creator>
      <pubDate>Sun, 08 Oct 2023 06:22:12 +0000</pubDate>
      <link>https://dev.to/umehifeanyi/tooling-solution-for-a-devops-team-3cc</link>
      <guid>https://dev.to/umehifeanyi/tooling-solution-for-a-devops-team-3cc</guid>
      <description>&lt;p&gt;This project focuses on building a website solution for a team of developers that will help a in day to day activities in managing, developing, testing, deploying, and monitoring different projects.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;ARCHTECTURAL DESIGN&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ct2ueB65--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224522484-5943e969-42ab-4acf-963c-0d4f4a976a2f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ct2ueB65--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224522484-5943e969-42ab-4acf-963c-0d4f4a976a2f.png" alt="artectureimage" width="738" height="466"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;NFS SERVER&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Create a new &lt;strong&gt;Redhat 8 ec2 linux instance&lt;/strong&gt; and save the keypair as a .pem file for connection for Linux/Windows Terminal&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--e6jsTm_y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224520612-6b13769a-642c-49e1-98ac-6393edd7aa9e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--e6jsTm_y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224520612-6b13769a-642c-49e1-98ac-6393edd7aa9e.png" alt="ec2instance" width="800" height="276"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Create 3 volumes of 10G each&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--weaplcH_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224521152-3f8c4ced-a40f-40a7-aa5f-7be0f320140f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--weaplcH_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224521152-3f8c4ced-a40f-40a7-aa5f-7be0f320140f.png" alt="creatvol" width="800" height="134"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Attach the volumes to the instance one after another&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CVPh71Zw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224521179-d23c8a5a-9907-4a4a-99fe-f5d967fac236.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CVPh71Zw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224521179-d23c8a5a-9907-4a4a-99fe-f5d967fac236.png" alt="volattach" width="800" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Open the linux/windows terminal and checked the attached disks. Run:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;lsblk&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--a3E1onUm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224521225-600ebfd0-433f-4af2-bf46-98bfd26eaab2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--a3E1onUm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224521225-600ebfd0-433f-4af2-bf46-98bfd26eaab2.png" alt="lsblk" width="800" height="134"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Create Partitions on each disk. Run&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo gdisk /dev/xvdg
sudo gdisk /dev/xvdf
sudo gdisk /dev/xvdh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Type n, to create new partition, enter 1 to create 1 partition, p to see the partition details and w to write the created partition. Select yes to finish&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DydhZ071--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224521362-01ee744d-b106-4194-a6e4-2fa73d83709b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DydhZ071--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224521362-01ee744d-b106-4194-a6e4-2fa73d83709b.png" alt="sudogdisk" width="800" height="406"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Check the Partitions created&lt;/p&gt;

&lt;p&gt;&lt;code&gt;lsblk&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YR383FZV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224521332-e683b559-98e7-44b8-81e7-a96cb6456eb8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YR383FZV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224521332-e683b559-98e7-44b8-81e7-a96cb6456eb8.png" alt="lsblk2" width="800" height="168"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Intall lvm2&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo yum install lvm2&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UsSrh7tf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224521656-c91eac45-e385-4a15-a504-5a79ef5e1fb3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UsSrh7tf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224521656-c91eac45-e385-4a15-a504-5a79ef5e1fb3.png" alt="sudolvm" width="800" height="307"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Check the available partitions. Run&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo lvmdiskscan&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VSykcqsd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224521584-a29874a2-90fe-4bd5-8e46-d4a12d5780d2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VSykcqsd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224521584-a29874a2-90fe-4bd5-8e46-d4a12d5780d2.png" alt="scandiklvm" width="800" height="186"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Create Physical volume by marking 3 of the partitioned disks with pvcreate&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo pvcreate /dev/xvdf1
sudo pvcreate /dev/xvdg1
sudo pvcreate /dev/xvdh1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--g53xOKaB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224521747-f8b496be-02ef-4d9e-986f-bd2f802cc85d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--g53xOKaB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224521747-f8b496be-02ef-4d9e-986f-bd2f802cc85d.png" alt="pvcreate" width="800" height="104"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Verify the created physical volumes&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo pvs&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gjaHoBrm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224521787-b5d9ff91-75ea-49d6-a4b5-c19f127ee66c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gjaHoBrm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224521787-b5d9ff91-75ea-49d6-a4b5-c19f127ee66c.png" alt="sudopvs" width="800" height="104"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Create a volume group to contain all 3 of the created physical volumes with vgcreate. In this case the name is nfs-vg&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo vgcreate nfs-vg /dev/xvdf1 /dev/xvdg1 /dev/xvdh1&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1GsJsn3t--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224522159-09b3b945-97cc-4b06-9891-8131540b2eea.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1GsJsn3t--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224522159-09b3b945-97cc-4b06-9891-8131540b2eea.png" alt="vgnfs" width="800" height="50"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Verify the created volume group&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo vgs&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ywFA0vpQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224522171-99dec4fd-8435-4d1c-b878-b8e48464d59a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ywFA0vpQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224522171-99dec4fd-8435-4d1c-b878-b8e48464d59a.png" alt="sudovgs" width="800" height="49"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Create 3 Logical Volumes. lv-opt lv-apps, and lv-logs using the lvcreate utility. Allocate 9G each to them. The lv-apps will store website data, lv-gos will store web logs.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo lvcreate -n lv-apps -L 9G nfs-vg
sudo lvcreate -n lv-logs -L 9G nfs-vg
sudo lvcreate -n lv-opt -L 9G nfs-vg
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WBoHLLab--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224522281-8fdbac71-a35e-4fe8-affe-3d366e1de2d0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WBoHLLab--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224522281-8fdbac71-a35e-4fe8-affe-3d366e1de2d0.png" alt="lvcreate" width="800" height="90"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Confirm the logical volumes&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo lvs&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4-cIr3rQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224522392-aa13bf6d-f174-416b-a8e6-a9381364d7b9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4-cIr3rQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224522392-aa13bf6d-f174-416b-a8e6-a9381364d7b9.png" alt="sudolvs" width="800" height="73"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Verify the entire set-up&lt;/p&gt;

&lt;p&gt;&lt;code&gt;lsblk&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QNbN6z_Z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224522437-8e2672fe-a136-4944-b978-46968f6b7325.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QNbN6z_Z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224522437-8e2672fe-a136-4944-b978-46968f6b7325.png" alt="lsblk3" width="800" height="180"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Format the disk logical volumes with mfks.xfs&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo mkfs -t xfs /dev/nfs-vg/lv-apps
sudo mkfs -t xfs /dev/nfs-vg/lv-logs
sudo mkfs -t xfs /dev/nfs-vg/lv-opt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create /mnt/apps directory to store files&lt;br&gt;
&lt;code&gt;sudo mkdir -p /mnt/apps&lt;/code&gt; for website files&lt;br&gt;
&lt;code&gt;sudo mkdir -p /mnt/logs&lt;/code&gt; for log files&lt;br&gt;
&lt;code&gt;sudo mkdir -p /mnt/opt&lt;/code&gt; to be used for jedkins in the next project&lt;br&gt;
Mount lv-apps of /mnt/apps; lv-logs on /mnt/log and lv-opt on /mnt/opt&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo mount /dev/nfs-vg/lv-apps /mnt/apps
sudo mount /dev/nfs-vg/lv-logs /mnt/logs
sudo mount /dev/nfs-vg/lv-opt /mnt/opt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ztOT8FrB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224875899-040afda0-058b-45ee-81bd-a495f4bc3a07.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ztOT8FrB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224875899-040afda0-058b-45ee-81bd-a495f4bc3a07.png" alt="mkdirmount" width="800" height="96"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Update /etc/fstab file&lt;/p&gt;

&lt;p&gt;Run&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo blkid&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--EwFR4hhd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224877314-a564da11-3d94-4447-a015-c3a11cb26026.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--EwFR4hhd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224877314-a564da11-3d94-4447-a015-c3a11cb26026.png" alt="blkid" width="800" height="180"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;coppy the mount ids and update:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo vi /etc/fstab&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--y8FFCjmu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224877704-b0dfd171-0df1-4c68-a44b-eb1813c78778.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--y8FFCjmu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224877704-b0dfd171-0df1-4c68-a44b-eb1813c78778.png" alt="fstabedit" width="800" height="169"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Test the configuration and reload the daemon&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo mount -a
sudo systemctl daemon-reload
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Install nfs server, configure and make sure it starts on system reboot&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo yum -y update
sudo yum install nfs-utils -y
sudo systemctl start nfs-server.service
sudo systemctl enable nfs-server.service
sudo systemctl status nfs-server.service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yvVthRxB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224878999-0904d9b1-ae87-4744-91c4-7ae2d21e5f6f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yvVthRxB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224878999-0904d9b1-ae87-4744-91c4-7ae2d21e5f6f.png" alt="utils" width="800" height="280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KU3ZMXDI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224879373-bc69422b-c8a4-4b62-8233-e35399443277.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KU3ZMXDI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224879373-bc69422b-c8a4-4b62-8233-e35399443277.png" alt="enablenfs" width="800" height="83"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;set up permission that will allow our Web servers to read, write and execute files on NFS:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo chown -R nobody: /mnt/apps
sudo chown -R nobody: /mnt/logs
sudo chown -R nobody: /mnt/opt
sudo chmod -R 777 /mnt/apps
sudo chmod -R 777 /mnt/logs
sudo chmod -R 777 /mnt/opt

sudo systemctl restart nfs-server.service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rmkQbBLh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224882245-f1ac09bb-4af7-4b7c-8be4-2a03dfafb962.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rmkQbBLh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224882245-f1ac09bb-4af7-4b7c-8be4-2a03dfafb962.png" alt="own775" width="800" height="83"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Check your subnet cidr – open your EC2 details in AWS web console and locate ‘Networking’ tab and open a Subnet link:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2h2aI0pj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224881295-3b81e8cd-197b-4b08-ac66-e2b55d3c33b1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2h2aI0pj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224881295-3b81e8cd-197b-4b08-ac66-e2b55d3c33b1.png" alt="Screenshot from 2023-03-14 03-56-10" width="733" height="413"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Configure access to NFS for clients within the same subnet using the subnet cidr we got above&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo vi /etc/exports

/mnt/apps &amp;lt;Subnet-CIDR&amp;gt;(rw,sync,no_all_squash,no_root_squash)
/mnt/logs &amp;lt;Subnet-CIDR&amp;gt;(rw,sync,no_all_squash,no_root_squash)
/mnt/opt &amp;lt;Subnet-CIDR&amp;gt;(rw,sync,no_all_squash,no_root_squash)

Esc + :wq!

sudo exportfs -arv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UihIDWmN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224882144-f04764fa-06e1-4cbf-b159-cfd7a4ab59cf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UihIDWmN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224882144-f04764fa-06e1-4cbf-b159-cfd7a4ab59cf.png" alt="etcedit" width="800" height="83"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oJFqyt2j--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224882420-cabaab64-b0d9-4e34-a523-65371f7b941d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oJFqyt2j--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224882420-cabaab64-b0d9-4e34-a523-65371f7b941d.png" alt="exportfs" width="800" height="62"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Check which port is used by NFS and open its port in security group setting&lt;/p&gt;

&lt;p&gt;&lt;code&gt;rpcinfo -p | grep nfs&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qWbjDFCg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224882769-dcffe856-3b6a-48c7-a20f-4c2472822be5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qWbjDFCg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224882769-dcffe856-3b6a-48c7-a20f-4c2472822be5.png" alt="portcheck" width="800" height="62"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Open port TCP 2049 inbound security group and also, In order for NFS server to be accessible from your client, you must also open following ports: TCP 111, UDP 111, UDP 2049&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4glUk5lS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224883015-48163513-c2d5-4eea-bae0-c2a670441a22.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4glUk5lS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224883015-48163513-c2d5-4eea-bae0-c2a670441a22.png" alt="tcpudpport" width="800" height="357"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;CONFIGURE DATABASE&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Configure ec2 instance type ubuntu and do these:&lt;/p&gt;

&lt;p&gt;Install MySQL server&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo apt install mysql-server&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Create a database and name it tooling&lt;/p&gt;

&lt;p&gt;Create a database user and name it webaccess&lt;/p&gt;

&lt;p&gt;Grant permission to webaccess user on tooling database to do anything only from the webservers subnet cidr&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aOY61Lus--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224884374-fe7362a1-50a3-4be3-82ae-824d005a3995.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aOY61Lus--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224884374-fe7362a1-50a3-4be3-82ae-824d005a3995.png" alt="realDB" width="800" height="293"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Dont forget to edit bind address for database to 0.0.0.0 so our DB can be accessible for our servers&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Da_iEJ4a--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224891332-310a978c-dace-4b74-ac32-7e9f4438398f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Da_iEJ4a--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224891332-310a978c-dace-4b74-ac32-7e9f4438398f.png" alt="bind address" width="800" height="435"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;WEBSERVERS&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Spin up a new REHL 8 ec2 instance in the same subnet as the nfs server&lt;/p&gt;

&lt;p&gt;Install NFS client&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo yum install nfs-utils nfs4-acl-tools -y&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Mount /var/www/ and target the NFS server’s export for apps&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo mkdir /var/www
sudo mount -t nfs -o rw,nosuid &amp;lt;NFS-Server-Private-IP-Address&amp;gt;:/mnt/apps /var/www
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--H4CI9E8e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224885839-add4846d-ad37-441e-a930-7c1a6eb6d9fe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--H4CI9E8e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224885839-add4846d-ad37-441e-a930-7c1a6eb6d9fe.png" alt="mkdirndmount" width="800" height="35"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Use df -h to confirm the mount&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nQzFIQSc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224886274-b51e4165-ec49-4ad9-b72e-f8f1df6a7a94.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nQzFIQSc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224886274-b51e4165-ec49-4ad9-b72e-f8f1df6a7a94.png" alt="mountconfirm" width="800" height="128"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Edit /etc/fstab file&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo vi /etc/fstab&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Add the following to the file setting&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;NFS-Server-Private-IP-Address&amp;gt;:/mnt/apps /var/www nfs defaults 0 0&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7NNtWqB9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224886812-8727819a-c474-46ca-a4e4-5cf7b76a6657.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7NNtWqB9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224886812-8727819a-c474-46ca-a4e4-5cf7b76a6657.png" alt="fstabwww" width="800" height="128"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Install Remi’s repository, Apache and PHP&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo yum install httpd -y

sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm

sudo yum install http://rpms.remirepo.net/enterprise/remi-release-9.rpm

sudo dnf module reset php

sudo dnf module enable php:remi-7.4

sudo dnf install php php-opcache php-gd php-curl php-mysqlnd

sudo systemctl start php-fpm

sudo systemctl enable php-fpm

Sudo setsebool -P httpd_execmem 1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Repeat steps 1-5 for another 2 Web Servers.&lt;/p&gt;

&lt;p&gt;Verify that Apache files and directories are available on the Web Server in /var/www and also on the NFS server in /mnt/apps. If you see the same files – it means NFS is mounted correctly.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2_GLNc5_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224887769-c3bd12c9-04d9-41eb-8908-86c7c0a28552.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2_GLNc5_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224887769-c3bd12c9-04d9-41eb-8908-86c7c0a28552.png" alt="varwwwconfirm" width="800" height="94"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In our webserver /var/www directory. Run&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo touch text.txt&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QDKhnIOC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224888236-d4054a4e-8eb5-4516-9914-082bd71b0e72.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QDKhnIOC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224888236-d4054a4e-8eb5-4516-9914-082bd71b0e72.png" alt="touchtxt" width="800" height="28"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fJdSSjTO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224888293-7f07245f-9d38-4356-af09-381bc14f7322.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fJdSSjTO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224888293-7f07245f-9d38-4356-af09-381bc14f7322.png" alt="touchconfirm" width="800" height="38"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We can see the text.txt file created inside our nfs server /mnt/apps directory. So they are communicating perfectly.&lt;/p&gt;

&lt;p&gt;Create directory for apache log and mount it on the /mnt/logs directory of our NFS server&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo mkdir -p /var/log/httpd

sudo mount -t nfs -o rw,nosuid &amp;lt;NFS-Server-Private-IP-Address&amp;gt;:/mnt/logs /var/log/httpd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---WTDKUad--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224889232-a591f369-3916-4c56-8881-469d962db2f4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---WTDKUad--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224889232-a591f369-3916-4c56-8881-469d962db2f4.png" alt="logsdirndmount" width="800" height="38"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Edit the /etc/fstab file so that it persists even after reboot&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo vi /etc/fstab&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qla87s3b--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224889369-e6a31fbc-bc5d-4bbd-a0fd-30ec1b5a9fc8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qla87s3b--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224889369-e6a31fbc-bc5d-4bbd-a0fd-30ec1b5a9fc8.png" alt="fstabupdate" width="800" height="138"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Fork the tooling source code from &lt;a href="https://github.com/darey-io/tooling" rel="noopener noreferrer"&gt;Darey.io Github Account&lt;/a&gt; to your Github account.&lt;/p&gt;

&lt;p&gt;Download git&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo yum install git&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Clone the repository you forked the project into&lt;/p&gt;

&lt;p&gt;&lt;code&gt;git clone &amp;lt;repository link&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Deploy the tooling website’s code to the Webserver. Ensure that the html folder from the repository is deployed to /var/www/html&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd tooling

sudo cp -r html/* /var/www/html/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open TCP port 80 on the Web Server&lt;/p&gt;

&lt;p&gt;If you encounter 403 Error:&lt;/p&gt;

&lt;p&gt;check permissions on /var/www/html folder&lt;br&gt;
Disable SELinux sudo setenforce 0&lt;br&gt;
To make this change permanent, open selinux config file and set SELINUX=disabled then restrt httpd.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo vi /etc/sysconfig/selinux&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Update the website’s configuration to connect to the database&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo vi /var/www/html/functions.php&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IncOlHAY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224892277-bf9ced13-f3c3-477b-87c6-05e12f7254f8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IncOlHAY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/224892277-bf9ced13-f3c3-477b-87c6-05e12f7254f8.png" alt="newphpconfig" width="800" height="435"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Apply tooling-db.sql script to your database using this command:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;mysql -h &amp;lt;databse-private-ip&amp;gt; -u &amp;lt;db-username&amp;gt; -p &amp;lt;db-pasword&amp;gt; &amp;lt; tooling-db.sql&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Now we can open our web browser and enter&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;webserver-public-ip&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NhEs-0cE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/225014270-73677c67-5571-4c3f-b2d2-efaa4cfd0d5c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NhEs-0cE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/225014270-73677c67-5571-4c3f-b2d2-efaa4cfd0d5c.png" alt="loginpage" width="800" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NM4eIdLd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/225014338-68d07cc2-58bb-4c81-9f31-df502ee83db3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NM4eIdLd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/77943759/225014338-68d07cc2-58bb-4c81-9f31-df502ee83db3.png" alt="Screenshot from 2023-03-14 14-18-32" width="800" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We have just successfully implemented a web solution for a DevOps team using LAMP stack with remote Database and NFS servers. &lt;/p&gt;

</description>
      <category>webdev</category>
      <category>devops</category>
      <category>github</category>
      <category>linux</category>
    </item>
  </channel>
</rss>
