Guida introduttiva: Creare un'app servizio app usando un modello di Resource Manager

Introduzione al servizio app Azure distribuendo un'app nel cloud usando un modello di Azure Resource Manager e l'interfaccia della riga di comando di Azure in Cloud Shell. Il modello di Resource Manager è un file JSON (JavaScript Object Notation) che definisce l'infrastruttura e la configurazione del progetto. Non sono previsti costi per completare questa guida introduttiva perché si usa un livello di servizio app gratuito.

Per completare questa guida introduttiva, è necessario un account Azure con una sottoscrizione attiva. Se non si ha un account Azure, è possibile crearne uno gratuitamente.

Vai alla fine

Se si ha familiarità con l'uso dei modelli arm, è possibile passare alla fine selezionando questo Button to deploy the Resource Manager template to Azure. pulsante. Questo pulsante apre il modello di Resource Manager nella portale di Azure.

Screenshot of the ARM Template in the Azure portal.

Nella portale di Azure selezionare Crea nuovo per creare un nuovo gruppo di risorse e quindi selezionare il pulsante Rivedi e crea per distribuire l'app.

Introduzione al servizio app Azure distribuendo un'app nel cloud usando un modello di Azure Resource Manager e l'interfaccia della riga di comando di Azure in Cloud Shell. Il modello di Resource Manager è un file JSON (JavaScript Object Notation) che definisce l'infrastruttura e la configurazione del progetto. Non sono previsti costi per completare questa guida introduttiva perché si usa un livello di servizio app gratuito.

Per completare questa guida introduttiva, è necessario un account Azure con una sottoscrizione attiva. Se non si ha un account Azure, è possibile crearne uno gratuitamente.

Vai alla fine

Se si ha familiarità con l'uso dei modelli arm, è possibile passare alla fine selezionando questo Button to deploy the Resource Manager template to Azure. pulsante. Questo pulsante apre il modello di Resource Manager nella portale di Azure.

Screenshot of the ARM Template in the Azure portal.

Nella portale di Azure selezionare Crea nuovo per creare un nuovo gruppo di risorse e quindi selezionare il pulsante Rivedi e crea per distribuire l'app.

Introduzione al servizio app Azure distribuendo un'app nel cloud usando un modello di Azure Resource Manager e l'interfaccia della riga di comando di Azure in Cloud Shell. Il modello di Resource Manager è un file JSON (JavaScript Object Notation) che definisce l'infrastruttura e la configurazione del progetto. Per distribuire un'app contenitore di Windows è necessario un piano Premium. Per informazioni dettagliate sui prezzi, vedere la pagina dei prezzi servizio app.

Vai alla fine

Se si ha familiarità con l'uso dei modelli arm, è possibile passare alla fine selezionando questo Button to deploy the Resource Manager template to Azure. pulsante. Questo pulsante apre il modello di Resource Manager nella portale di Azure.

Screenshot of the ARM Template in the Azure portal.

Nella portale di Azure selezionare Crea nuovo per creare un nuovo gruppo di risorse e quindi selezionare il pulsante Rivedi e crea per distribuire l'app.

Rivedere il modello

Il modello usato in questo avvio rapido proviene dai modelli di avvio rapido di Azure. Distribuisce un piano di servizio app e un'app del servizio app in Windows. È compatibile con le app .NET Core, .NET Framework, PHP, Node.js e HTML statiche. Per Java, vedere Creare un'app 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'))]"
      ]
    }
  ]
}

Nel modello sono definite due risorse di Azure:

Questo modello contiene diversi parametri predefiniti per praticità. Vedere la tabella per le impostazioni predefinite dei parametri e le relative descrizioni:

Parametri Type Valore predefinito Descrizione
webAppName string webApp-<uniqueString> Nome dell'app basato su un valore stringa univoco
appServicePlanName string webAppPlan-<uniqueString> servizio app Nome piano basato su un valore stringa univoco
posizione string [resourceGroup().location] Area dell'app
sku string F1 Dimensione delle istanze (F1 = livello gratuito)
lingua string .NET Stack del linguaggio di programmazione (.NET, php, node, html)
helloWorld boolean False True = distribuire l'app "Hello World
repoUrl string Repository Git esterno (facoltativo)

