Поделиться через


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

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

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

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

Если вы знакомы с использованием шаблонов ARM, можно перейти к концу, нажав эту Кнопка для развертывания шаблона Resource Manager в Azure. кнопку. Эта кнопка открывает шаблон ARM в портал Azure.

Снимок экрана: шаблон ARM в портал Azure.

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

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

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

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

Если вы знакомы с использованием шаблонов ARM, можно перейти к концу, нажав эту Кнопка для развертывания шаблона Resource Manager в Azure. кнопку. Эта кнопка открывает шаблон ARM в портал Azure.

Снимок экрана: шаблон ARM в портал Azure.

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

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

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

Если вы знакомы с использованием шаблонов ARM, можно перейти к концу, нажав эту Кнопка для развертывания шаблона Resource Manager в Azure. кнопку. Эта кнопка открывает шаблон ARM в портал Azure.

Снимок экрана: шаблон ARM в портал Azure.

В портал 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/ и убедитесь, что оно создано.

Снимок экрана: интерфейс кода Windows.

Снимок экрана: интерфейс Linux.

Снимок экрана: интерфейс контейнера Windows.

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

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

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