Michael Akande

0 %
Michael Akande
Apigee · DevOps · Full-Stack JavaScript · Shopify · WordPress · Etsy
  • Residence:
    Nigeria
  • City:
    Ibadan
English
Wordpress
Kajabi
Brilliant Directories
Apigee
DevOps
Github
  • WordPress & WooCommerce
  • Brilliant Directories
  • Kajabi
  • Shopify (customization & theme tweaks)
  • CI/CD Pipelines (GitHub Actions, Bitbucket Pipelines)
  • Docker (Containerization & basic orchestration)
  • NGINX / Apache (basic server config)
  • Git (Version control, branching strategy)
  • Apigee (API Proxy Management)
  • SEO Optimization (Yoast, RankMath) Facebook Pixel & Google Tag Manager setup GA4 & Analytics Reporting Sales Funnel Design (especially in Kajabi/ClickFunnels) Email Automations (Kajabi, Mailchimp)

My Journey Setting Up NGINX for HNG Internship Stage 0

 

Introduction

Embarking on a career in DevOps has been a goal of mine for some time. While self-learning provided a foundation, I found the process lacked the engagement and structure I needed. It was during a discussion in a DevOps community that I heard about the HNG Internship. This felt like the perfect opportunity to finally immerse myself in a structured learning environment and accelerate my journey into DevOps. This first task, setting up NGINX, was my first step towards achieving my goal.

Approach to Completing the Task

My initial approach involved leveraging my familiarity with cloud providers. I had previously used Digital Ocean extensively and was initially inclined to use it again. However, due to budget constraints, I decided to explore a new cloud platform. This led me to register for an AWS account and utilize their free tier plan. The process of launching an instance was relatively straightforward for me, as I already possess knowledge of SSH and the process of connecting to a server. I successfully logged into my instance via an SSH client, using my private key file.

Once connected, I used the following commands:

  1. ssh -i “HNG-SSH.pem” ubuntu@ec2–51–20–56–241.eu-north-1.compute.amazonaws.com to connect to my instance. This allowed me to initiate an SSH connection.
  2. ‘ls’ command to navigate my directories and view files. This showed me my present location in my directory structure.
  3. ‘sudo apt update’ command to refresh the system’s package list. This prepares the system to install up-to-date software.
  4. ‘sudo apt install nginx -y’ command to install the NGINX web server. This automatically installs the required NGINX software and any dependencies.
  5. ‘cd /var/www/html’ command to move into the default web directory. This is the location where the website’s files will reside.
  6. ‘sudo nano index.html’ command to create and edit the index.html file. This is where I input my custom HTML content.

To test my website, I simply navigated to my server’s public IP address in my browser. You can access it here


Screenshot of a running nginx webpage on AWS EC2 Instance

Challenges Faced and How I Overcame Them

The primary challenge I faced was navigating the AWS environment. As a new user, I needed to spend some time familiarizing myself with the AWS console, specifically the process of creating an EC2 instance and managing security groups. I had to go through the interface properly to understand the different services and how to set up an instance correctly. This learning curve, while initially time-consuming, was a valuable part of the process. I now understand the process much more intuitively.

 

How This Task Contributes to Learning and Professional Goals

This task has provided me with essential practical experience in working with fundamental web server technology. Configuring an NGINX instance and deploying a simple web page allowed me to grasp the core concepts of web server management.

I have gained a better understanding of how web servers operate, how to install and configure them, and the process of deploying content. This foundational knowledge is invaluable for my future goals in DevOps.

Understanding web server setups is critical for DevOps roles. The ability to provision and configure web servers is crucial for deploying and managing web applications. These skills are not just theoretical, but practical and applicable to various projects and industries. As I move towards a DevOps role, I need to be adept with tools like NGINX.

References

This process of managing infrastructure is essential for an Infrastructure Engineer, highlighting the overlap with my learning experience.

Also, using the terminal for the configuration is reminiscent of the work that Linux Developers do every day.

Summary

This Stage 0 task was a valuable initiation into the HNG Internship program. Starting from zero, I successfully set up an NGINX server on an AWS EC2 instance, configured it to display a custom HTML page, and gained practical experience in navigating the AWS environment. I overcame the initial challenge of learning AWS by carefully exploring the console and learning to manage instances, which greatly enhanced my understanding of cloud environments.

Conclusion

Overall, this task was an incredibly insightful introduction to the world of DevOps. It was a journey of active learning, problem-solving, and hands-on implementation. Not only was I able to achieve the technical goals of the task, but I also enhanced my understanding of cloud infrastructure and honed skills that are critical for my future role as a DevOps Engineer. I am grateful for this experience and look forward to the next stage of this internship.