Creare un'app ASP.NET Core nel Servizio app in LinuxCreate an ASP.NET Core app in App Service on Linux

Nota

Questo articolo consente di distribuire un'app nel servizio app in Linux.This article deploys an app to App Service on Linux. Per la distribuzione nel servizio app in Windows, vedere Creare un'app ASP.NET Core in Azure.To deploy to App Service on Windows, see Create an ASP.NET Core app in Azure.

Il Servizio app in Linux offre un servizio di hosting Web con scalabilità elevata e funzioni di auto-correzione basato sul sistema operativo Linux.App Service on Linux provides a highly scalable, self-patching web hosting service using the Linux operating system. Questa guida introduttiva mostra come creare un'app .NET Core nel Servizio app in Linux.This quickstart shows how to create a .NET Core app on App Service on Linux. È necessario creare l'app usando l'interfaccia della riga di comando di Azure e GIT per distribuire il codice Node.js nell'app.You create the app using the Azure CLI, and you use Git to deploy the .NET Core code to the app.

App di esempio in esecuzione in Azure

È possibile seguire la procedura disponibile in questo articolo con un computer Mac, Windows o Linux.You can follow the steps in this article using a Mac, Windows, or Linux machine.

Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.If you don't have an Azure subscription, create a free account before you begin.

PrerequisitiPrerequisites

Per completare questa guida introduttiva:To complete this quickstart:

Creare l'app in localeCreate the app locally

In una finestra del terminale nel computer creare una directory denominata hellodotnetcore e passare dalla directory corrente a questa.In a terminal window on your machine, create a directory named hellodotnetcore and change the current directory to it.

mkdir hellodotnetcore
cd hellodotnetcore

Creare una nuova app .NET Core.Create a new .NET Core app.

dotnet new web

Eseguire l'app in localeRun the app locally

Eseguire l'applicazione in locale, in modo da verificare l'aspetto che assumerà dopo la distribuzione in Azure.Run the application locally so that you see how it should look when you deploy it to Azure.

Ripristinare i pacchetti NuGet ed eseguire l'app.Restore the NuGet packages and run the app.

dotnet run

Aprire un Web browser e passare all'app all'indirizzo http://localhost:5000.Open a web browser, and navigate to the app at http://localhost:5000.

Nella pagina verrà visualizzato il messaggio Hello World dell'app di esempio.You see the Hello World message from the sample app displayed in the page.

Eseguire il test con il browser

Nella finestra del terminale premere CTRL+C per uscire dal server Web.In your terminal window, press Ctrl+C to exit the web server. Inizializzare un repository Git per il progetto .NET Core.Initialize a Git repository for the .NET Core project.

git init
git add .
git commit -m "first commit"

Usare Azure Cloud ShellUse Azure Cloud Shell

Azure Cloud Shell è un ambiente di shell interattivo ospitato in Azure e usato tramite il browser.Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. È possibile usare Bash o PowerShell con Cloud Shell per usare i servizi di Azure.You can use either Bash or PowerShell with Cloud Shell to work with Azure services. È possibile usare i comandi preinstallati di Cloud Shell per eseguire il codice contenuto in questo articolo senza dover installare strumenti nell'ambiente locale.You can use the Cloud Shell preinstalled commands to run the code in this article without having to install anything on your local environment.

Per avviare Azure Cloud Shell:To start Azure Cloud Shell:

OpzioneOption Esempio/CollegamentoExample/Link
Selezionare Prova nell'angolo superiore destro di un blocco di codice.Select Try It in the upper-right corner of a code block. La selezione di Prova non comporta la copia automatica del codice in Cloud Shell.Selecting Try It doesn't automatically copy the code to Cloud Shell. Esempio di Prova per Azure Cloud Shell
Passare a https://shell.azure.com o selezionare il pulsante Avvia Cloud Shell per aprire Cloud Shell nel browser.Go to https://shell.azure.com, or select the Launch Cloud Shell button to open Cloud Shell in your browser. Avviare Cloud Shell in una nuova finestraLaunch Cloud Shell in a new window
Selezionare il pulsante Cloud Shell nella barra dei menu nell'angolo superiore destro del portale di Azure.Select the Cloud Shell button on the top-right menu bar in the Azure portal. Pulsante Cloud Shell nel portale di Azure

