Skip to content

Deploy Nginx on the Microsoft Azure Cobalt 100 processors #2208

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

odidev
Copy link
Contributor

@odidev odidev commented Aug 5, 2025

  1. Deploy the Nginx web server on an Azure Linux 3.0 Arm64-based Docker container and an Azure Linux 3.0 custom-image-based Azure virtual machine.
  2. Perform Nginx baseline testing and benchmarking in both the containerized and virtual machine environments.
  • [ * ] I have reviewed Create a Learning Path
  • [ * ] I have checked my contribution for confidential information
    By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of the Creative Commons Attribution 4.0 International License.
    Signed-off-by: odidev [email protected]

In the “Size” field, click on “See all sizes” and select the D-Series v6 family of virtual machine. Select “D4ps_v6” from the list and create the virtual machine.

![Nginx Screenshot](./instance.png)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please break down the Name/Values as steps, and add a "final screen shot" showing the "Create a vm" screen with all the values selected for reference.

Select “Create”, and fill in the details such as Name, and Region. Choose the image for your virtual machine (for example – Ubuntu 24.04) and select “Arm64” as the virtual machine architecture.

In the “Size” field, click on “See all sizes” and select the D-Series v6 family of virtual machine. Select “D4ps_v6” from the list and create the virtual machine.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Explicitly say to click "Review + create" button vs "create the vm" in case the user is not familiar with Azure

In the “Size” field, click on “See all sizes” and select the D-Series v6 family of virtual machine. Select “D4ps_v6” from the list and create the virtual machine.

![Nginx Screenshot](./instance.png)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The pre-reqs on the previous page state to open 443,80, and 22. There are no steps on this page directing the user to modify the inbound ports rules settings to allow those. As access/security settings are a common hurdle for many users, we may want to spell this out.

![Nginx Screenshot](./instance.png)

The virtual machine should be ready and running; you can SSH into the virtual machine using the PEM key, along with the Public IP details.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

After instructing the user to click create, it may also be helpful to walk them through the confirmation and SSH key download screens.

layout: learningpathall
---


Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This page's content is confusing me a bit. There are way too many dependencies for going a container-route for this LP, and even if you do, there is still the need to document / add clarity on the container-based solution.

I suggest to be prescriptive documenting only the non-container implementation for this LP, as it requires less dependencies and manual-steps than a VM-based solution.

This way you focus on the easiest path to implement on Arm, without adding additional commentary/steps for a more difficult implementation. (Not to mention the steps required for the docker install are not included yet anyway (installing docker, etc).)

That would also mean to go back to the overview and remove references to this LP including container-based objectives.

Install Nginx using `dnf`, start the service, and allow **HTTP/HTTPS** in the firewall. Then access the default welcome page using your virtual machine’s public IP in a browser.

### Install Nginx

Copy link
Contributor

@geremyCohen geremyCohen Aug 19, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in a non-container world, replace
sudo dnf install -y nginx
with
sudo apt-get install -y nginx

to run on the previously instructed Ubuntu 24 OS

- Confirms your web server is reachable on **localhost**.

### Allow HTTP Traffic in Firewall

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This step doesnt appear neccesary on Ubuntu 24. Inbound from the internet you would need to modify the inbound ports -- i comment more on that at the create-instance page.

sudo firewall-cmd --reload
```
Now you can access the NGINX default page in a browser:

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For simplicity, I suggest telling the user to run this command, and then paste it into their browser

echo "http://$(curl -s ifconfig.me)/"

layout: learningpathall
---


Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As we already have testing locally and via web browser that Nginx is working, this page may be redundant. Instead, you can add a link on the previous page to nginx getting started content, eg https://nginx.org/en/docs/beginners_guide.html

**ApacheBench (ab)** is a lightweight command-line tool for benchmarking HTTP servers. It measures performance metrics like requests per second, response time, and throughput under concurrent load.

1. Install ApacheBench

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For Ubuntu 24, replace sudo dnf install with:

sudo apt-get update
sudo apt-get install apache2-utils

- **Transfer rate** – Data throughput.
- **Connection times** – Breakdown of min/mean/max connect, processing, and total times.
- **Percentage served** – Percentile distribution of response times.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suggest removing all the content from here to the end of the page, and simply mention if they wish to benchmark results across architectures and instance types, they can run this benchmark on each, and compare the results on their own.

@odidev
Copy link
Contributor Author

odidev commented Aug 20, 2025

Hi Geremy,
I’ve amended this PR to incorporate most of your review comments:

  • Updated the create-instance page with details about inbound ports and the Review + Create option.
  • Expanded the Allow HTTP Traffic in Firewall section to cover both Azure Linux 3.0 VMs and Azure Linux 3.0 Docker containers hosted on Ubuntu VMs.

As aligned in our weekly calls with Yan Fisher, the structure of the Azure Learning Paths is standardized as follows:

  1. Introduction to the package and Azure Linux 3.0
  2. Coverage of both Azure Linux 3.0 Docker containers (on Ubuntu VMs) and Azure Linux 3.0 VMs (via aarch64 ISO)
  3. Installation on both container and VM
  4. Baseline testing on both container and VM
  5. Benchmarking on both container and VM, including results for Arm64 and x86_64, with highlights from the Arm64 setup

We’ve followed the same approach here by documenting findings for both the Docker container and VM.

For baseline testing with Nginx, we added a custom static HTML page and a corresponding Nginx config to serve it. This differs from the Deploy Nginx page, where only installation and validation are covered. Please let us know if this looks redundant and should be removed.

Regarding your suggestion to replace dnf with apt: since we are working exclusively in Azure Linux 3.0 containers and VMs, the available package managers are tdnf and dnf. apt isn’t present in these environments, so we likely cannot make that substitution.

Kindly share any further feedback, and we’ll update the PR accordingly.
Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants