Краткое руководство. Создание приложения Служба приложений с помощью шаблона ARM

Начните работу со Службой приложений Azure, развернув приложение в облаке с помощью шаблона Azure Resource Manager (ARM) и Azure CLI в Cloud Shell. Шаблон Resource Manager является файлом нотации объектов JavaScript (JSON), определяющим инфраструктуру и конфигурацию вашего проекта. Вы не несете затраты на выполнение этого краткого руководства, так как вы используете бесплатный уровень Служба приложений.

Для работы с этим кратким руководством вам потребуется учетная запись Azure с активной подпиской. Если у вас нет учетной записи Azure, ее можно создать бесплатно.

Перейти к концу

Если вы знакомы с использованием шаблонов ARM, можно перейти к концу, нажав эту Button to deploy the Resource Manager template to Azure. кнопку. Эта кнопка открывает шаблон ARM в портал Azure.

Screenshot of the ARM Template in the Azure portal.

В портал Azure нажмите кнопку "Создать", чтобы создать новую группу ресурсов, а затем нажмите кнопку "Проверить и создать", чтобы развернуть приложение.

Начните работу со Службой приложений Azure, развернув приложение в облаке с помощью шаблона Azure Resource Manager (ARM) и Azure CLI в Cloud Shell. Шаблон Resource Manager является файлом нотации объектов JavaScript (JSON), определяющим инфраструктуру и конфигурацию вашего проекта. Вы не несете затраты на выполнение этого краткого руководства, так как вы используете бесплатный уровень Служба приложений.

Для работы с этим кратким руководством вам потребуется учетная запись Azure с активной подпиской. Если у вас нет учетной записи Azure, ее можно создать бесплатно.

Перейти к концу

Если вы знакомы с использованием шаблонов ARM, можно перейти к концу, нажав эту Button to deploy the Resource Manager template to Azure. кнопку. Эта кнопка открывает шаблон ARM в портал Azure.

Screenshot of the ARM Template in the Azure portal.

В портал Azure нажмите кнопку "Создать", чтобы создать новую группу ресурсов, а затем нажмите кнопку "Проверить и создать", чтобы развернуть приложение.

Начните работу со Службой приложений Azure, развернув приложение в облаке с помощью шаблона Azure Resource Manager (ARM) и Azure CLI в Cloud Shell. Шаблон Resource Manager является файлом нотации объектов JavaScript (JSON), определяющим инфраструктуру и конфигурацию вашего проекта. План уровня "Премиум" необходим для развертывания приложения контейнера Windows. Дополнительные сведения о ценах см. на странице цен на Служба приложений.

Перейти к концу

Если вы знакомы с использованием шаблонов ARM, можно перейти к концу, нажав эту Button to deploy the Resource Manager template to Azure. кнопку. Эта кнопка открывает шаблон ARM в портал Azure.

Screenshot of the ARM Template in the Azure portal.

В портал Azure нажмите кнопку "Создать", чтобы создать новую группу ресурсов, а затем нажмите кнопку "Проверить и создать", чтобы развернуть приложение.

Изучение шаблона