Il modello usato in questo avvio rapido proviene dai modelli di avvio rapido di Azure. Distribuisce un piano di servizio app e un'app del servizio app in Linux. È compatibile con tutti i linguaggi di programmazione supportati nel servizio app.

{
  "$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'))]"
      ]
    }
  ]
}

Nel modello sono definite due risorse di Azure:

Questo modello contiene diversi parametri predefiniti per praticità. Vedere la tabella per le impostazioni predefinite dei parametri e le relative descrizioni:

Parametri Type Valore predefinito Descrizione
webAppName string webApp-<uniqueString> Nome dell'app basato su un valore stringa univoco
appServicePlanName string webAppPlan-<uniqueString> servizio app Nome piano basato su un valore stringa univoco
posizione string [resourceGroup().location] Area dell'app
sku string F1 Dimensione delle istanze (F1 = livello gratuito)
linuxFxVersion string DOTNETCORE|3.0 "Stack del linguaggio di programmazione | Versione"
repoUrl string Repository Git esterno (facoltativo)

Il modello usato in questo avvio rapido proviene dai modelli di avvio rapido di Azure. Distribuisce un piano di servizio app e un'app servizio app in un contenitore di 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
      }
    }
  ]
}

Nel modello sono definite due risorse di Azure:

Questo modello contiene diversi parametri predefiniti per praticità. Vedere la tabella per le impostazioni predefinite dei parametri e le relative descrizioni:

Parametri Type Valore predefinito Descrizione
webAppName string webApp-<uniqueString> Nome dell'app basato su un valore stringa univoco
appServicePlanName string webAppPlan-<uniqueString> servizio app Nome piano basato su un valore stringa univoco
posizione string [resourceGroup().location] Area dell'app
skuTier string P1v3 Dimensioni dell'istanza (visualizzare gli SKU disponibili)
appSettings string [{"name": "PORT","value": "8080"}] servizio app porta di ascolto. Deve essere 8080.
kind string windows Sistema operativo
hyperv string true Modalità di isolamento
windowsFxVersion string DOCKER|mcr.microsoft.com/dotnet/samples:aspnetapp Immagine del contenitore

Distribuire il modello

In questo caso per distribuire il modello viene usata l'interfaccia della riga di comando di Azure. È anche possibile usare il portale di Azure, Azure PowerShell e l'API REST. Per informazioni sugli altri metodi di distribuzione, vedere Distribuire modelli.

Il codice seguente crea un gruppo di risorse, un piano di servizio app e un'app Web. Sono stati impostati automaticamente un gruppo di risorse, un piano di servizio app e una posizione predefiniti. Sostituire <app-name> con un nome di app univoco globale (i caratteri validi sono a-z, 0-9 e -).

Eseguire i comandi seguenti per distribuire un'app .NET Framework in 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"

Eseguire i comandi seguenti per creare un'app Python in 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"

Per distribuire uno stack di linguaggio diverso, aggiornare linuxFxVersion con i valori appropriati. Nella tabella sono visualizzati esempi. Per visualizzare le versioni correnti, eseguire questo comando in Cloud Shell: az webapp config show --resource-group myResourceGroup --name <app-name> --query linuxFxVersion

Lingua Esempio
.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"

Eseguire i comandi seguenti per distribuire un'app .NET in un contenitore di 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"

Nota

È possibile trovare altri esempi di modelli del Servizio app di Azure qui.

Convalidare la distribuzione

Passare a http://<app_name>.azurewebsites.net/ e verificare che la creazione sia stata completata.

Screenshot of the Windows code experience.

Screenshot of the Linux experience.

Screenshot of the Windows container experience.

Pulire le risorse

Quando non è più necessario, eliminare il gruppo di risorse.

Passaggi successivi