DEV Community

Aisalkyn Aidarova
Aisalkyn Aidarova

Posted on

Azure VM Deployment & Web Server Lab

Objective

Deploy an Ubuntu Virtual Machine in Azure, resolve quota issues, connect via SSH, install Nginx, and access the server from a browser.


Part 1 – Resolve Azure Quota Issues

Problem Encountered

While creating a VM in East US region:

  • B-series VM sizes were unavailable
  • Error: Insufficient quota – family limit
  • Availability zone conflicts

Root Cause

New Azure subscriptions often:

  • Do not enable B-series by default
  • Have limited regional vCPU quotas
  • Restrict burstable VM families

Solution

Instead of waiting for quota approval:

  • Switched to Standard D2s_v3
  • Used Availability Zone 3
  • Confirmed regional quota available

This is real-world cloud troubleshooting.


Part 2 – Create Azure Virtual Machine

Steps

  1. Go to Azure Portal
  2. Virtual Machines → Create
  3. Configure Basics:

Required Settings

  • Subscription: Azure subscription 1
  • Resource Group: devops-azure-lab
  • VM Name: vm-new-lab
  • Region: East US
  • Availability Zone: Zone 3
  • Image: Ubuntu Server 24.04 LTS
  • Size: Standard D2s_v3
  • Authentication Type: SSH public key
  • Username: azureuser

Networking

  • Public IP: Enabled
  • NSG: Default (auto-created)
  • Open ports: 22 (SSH)

Deployment Result

VM successfully deployed with:

  • Public IP: 135.222.41.117
  • Status: Running
  • OS: Ubuntu 24.04
  • Zone: 3

Part 3 – Connect to VM via SSH

From Mac terminal:

ssh azureuser@135.222.41.117
Enter fullscreen mode Exit fullscreen mode

If using a private key:

chmod 400 key.pem
ssh -i key.pem azureuser@135.222.41.117
Enter fullscreen mode Exit fullscreen mode

First-time connection shows:

The authenticity of host can't be established
Type: yes

Login successful.


Part 4 – Verify Server Environment

Inside VM:

whoami
hostname
lsb_release -a
free -h
df -h
Enter fullscreen mode Exit fullscreen mode

Confirms:

  • User
  • OS version
  • Memory
  • Disk

Part 5 – Update System

sudo apt update
sudo apt upgrade -y
Enter fullscreen mode Exit fullscreen mode

Part 6 – Install Web Server (Nginx)

sudo apt install -y nginx
sudo systemctl start nginx
sudo systemctl enable nginx
Enter fullscreen mode Exit fullscreen mode

Verify:

sudo systemctl status nginx
Enter fullscreen mode Exit fullscreen mode

Must show:

active (running)


Part 7 – Open Port 80 in Azure

Azure Portal:

VM → Networking → Inbound rules → Add

Rule:

  • Source: Any
  • Protocol: TCP
  • Port: 80
  • Action: Allow

Save.


Part 8 – Access in Browser

Open browser:

http://135.222.41.117
Enter fullscreen mode Exit fullscreen mode

Expected result:

Welcome to nginx!


Part 9 – Replace Default Web Page

Inside VM:

cd /var/www/html
sudo rm index.nginx-debian.html
sudo wget https://raw.githubusercontent.com/mdn/beginner-html-site/gh-pages/index.html
Enter fullscreen mode Exit fullscreen mode

Refresh browser:

http://135.222.41.117
Enter fullscreen mode Exit fullscreen mode

Custom page loads.


Architecture Overview

User Browser
↓
Public IP (Azure)
↓
Network Security Group (Firewall)
↓
Virtual Machine (Ubuntu)
↓
Nginx Web Server
↓
HTML Content


What Students Learned

Cloud Infrastructure:

  • VM provisioning
  • Public IP assignment
  • NSG firewall configuration
  • Availability Zones

Troubleshooting:

  • vCPU quota limits
  • VM family restrictions
  • Availability zone mismatch
  • SSH key authentication errors

Linux Administration:

  • Package updates
  • Service management
  • Systemctl usage
  • Web server deployment

Networking:

  • Port exposure
  • Public internet access
  • Security group configuration

Real-World Skills Demonstrated

  • Azure quota troubleshooting
  • Infrastructure deployment
  • Secure SSH access
  • Web server installation
  • Firewall configuration
  • Cloud networking validation

This is real DevOps work.

Top comments (0)