Шаблон, используемый в этом кратком руководстве, взят из шаблонов быстрого запуска Azure. Он развертывает план и приложение Службы приложений в Windows. Шаблон совместим с .NET Core, .NET Framework, PHP, Node.js и статическими HTML-приложениями. Дополнительные сведения о создании приложения Java см. в этой статье.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.25.53.49325",
      "templateHash": "16144177164140676603"
    }
  },
  "parameters": {
    "webAppName": {
      "type": "string",
      "defaultValue": "[format('webApp-{0}', uniqueString(resourceGroup().id))]",
      "minLength": 2,
      "metadata": {
        "description": "Web app name."
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Location for all resources."
      }
    },
    "sku": {
      "type": "string",
      "defaultValue": "F1",
      "metadata": {
        "description": "The SKU of App Service Plan."
      }
    },
    "language": {
      "type": "string",
      "defaultValue": ".net",
      "allowedValues": [
        ".net",
        "php",
        "node",
        "html"
      ],
      "metadata": {
        "description": "The language stack of the app."
      }
    },
    "helloWorld": {
      "type": "bool",
      "defaultValue": false,
      "metadata": {
        "description": "true = deploy a sample Hello World app."
      }
    },
    "repoUrl": {
      "type": "string",
      "defaultValue": "",
      "metadata": {
        "description": "Optional Git Repo URL"
      }
    }
  },
  "variables": {
    "appServicePlanPortalName": "[format('AppServicePlan-{0}', parameters('webAppName'))]",
    "gitRepoReference": {
      ".net": "https://github.com/Azure-Samples/app-service-web-dotnet-get-started",
      "node": "https://github.com/Azure-Samples/nodejs-docs-hello-world",
      "php": "https://github.com/Azure-Samples/php-docs-hello-world",
      "html": "https://github.com/Azure-Samples/html-docs-hello-world"
    },
    "gitRepoUrl": "[if(bool(parameters('helloWorld')), variables('gitRepoReference')[toLower(parameters('language'))], parameters('repoUrl'))]",
    "configReference": {
      ".net": {
        "comments": ".Net app. No additional configuration needed."
      },
      "html": {
        "comments": "HTML app. No additional configuration needed."
      },
      "php": {
        "phpVersion": "7.4"
      },
      "node": {
        "appSettings": [
          {
            "name": "WEBSITE_NODE_DEFAULT_VERSION",
            "value": "12.15.0"
          }
        ]
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.Web/serverfarms",
      "apiVersion": "2023-01-01",
      "name": "[variables('appServicePlanPortalName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('sku')]"
      }
    },
    {
      "type": "Microsoft.Web/sites",
      "apiVersion": "2023-01-01",
      "name": "[parameters('webAppName')]",
      "location": "[parameters('location')]",
      "identity": {
        "type": "SystemAssigned"
      },
      "properties": {
        "siteConfig": "[variables('configReference')[parameters('language')]]",
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanPortalName'))]",
        "httpsOnly": true
      },
      "dependsOn": [
        "[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanPortalName'))]"
      ]
    },
    {
      "condition": "[contains(variables('gitRepoUrl'), 'http')]",
      "type": "Microsoft.Web/sites/sourcecontrols",
      "apiVersion": "2023-01-01",
      "name": "[format('{0}/{1}', parameters('webAppName'), 'web')]",
      "properties": {
        "repoUrl": "[variables('gitRepoUrl')]",
        "branch": "master",
        "isManualIntegration": true
      },
      "dependsOn": [
        "[resourceId('Microsoft.Web/sites', parameters('webAppName'))]"
      ]
    }
  ]
}

В шаблоне определено два ресурса Azure:

Этот шаблон содержит несколько параметров, предопределенных для удобства. См. таблицу по умолчанию параметров и их описания:

Параметры Тип Default value Description
webAppName строка webApp-<uniqueString> Имя приложения на основе уникального строкового значения
appServicePlanName строка webAppPlan-<uniqueString> Служба приложений имя плана на основе уникального строкового значения
расположение строка [resourceGroup().location] Регион приложения
sku строка F1 Размер экземпляра (F1 = уровень "Бесплатный")
язык string .NET Стек языка программирования (.NET, PHP, Node, HTML)
helloWorld boolean False True = развертывание приложения Hello World
repoUrl строка Внешний репозиторий Git (необязательно)

