练习 - 创建 VM 以托管 Web 应用程序

已完成

与大多数应用程序框架一样,可以在许多不同的环境中运行 MEAN 堆栈应用程序。 可在服务器机房的物理计算机、某个虚拟机或容器中运行应用程序。

此处将在运行在 Azure 上的 VM 上运行应用程序。 MEAN 支持许多不同的操作系统。 为了方便学习,此处将使用 Ubuntu Linux。

创建 Ubuntu Linux VM

通常情况下,在 Azure 上创建其他资源之前,需要首先创建“资源组”。 资源组是保存与 Azure 解决方案相关资源的容器。 在本练习中,Azure 沙盒提供资源组。 但是,在自己的 Azure 订阅中工作时,你会使用以下命令在附近位置创建资源组。

注意

以下 az group create 代码示例供你使用自己的帐户(而非此沙盒)运行!

az group create \
  --name <resource-group-name> \
  --location <resource-group-location>
  1. 在 Cloud Shell 中,运行 az vm create 命令以创建 Ubuntu VM:

    az vm create \
      --resource-group "<rgn>[sandbox resource group name]</rgn>" \
      --name MeanStack \
      --image Canonical:0001-com-ubuntu-server-focal:20_04-lts:latest \
      --admin-username azureuser \
      --generate-ssh-keys
    

    此命令需要约两分钟的时间才能完成。 命令完成后,将看到类似于以下的输出:

    (Output Example)
    {
      "fqdns": "",
      "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/MeanStack",
      "location": "eastus",
      "macAddress": "00-0D-3A-1E-1B-3B",
      "powerState": "VM running",
      "privateIpAddress": "10.0.0.5",
      "publicIpAddress": "104.211.9.245",
      "resourceGroup": "<rgn>[sandbox resource group name]</rgn>",
      "zones": ""
    }
    

    VM 的名称是“MeanStack”。 在以后的命令中会使用此名称来标识要使用的 VM。

  2. 在 VM 上打开端口 80,以允许传入的 HTTP 流量流入稍后创建的 Web 应用程序。

    az vm open-port \
      --port 80 \
      --resource-group "<rgn>[sandbox resource group name]</rgn>" \
      --name MeanStack
    
  3. 创建 SSH 与 VM 的连接。

    虽然 az vm create 命令的输出显示了 VM 的公共 IP 地址,但将地址存储在 Bash 变量中可能会比较方便。

    首先运行 az vm show。 此命令将 IP 地址保存在名为 ipaddress 的 Bash 变量中。

    ipaddress=$(az vm show \
      --name MeanStack \
      --resource-group "<rgn>[sandbox resource group name]</rgn>" \
      --show-details \
      --query [publicIps] \
      --output tsv)
    
  4. 像这样连接到 VM。

    ssh azureuser@$ipaddress
    

    当系统提示时,输入“是”以在本地保存 VM 的标识,以便将来的连接受信任。

    在接下来的部分中,你将使用 SSH 连接在虚拟机上配置软件。

摘要

Ubuntu VM 准备就绪后,便可安装 MEAN 堆栈的每个组件。 首先安装 MongoDB。