Per eseguire il codice di questo articolo in Azure Cloud Shell:To run the code in this article in Azure Cloud Shell:

  1. Avviare Cloud Shell.Start Cloud Shell.

  2. Selezionare il pulsante Copia in un blocco di codice per copiare il codice.Select the Copy button on a code block to copy the code.

  3. Incollare il codice nella sessione di Cloud Shell premendo CTRL+MAIUSC+V in Windows e Linux o CMD+MAIUSC+V in macOS.Paste the code into the Cloud Shell session by selecting Ctrl+Shift+V on Windows and Linux or by selecting Cmd+Shift+V on macOS.

  4. Premere INVIO per eseguire il codice.Select Enter to run the code.

Configurare un utente della distribuzioneConfigure a deployment user

FTP e l'istanza Git locale possono essere usati per la distribuzione in un'app Web tramite un utente della distribuzione.FTP and local Git can deploy to an Azure web app by using a deployment user. Dopo aver configurato l'utente della distribuzione, è possibile usarlo per tutte le distribuzioni di Azure.Once you configure your deployment user, you can use it for all your Azure deployments. Il nome utente e la password della distribuzione a livello di account sono diversi dalle credenziali della sottoscrizione di Azure.Your account-level deployment username and password are different from your Azure subscription credentials.

Per configurare l'utente della distribuzione, eseguire il comando az webapp deployment user set in Azure Cloud Shell.To configure the deployment user, run the az webapp deployment user set command in Azure Cloud Shell. Sostituire <username> e <password> con il nome utente e la password di un utente della distribuzione.Replace <username> and <password> with a deployment user username and password.

  • Il nome utente deve essere univoco in Azure e per i push Git locali non deve contenere il simbolo "@".The username must be unique within Azure, and for local Git pushes, must not contain the ‘@’ symbol.
  • La password deve essere composta da almeno otto caratteri, con due dei tre elementi seguenti: lettere, numeri e simboli.The password must be at least eight characters long, with two of the following three elements: letters, numbers, and symbols.
az webapp deployment user set --user-name <username> --password <password>

L'output JSON mostra la password come null.The JSON output shows the password as null. Se viene visualizzato un errore 'Conflict'. Details: 409, modificare il nome utente.If you get a 'Conflict'. Details: 409 error, change the username. Se viene visualizzato un errore 'Bad Request'. Details: 400, usare una password più complessa.If you get a 'Bad Request'. Details: 400 error, use a stronger password.

Registrare il nome utente e la password da usare per distribuire le app Web.Record your username and password to use to deploy your web apps.

Creare un gruppo di risorseCreate a resource group

Un gruppo di risorse è un contenitore logico in cui vengono distribuite e gestite risorse di Azure come app Web, database e account di archiviazione.A resource group is a logical container into which Azure resources like web apps, databases, and storage accounts are deployed and managed. Ad esempio, si può scegliere in un secondo momento di eliminare l'intero gruppo di risorse in un unico semplice passaggio.For example, you can choose to delete the entire resource group in one simple step later.

In Cloud Shell creare un gruppo di risorse con il comando az group create.In the Cloud Shell, create a resource group with the az group create command. L'esempio seguente crea un gruppo di risorse denominato myResourceGroup nella località West Europe.The following example creates a resource group named myResourceGroup in the West Europe location. Per visualizzare tutte le località supportate per il servizio app in Linux nel livello Basic, eseguire il comando az appservice list-locations --sku B1 --linux-workers-enabled.To see all supported locations for App Service on Linux in Basic tier, run the az appservice list-locations --sku B1 --linux-workers-enabled command.

az group create --name myResourceGroup --location "West Europe"

In genere, il gruppo di risorse e le risorse vengono create in un'area vicina alla località dell'utente.You generally create your resource group and the resources in a region near you.

Al termine del comando, un output JSON visualizza le proprietà del gruppo di risorse.When the command finishes, a JSON output shows you the resource group properties.

Creare un piano di servizio app di AzureCreate an Azure App Service plan

In Cloud Shell creare un piano di servizio app nel gruppo di risorse con il comando az appservice plan create.In the Cloud Shell, create an App Service plan in the resource group with the az appservice plan create command.

L'esempio seguente crea un piano di servizio app denominato myAppServicePlan nel piano tariffario Basic (--sku B1) e in un contenitore Linux (--is-linux).The following example creates an App Service plan named myAppServicePlan in the Basic pricing tier (--sku B1) and in a Linux container (--is-linux).