Шаблон, используемый в этом кратком руководстве, взят из шаблонов быстрого запуска Azure. Он развертывает план и приложение Службы приложений в Linux. Он совместим со всеми поддерживаемыми языками программирования в Службе приложений.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.5.6.12127",
      "templateHash": "10602523904429381366"
    }
  },
  "parameters": {
    "webAppName": {
      "type": "string",
      "defaultValue": "[format('webApp-{0}', uniqueString(resourceGroup().id))]",
      "minLength": 2,
      "metadata": {
        "description": "Web app name."
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Location for all resources."
      }
    },
    "sku": {
      "type": "string",
      "defaultValue": "F1",
      "metadata": {
        "description": "The SKU of App Service Plan."
      }
    },
    "linuxFxVersion": {
      "type": "string",
      "defaultValue": "DOTNETCORE|3.0",
      "metadata": {
        "description": "The Runtime stack of current web app"
      }
    },
    "repoUrl": {
      "type": "string",
      "defaultValue": " ",
      "metadata": {
        "description": "Optional Git Repo URL"
      }
    }
  },
  "variables": {
    "appServicePlanPortalName": "[format('AppServicePlan-{0}', parameters('webAppName'))]"
  },
  "resources": [
    {
      "type": "Microsoft.Web/serverfarms",
      "apiVersion": "2021-02-01",
      "name": "[variables('appServicePlanPortalName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('sku')]"
      },
      "kind": "linux",
      "properties": {
        "reserved": true
      }
    },
    {
      "type": "Microsoft.Web/sites",
      "apiVersion": "2021-02-01",
      "name": "[parameters('webAppName')]",
      "location": "[parameters('location')]",
      "properties": {
        "httpsOnly": true,
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanPortalName'))]",
        "siteConfig": {
          "linuxFxVersion": "[parameters('linuxFxVersion')]",
          "minTlsVersion": "1.2",
          "ftpsState": "FtpsOnly"
        }
      },
      "identity": {
        "type": "SystemAssigned"
      },
      "dependsOn": [
        "[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanPortalName'))]"
      ]
    },
    {
      "condition": "[contains(parameters('repoUrl'), 'http')]",
      "type": "Microsoft.Web/sites/sourcecontrols",
      "apiVersion": "2021-02-01",
      "name": "[format('{0}/{1}', parameters('webAppName'), 'web')]",
      "properties": {
        "repoUrl": "[parameters('repoUrl')]",
        "branch": "master",
        "isManualIntegration": true
      },
      "dependsOn": [
        "[resourceId('Microsoft.Web/sites', parameters('webAppName'))]"
      ]
    }
  ]
}

В шаблоне определено два ресурса Azure:

Этот шаблон содержит несколько параметров, предопределенных для удобства. См. таблицу по умолчанию параметров и их описания:

Параметры Тип Default value Description
webAppName строка webApp-<uniqueString> Имя приложения на основе уникального строкового значения
appServicePlanName строка webAppPlan-<uniqueString> Служба приложений имя плана на основе уникального строкового значения
расположение строка [resourceGroup().location] Регион приложения
sku строка F1 Размер экземпляра (F1 = уровень "Бесплатный")
linuxFxVersion строка DOTNETCORE|3.0 "Programming language stack | Version"
repoUrl строка Внешний репозиторий Git (необязательно)

Шаблон, используемый в этом кратком руководстве, взят из шаблонов быстрого запуска Azure. Он развертывает план Служба приложений и приложение Служба приложений в контейнере Windows.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.25.53.49325",
      "templateHash": "10193476814580854111"
    }
  },
  "parameters": {
    "appServiceWebAppName": {
      "type": "string",
      "defaultValue": "[format('webApp-{0}', uniqueString(resourceGroup().id))]",
      "minLength": 2,
      "metadata": {
        "description": "Web App name."
      }
    },
    "appServicePlanName": {
      "type": "string",
      "defaultValue": "[format('webApp-{0}', uniqueString(resourceGroup().id))]",
      "minLength": 2,
      "metadata": {
        "description": "App Service Plan name."
      }
    },
    "skuTier": {
      "type": "string",
      "defaultValue": "P1v3"
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    }
  },
  "resources": [
    {
      "type": "Microsoft.Web/sites",
      "apiVersion": "2023-01-01",
      "name": "[parameters('appServiceWebAppName')]",
      "location": "[parameters('location')]",
      "tags": {
        "[format('hidden-related:{0}', resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName')))]": "empty"
      },
      "properties": {
        "siteConfig": {
          "appSettings": [
            {
              "name": "PORT",
              "value": "8080"
            }
          ],
          "appCommandLine": "",
          "windowsFxVersion": "DOCKER|mcr.microsoft.com/dotnet/samples:aspnetapp"
        },
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]"
      },
      "dependsOn": [
        "[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]"
      ]
    },
    {
      "type": "Microsoft.Web/serverfarms",
      "apiVersion": "2023-01-01",
      "name": "[parameters('appServicePlanName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('skuTier')]"
      },
      "kind": "windows",
      "properties": {
        "hyperV": true
      }
    }
  ]
}

