NGINX CONFIGURATION | DevOps 0

NGINX CONFIGURATION | DevOps 0

Introduction

As part of the HNG DevOps Stage 0 internship task, I was required to install and configure the NGINX web server on a fresh Ubuntu server. The goal was to serve a custom HTML page displaying the message:

Welcome to DevOps Stage 0 - [Your Name]/[SlackName]

This task tested my ability to work with web server configurations, manage an Ubuntu server, and ensure that the deployed page was accessible via a public IP.


Step-by-Step Approach

1. Setting Up the Server

I started by provisioning an Ubuntu server on a cloud platform. I used DigitalOcean, but you can also use AWS, Linode, Google Cloud, or any other provider.

To connect to the instance, I used SSH:

ssh username@[my-server-ip-address]

2. Installing NGINX

After logging into the server, I updated the package lists and installed NGINX:

sudo apt update && sudo apt upgrade -y
sudo apt install nginx -y

Then, I started and enabled the NGINX service to run on system startup:

sudo systemctl start nginx
sudo systemctl enable nginx

To confirm that NGINX was running, I checked its status:

sudo systemctl status nginx

I also tested it by opening http://<your-server-ip>/ in a web browser, which displayed the default NGINX welcome page.


3. Configuring the Custom HTML Page

To meet the task requirements, I modified the default HTML file located at /var/www/html/index.html.

I edited the file:

sudo vim /var/www/html/index.html

And replaced its contents with:

<html>
    <head>
        <title>Welcome to DevOps Stage 0</title>
    </head>
    <body>
        <h1>Welcome to DevOps Stage 0 - [Asaolu James]/[Jybium]</h1>
    </body>
</html>

I saved the file (CTRL + X, then Y, then Enter) and ensured the changes took effect.

Next, I tested the NGINX configuration:

sudo nginx -t

If the test was successful, I reloaded NGINX:

sudo systemctl reload nginx

Finally, I accessed http://<your-server-ip>/ in my browser, and it correctly displayed my custom message.


Challenges Faced and How I Overcame Them

1. Firewall Issues

Initially, I couldn’t access my NGINX server from the browser. The issue was that port 80 (HTTP) was blocked. To fix this, I allowed HTTP traffic:

sudo ufw allow 'Nginx HTTP'
sudo ufw enable

This resolved the issue.

2. Permission Errors

At one point, I encountered a permission error when editing /var/www/html/index.html. I resolved it by using sudo while editing the file.


How This Task Contributed to My Learning

This task helped me understand:

  • Web server configuration: Setting up and managing NGINX.

  • Linux server management: Installing software and troubleshooting errors.

It reinforced my ability to work with cloud infrastructure, an essential skill for DevOps Engineers.

Additionally, this task aligns with roles such as:


Conclusion

Completing this task was a valuable experience that strengthened my understanding of NGINX, Ubuntu, and cloud deployment. Overcoming challenges like firewall issues and permission errors helped reinforce troubleshooting skills.

With this foundation, I look forward to exploring CI/CD pipelines, and infrastructure automation in future stages.

Let me know if you found this helpful, and feel free to ask any questions!