az appservice plan create --name myAppServicePlan --resource-group myResourceGroup --sku B1 --is-linux

Al termine della creazione del piano di servizio app, l'interfaccia della riga di comando di Azure visualizza informazioni simili all'esempio seguente:When the App Service plan has been created, the Azure CLI shows information similar to the following example:

{ 
  "adminSiteName": null,
  "appServicePlanName": "myAppServicePlan",
  "geoRegion": "West Europe",
  "hostingEnvironmentProfile": null,
  "id": "/subscriptions/0000-0000/resourceGroups/myResourceGroup/providers/Microsoft.Web/serverfarms/myAppServicePlan",
  "kind": "linux",
  "location": "West Europe",
  "maximumNumberOfWorkers": 1,
  "name": "myAppServicePlan",
  < JSON data removed for brevity. >
  "targetWorkerSizeId": 0,
  "type": "Microsoft.Web/serverfarms",
  "workerTierName": null
} 

Creare un'app WebCreate a web app

Creare un'app Web nel piano di servizio app myAppServicePlan.Create a web app in the myAppServicePlan App Service plan.

In Cloud Shell è possibile usare il comando az webapp create.In the Cloud Shell, you can use the az webapp create command. Nell'esempio seguente sostituire <app-name> con un nome app univoco globale. I caratteri validi sono a-z, 0-9 e -.In the following example, replace <app-name> with a globally unique app name (valid characters are a-z, 0-9, and -). Il runtime è impostato su DOTNETCORE|2.2.The runtime is set to DOTNETCORE|2.2. Per visualizzare tutti i runtime supportati, eseguire az webapp list-runtimes --linux.To see all supported runtimes, run az webapp list-runtimes --linux.

# Bash
az webapp create --resource-group myResourceGroup --plan myAppServicePlan --name <app-name> --runtime "DOTNETCORE|2.2" --deployment-local-git
# PowerShell
az --% webapp create --resource-group myResourceGroup --plan myAppServicePlan --name <app-name> --runtime "DOTNETCORE|2.2" --deployment-local-git

Dopo la creazione dell'app Web, l'interfaccia della riga di comando di Azure mostra un output simile all'esempio seguente:When the web app has been created, the Azure CLI shows output similar to the following example:

Local git is configured with url of 'https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git'
{
  "availabilityState": "Normal",
  "clientAffinityEnabled": true,
  "clientCertEnabled": false,
  "cloningInfo": null,
  "containerSize": 0,
  "dailyMemoryTimeQuota": 0,
  "defaultHostName": "<app-name>.azurewebsites.net",
  "deploymentLocalGitUrl": "https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git",
  "enabled": true,
  < JSON data removed for brevity. >
}

È stata creata un'app Web vuota in un contenitore Linux, con la distribuzione Git abilitata.You’ve created an empty web app in a Linux container, with git deployment enabled.

Nota

L'URL dell'elemento Git remoto è riportato nella proprietà deploymentLocalGitUrl, con il formato https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git.The URL of the Git remote is shown in the deploymentLocalGitUrl property, with the format https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git. Salvare questo URL, perché è necessario in un secondo momento.Save this URL as you need it later.

Passare all'app appena creata.Browse to your newly created app. Sostituire <app-name> con il nome dell'app.Replace <app-name> with your app name.

http://<app-name>.azurewebsites.net

Ecco l'aspetto che avrà la nuova app:Here is what your new app should look like:

Pagina dell'app vuota

Effettuare il push in Azure da GitPush to Azure from Git

Nella finestra del terminale locale aggiungere un'istanza remota di Azure al repository Git locale.Back in the local terminal window, add an Azure remote to your local Git repository. Sostituire <deploymentLocalGitUrl-from-create-step> con l'URL del Git remoto salvato in Creare un'app Web.Replace <deploymentLocalGitUrl-from-create-step> with the URL of the Git remote that you saved from Create a web app.

git remote add azure <deploymentLocalGitUrl-from-create-step>

Effettuare il push all'istanza remota di Azure per distribuire l'app con il comando seguente.Push to the Azure remote to deploy your app with the following command. Quando Git Credential Manager chiede le credenziali, assicurarsi di immettere quelle create in Configurare un utente della distribuzione, non quelle usate per accedere al portale di Azure.When prompted for credentials by Git Credential Manager, make sure that you enter the credentials you created in Configure a deployment user, not the credentials you use to sign in to the Azure portal.

git push azure master

L'esecuzione del comando può richiedere alcuni minuti.This command may take a few minutes to run. Durante l'esecuzione, il comando visualizza informazioni simili all'esempio seguente:While running, it displays information similar to the following example:

Counting objects: 22, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (18/18), done.
Writing objects: 100% (22/22), 51.21 KiB | 3.94 MiB/s, done.
Total 22 (delta 1), reused 0 (delta 0)
remote: Updating branch 'master'.
remote: Updating submodules.
remote: Preparing deployment for commit id '741f16d1db'.
remote: Generating deployment script.
remote: Project file path: ./hellodotnetcore.csproj
remote: Generated deployment script files
remote: Running deployment command...
remote: Handling ASP.NET Core Web Application deployment.
remote: ...............................................................................................
remote:   Restoring packages for /home/site/repository/hellodotnetcore.csproj...
remote: ....................................
remote:   Installing System.Xml.XPath 4.0.1.
remote:   Installing System.Diagnostics.Tracing 4.1.0.
remote:   Installing System.Threading.Tasks.Extensions 4.0.0.
remote:   Installing System.Reflection.Emit.ILGeneration 4.0.1.
remote:   ...
remote: Finished successfully.
remote: Running post deployment command(s)...
remote: Deployment successful.
To https://cephalin-dotnetcore.scm.azurewebsites.net/cephalin-dotnetcore.git
 * [new branch]      master -> master

Passare all'appBrowse to the app

Passare all'applicazione distribuita con il Web browser.Browse to the deployed application using your web browser.

http://<app_name>.azurewebsites.net

Il codice di esempio .NET Core è in esecuzione nel servizio app in Linux con un'immagine predefinita.The .NET Core sample code is running in App Service on Linux with a built-in image.

App di esempio in esecuzione in Azure

CongratulazioniCongratulations! La distribuzione della prima app .NET Core nel Servizio app in Linux è stata completata.You've deployed your first .NET Core app to App Service on Linux.

Aggiornare e ridistribuire il codiceUpdate and redeploy the code

Nella directory locale aprire il file Startup.cs.In the local directory, open the Startup.cs file. Apportare una piccola modifica al testo nella chiamata al metodo context.Response.WriteAsync:Make a small change to the text in the method call context.Response.WriteAsync:

await context.Response.WriteAsync("Hello Azure!");

Eseguire il commit delle modifiche in Git e quindi effettuare il push delle modifiche al codice in Azure.Commit your changes in Git, and then push the code changes to Azure.

git commit -am "updated output"
git push azure master

Al termine della distribuzione, tornare alla finestra del browser aperta nel passaggio Passare all'app e fare clic su Aggiorna.Once deployment has completed, switch back to the browser window that opened in the Browse to the app step, and hit refresh.

App di esempio aggiornata in esecuzione in Azure

Gestire la nuova app AzureManage your new Azure app

Accedere al portale di Azure per gestire l'app creata.Go to the Azure portal to manage the app you created.

Nel menu a sinistra fare clic su Servizi app e quindi sul nome dell'app Azure.From the left menu, click App Services, and then click the name of your Azure app.

Passaggio all'app di Azure nel portale

Verrà visualizzata la pagina Panoramica dell'app.You see your app's Overview page. Qui è possibile eseguire attività di gestione di base come l'esplorazione, l'arresto, l'avvio, il riavvio e l'eliminazione dell'app.Here, you can perform basic management tasks like browse, stop, start, restart, and delete.

Pagina del servizio app nel portale di Azure

Il menu a sinistra fornisce varie pagine per la configurazione dell'app.The left menu provides different pages for configuring your app.

Pulire le risorseClean up resources

Nei passaggi precedenti sono state create risorse di Azure in un gruppo di risorse.In the preceding steps, you created Azure resources in a resource group. Se si ritiene che queste risorse non saranno necessarie in futuro, eliminare il gruppo di risorse eseguendo questo comando in Cloud Shell:If you don't expect to need these resources in the future, delete the resource group by running the following command in the Cloud Shell:

az group delete --name myResourceGroup

L'esecuzione del comando può richiedere un minuto.This command may take a minute to run.

Passaggi successiviNext steps