В шаблоне определено два ресурса Azure:

Этот шаблон содержит несколько параметров, предопределенных для удобства. См. таблицу по умолчанию параметров и их описания:

Параметры Тип Default value Description
webAppName строка webApp-<uniqueString> Имя приложения на основе уникального строкового значения
appServicePlanName строка webAppPlan-<uniqueString> Служба приложений имя плана на основе уникального строкового значения
расположение строка [resourceGroup().location] Регион приложения
skuTier строка P1v3 Размер экземпляра (просмотр доступных номеров SKU)
appSettings строка [{"name": "PORT","value": "8080"}] Служба приложений прослушивание порта. Должно быть 8080.
kind строка windows Операционная система
hyperv строка true Режим изоляции
windowsFxVersion строка DOCKER|mcr.microsoft.com/dotnet/samples:aspnetapp Образ контейнера

Развертывание шаблона

Для развертывания шаблона здесь используется Azure CLI. Вы можете также использовать Azure PowerShell, портал Azure и REST API. Дополнительные сведения о других методах развертывания см. в статье о развертывании с использованием шаблонов.

При помощи этого кода создается группа ресурсов, план службы приложений и веб-приложение. Группа ресурсов по умолчанию, план службы приложений и расположение настроены автоматически. Замените <app-name> глобальным уникальным именем приложения (допустимые символы: a-z, 0-9 и -).

Выполните следующие команды, чтобы развернуть приложение платформы .NET в Windows.

az group create --name myResourceGroup --location "southcentralus"

az deployment group create --resource-group myResourceGroup \
--parameters language=".NET" helloWorld="true" webAppName="<app-name>" \
--template-uri "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.web/app-service-docs-windows/azuredeploy.json"

Выполните следующие команды, чтобы создать приложение Python в Linux:

az group create --name myResourceGroup --location "southcentralus"

az deployment group create --resource-group myResourceGroup --parameters webAppName="<app-name>" linuxFxVersion="PYTHON|3.9" \
--template-uri "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.web/app-service-docs-linux/azuredeploy.json"

Чтобы развернуть другой стек языка, обновите соответствующие значения linuxFxVersion. Примеры показаны в таблице. Чтобы отобразить сведения о поддерживаемой версии, выполните следующую команду в Cloud Shell: az webapp config show --resource-group myResourceGroup --name <app-name> --query linuxFxVersion

Язык Пример
.NET linuxFxVersion="DOTNETCORE|3.0"
PHP linuxFxVersion="PHP|7.4"
Node.js linuxFxVersion="NODE|10.15"
Java linuxFxVersion="JAVA|1.8 |TOMCAT|9.0"
Python linuxFxVersion="PYTHON|3.7"

Выполните следующие команды, чтобы развернуть приложение .NET в контейнере Windows.

az group create --name myResourceGroup --location "southcentralus"

az deployment group create --resource-group myResourceGroup \
--parameters webAppName="<app-name>" \
--template-uri "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.web/app-service-docs-windows-container/azuredeploy.json"

Примечание.

Дополнительные примеры шаблонов Службы приложений Azure можно найти здесь.

Проверка развертывания

Перейдите к http://<app_name>.azurewebsites.net/ и убедитесь, что оно создано.

Screenshot of the Windows code experience.

Screenshot of the Linux experience.

Screenshot of the Windows container experience.

Очистка ресурсов

Удалите группу ресурсов, если она больше не нужна.

Следующие шаги