Condividi tramite


Avvio rapido: Creare un'app Java nel Servizio app di Azure

In questa guida introduttiva si userà il plug-in Maven per app Web del Servizio app di Azure per distribuire un'applicazione Web Java in un server Tomcat Linux nel Servizio app di Azure. Il Servizio app offre un servizio di hosting di app Web con scalabilità elevata e con applicazione automatica delle patch. Usare le schede per spostarsi tra le istruzioni per Tomcat, JBoss o il server incorporato (Java SE).

Screenshot dell'app Web Hello World Maven in esecuzione nel Servizio app di Azure.

Se Maven non è lo strumento di sviluppo preferito, vedere le esercitazioni simili per sviluppatori Java:

Se non si ha una sottoscrizione di Azure, creare un account Azure gratuito prima di iniziare.

1 - Usare Azure Cloud Shell

Azure Cloud Shell è un ambiente di shell interattivo ospitato in Azure e usato tramite il browser. È possibile usare Bash o PowerShell con Cloud Shell per usare i servizi di Azure. È possibile usare i comandi preinstallati di Cloud Shell per eseguire il codice contenuto in questo articolo senza dover installare strumenti nell'ambiente locale.

Per avviare Azure Cloud Shell:

Opzione Esempio/Collegamento
Selezionare Prova nell'angolo superiore destro di un blocco di codice o di comando. Quando si seleziona Prova, il codice o il comando non viene copiato automaticamente in Cloud Shell. Screenshot che mostra un 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. Pulsante per avviare Azure Cloud Shell.
Selezionare il pulsante Cloud Shell nella barra dei menu nell'angolo in alto a destra del portale di Azure. Screenshot che mostra il pulsante Cloud Shell nel portale di Azure

Per usare Azure Cloud Shell:

  1. Avviare Cloud Shell.

  2. Selezionare il pulsante Copia in un blocco di codice (o in un blocco di comando) per copiare il codice o il comando.

  3. Incollare il codice o il comando nella sessione di Cloud Shell selezionando CTRL+MAIUSC+V in Windows e Linux o selezionando CMD+MAIUSC+V in macOS.

  4. Premere Invio per eseguire il codice o il comando.

2 - Creare un'app Java

Eseguire il comando Maven seguente nel prompt di Cloud Shell per creare una nuova app denominata helloworld:

mvn archetype:generate "-DgroupId=example.demo" "-DartifactId=helloworld" "-DarchetypeArtifactId=maven-archetype-webapp" "-DarchetypeVersion=1.4" "-Dversion=1.0-SNAPSHOT"

Passare quindi dalla directory di lavoro alla cartella del progetto:

cd helloworld

3 - Configurare il plug-in Maven

Il processo di distribuzione nel Servizio app di Azure usa automaticamente le credenziali di Azure dall'interfaccia della riga di comando di Azure. Se l'interfaccia della riga di comando di Azure non è installata in locale, il plug-in Maven esegue l'autenticazione con OAuth o con l'accesso del dispositivo. Per altre informazioni, vedere Autenticazione con i plug-in Maven.

Eseguire il comando Maven mostrato di seguito per configurare la distribuzione. Questo comando consente di configurare il sistema operativo del Servizio app, la versione di Java e la versione di Tomcat.

mvn com.microsoft.azure:azure-webapp-maven-plugin:2.12.0:config
  1. Per Create new run configuration digitare Y, quindi premere INVIO.

  2. Per Define value for OS digitare 1 per Windows o 2 per Linux, quindi premere INVIO.

  3. Per Define value for javaVersion digitare 3 per Java 17, quindi premere INVIO.

  4. Per Define value for webContainer digitare 1 per Tomcat 10.0, quindi premere INVIO.

  5. Per Define value for pricingTier digitare 9 per P1v2, quindi premere INVIO.

  6. Per Confirm digitare Y, quindi premere INVIO.

    Please confirm webapp properties
    AppName : helloworld-1690440759246
    ResourceGroup : helloworld-1690440759246-rg
    Region : centralus
    PricingTier : P1v2
    OS : Linux
    Java Version: Java 17
    Web server stack: Tomcat 10.0
    Deploy to slot : false
    Confirm (Y/N) [Y]: 
    [INFO] Saving configuration to pom.
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  13.069 s
    [INFO] Finished at: 2023-07-27T06:52:48Z
    [INFO] ------------------------------------------------------------------------
    

Dopo che le scelte sono state confermate, il plug-in aggiunge l'elemento plug-in precedente e le impostazioni necessarie al file pom.xml del progetto che configura l'app Web per l'esecuzione in Servizio app di Azure.

La parte pertinente del file pom.xml dovrebbe essere simile all'esempio seguente.

<build>
    <plugins>
        <plugin>
            <groupId>com.microsoft.azure</groupId>
            <artifactId>>azure-webapp-maven-plugin</artifactId>
            <version>x.xx.x</version>
            <configuration>
                <schemaVersion>v2</schemaVersion>
                <resourceGroup>your-resourcegroup-name</resourceGroup>
                <appName>your-app-name</appName>
            ...
            </configuration>
        </plugin>
    </plugins>
</build>           

È possibile modificare le configurazioni per il Servizio app direttamente nel file pom.xml. Alcune configurazioni comuni sono elencate nella tabella seguente:

Proprietà Richiesto Descrizione Versione
<schemaVersion> false Specificare la versione dello schema di configurazione. I valori supportati sono: v1, v2. 1.5.2
<subscriptionId> false Specifica l'ID sottoscrizione. 0.1.0+
<resourceGroup> true Gruppo di risorse di Azure per App Web. 0.1.0+
<appName> true Nome dell'App Web. 0.1.0+
<region> false Specifica l'area in cui ospitare l'app Web. Il valore predefinito è centralus. Le aree valide sono disponibili nella sezione Aree supportate. 0.1.0+
<pricingTier> false Il piano tariffario per l'App Web. Il valore predefinito è P1v2 per il carico di lavoro di produzione, mentre B2 è il valore minimo consigliato per le attività di sviluppo/test Java. Per altre informazioni, vedere Prezzi del Servizio app 0.1.0+
<runtime> false Configurazione dell'ambiente di runtime. Per altre informazioni, vedere Dettagli della configurazione. 0.1.0+
<deployment> false Configurazione della distribuzione. Per altre informazioni, vedere Dettagli della configurazione. 0.1.0+

Per l'elenco completo delle configurazioni, vedere la documentazione di riferimento sul plug-in. Tutti i plug-in Azure Maven condividono un set comune di configurazioni. Per informazioni, vedere Configurazioni comuni. Per le configurazioni specifiche del servizio app, vedere App Web di Azure: dettagli sulla configurazione.

Prestare attenzione ai valori di <appName> e <resourceGroup> (quindi di helloworld-1690440759246 e helloworld-1690440759246-rg nella demo). Vengono usati in un secondo momento.

4 - Distribuire l'app

Quando tutta la configurazione è pronta nel file pom.xml, è possibile distribuire l'app Java in Azure con un unico comando.

mvn package azure-webapp:deploy

Al termine della distribuzione, l'applicazione è pronta all'indirizzo http://<appName>.azurewebsites.net/ (http://helloworld-1690440759246.azurewebsites.net nella demo). Aprire l'URL con il Web browser locale. Si dovrebbe vedere

Screenshot dell'app Web Hello World Maven in esecuzione nel Servizio app di Azure.

Complimenti. La distribuzione della prima app Java nel servizio app è stata completata.

5 - Eseguire la pulizia delle risorse

Nei passaggi precedenti sono state create risorse di Azure in un gruppo di risorse. Se queste risorse non saranno necessarie in futuro, eliminare il gruppo di risorse dal portale oppure eseguire questo comando in Cloud Shell:

az group delete --name <your resource group name; for example: helloworld-1690440759246-rg> --yes

L'esecuzione del comando può richiedere un minuto.

In questa guida introduttiva si usa il plug-in Maven per app Web del Servizio app di Azure per distribuire un'applicazione Web Java con un server incorporato nel Servizio app di Azure. Il Servizio app offre un servizio di hosting di app Web con scalabilità elevata e con applicazione automatica delle patch. Usare le schede per spostarsi tra le istruzioni per Tomcat, JBoss o il server incorporato (Java SE).

La guida introduttiva distribuisce un'app Spring Boot, un'app Tomcat incorporata o un'app Quarkus usando il plug-in azure-webapp-maven-plugin.

Nota

Il Servizio app può ospitare app Spring. Per le app Spring che richiedono tutti i servizi Spring, provare invece Azure Spring Apps.

Se Maven non è lo strumento di sviluppo preferito, vedere le esercitazioni simili per sviluppatori Java:

Se non si ha una sottoscrizione di Azure, creare un account Azure gratuito prima di iniziare.

1 - Usare Azure Cloud Shell

Azure Cloud Shell è un ambiente di shell interattivo ospitato in Azure e usato tramite il browser. È possibile usare Bash o PowerShell con Cloud Shell per usare i servizi di Azure. È possibile usare i comandi preinstallati di Cloud Shell per eseguire il codice contenuto in questo articolo senza dover installare strumenti nell'ambiente locale.

Per avviare Azure Cloud Shell:

Opzione Esempio/Collegamento
Selezionare Prova nell'angolo superiore destro di un blocco di codice o di comando. Quando si seleziona Prova, il codice o il comando non viene copiato automaticamente in Cloud Shell. Screenshot che mostra un 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. Pulsante per avviare Azure Cloud Shell.
Selezionare il pulsante Cloud Shell nella barra dei menu nell'angolo in alto a destra del portale di Azure. Screenshot che mostra il pulsante Cloud Shell nel portale di Azure

Per usare Azure Cloud Shell:

  1. Avviare Cloud Shell.

  2. Selezionare il pulsante Copia in un blocco di codice (o in un blocco di comando) per copiare il codice o il comando.

  3. Incollare il codice o il comando nella sessione di Cloud Shell selezionando CTRL+MAIUSC+V in Windows e Linux o selezionando CMD+MAIUSC+V in macOS.

  4. Premere Invio per eseguire il codice o il comando.

2 - Ottenere l'app di esempio

  1. Scaricare ed estrarre il modello di applicazione Web Spring Boot predefinito. Questo repository viene clonato automaticamente quando si esegue in Spring CLI il comando spring boot new my-webapp.

    git clone https://github.com/rd-1-2022/rest-service my-webapp
    
  2. Modificare la directory di lavoro nella cartella del progetto:

    cd my-webapp
    

3 - Configurare il plug-in Maven

Il processo di distribuzione nel Servizio app di Azure usa automaticamente le credenziali di Azure dall'interfaccia della riga di comando di Azure. Se l'interfaccia della riga di comando di Azure non è installata in locale, il plug-in Maven esegue l'autenticazione con OAuth o con l'accesso del dispositivo. Per altre informazioni, vedere Autenticazione con i plug-in Maven.

Eseguire il comando Maven mostrato di seguito per configurare la distribuzione. Questo comando consente di configurare il sistema operativo del Servizio app, la versione di Java e la versione di Tomcat.

mvn com.microsoft.azure:azure-webapp-maven-plugin:2.13.0:config
  1. Per Create new run configuration digitare Y, quindi premere INVIO.

  2. Per Define value for OS digitare 2 per Linux, quindi premere INVIO.

  3. Per Define value for javaVersion digitare 1 per Java 17, quindi premere INVIO.

  4. Per Define value for pricingTier digitare 9 per P1v2, quindi premere INVIO.

  5. Per Confirm digitare Y, quindi premere INVIO.

    Please confirm webapp properties
    AppName : <generated-app-name>
    ResourceGroup : <generated-app-name>-rg
    Region : centralus
    PricingTier : P1v2
    OS : Linux
    Java Version: Java 17
    Web server stack: Java SE
    Deploy to slot : false
    Confirm (Y/N) [Y]: y
    [INFO] Saving configuration to pom.
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  8.139 s
    [INFO] Finished at: 2023-07-26T12:42:48Z
    [INFO] ------------------------------------------------------------------------
    

Dopo la conferma delle opzioni scelte, il plug-in aggiunge l'elemento plug-in precedente e le impostazioni necessarie al file pom.xml del progetto che configura l'app Web per l'esecuzione nel Servizio app di Azure.

La parte pertinente del file pom.xml dovrebbe essere simile all'esempio seguente.

<build>
    <plugins>
        <plugin>
            <groupId>com.microsoft.azure</groupId>
            <artifactId>>azure-webapp-maven-plugin</artifactId>
            <version>x.xx.x</version>
            <configuration>
                <schemaVersion>v2</schemaVersion>
                <resourceGroup>your-resourcegroup-name</resourceGroup>
                <appName>your-app-name</appName>
            ...
            </configuration>
        </plugin>
    </plugins>
</build>           

È possibile modificare le configurazioni per il Servizio app direttamente nel file pom.xml. Alcune configurazioni comuni sono elencate nella tabella seguente:

Proprietà Richiesto Descrizione Versione
<schemaVersion> false Specificare la versione dello schema di configurazione. I valori supportati sono: v1, v2. 1.5.2
<subscriptionId> false Specifica l'ID sottoscrizione. 0.1.0+
<resourceGroup> true Gruppo di risorse di Azure per App Web. 0.1.0+
<appName> true Nome dell'App Web. 0.1.0+
<region> false Specifica l'area in cui ospitare l'app Web. Il valore predefinito è centralus. Le aree valide sono disponibili nella sezione Aree supportate. 0.1.0+
<pricingTier> false Il piano tariffario per l'App Web. Il valore predefinito è P1v2 per il carico di lavoro di produzione, mentre B2 è il valore minimo consigliato per le attività di sviluppo/test Java. Per altre informazioni, vedere Prezzi del Servizio app 0.1.0+
<runtime> false Configurazione dell'ambiente di runtime. Per altre informazioni, vedere Dettagli della configurazione. 0.1.0+
<deployment> false Configurazione della distribuzione. Per altre informazioni, vedere Dettagli della configurazione. 0.1.0+

Per l'elenco completo delle configurazioni, vedere la documentazione di riferimento sul plug-in. Tutti i plug-in Azure Maven condividono un set comune di configurazioni. Per informazioni, vedere Configurazioni comuni. Per le configurazioni specifiche del servizio app, vedere App Web di Azure: dettagli sulla configurazione.

Prestare attenzione ai valori di <appName> e <resourceGroup>. Vengono usati in un secondo momento.

4 - Distribuire l'app

Quando tutta la configurazione è pronta nel file pom.xml, è possibile distribuire l'app Java in Azure con un unico comando.

  1. Compilare il file JAR usando il comando seguente:

    mvn clean package
    
  2. Eseguire la distribuzione in Azure usando il comando seguente:

    mvn azure-webapp:deploy
    

    Se la distribuzione ha esito positivo, viene visualizzato l'output seguente:

    [INFO] Successfully deployed the artifact to https://<app-name>.azurewebsites.net
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  02:20 min
    [INFO] Finished at: 2023-07-26T12:47:50Z
    [INFO] ------------------------------------------------------------------------
    

Al termine della distribuzione, l'applicazione è pronta all'indirizzo http://<appName>.azurewebsites.net/. Aprire l'URL http://<appName>.azurewebsites.net/greeting con il Web browser locale (si noti l percorso /greeting ). Dovrebbe essere visualizzato quanto segue:

Screenshot dell'app Web Hello World Spring Boot in esecuzione nel Servizio app di Azure.

Complimenti. La distribuzione della prima app Java nel Servizio app è stata completata.

5 - Eseguire la pulizia delle risorse

Nei passaggi precedenti sono state create risorse di Azure in un gruppo di risorse. Se queste risorse non saranno necessarie in futuro, eliminare il gruppo di risorse dal portale oppure eseguire questo comando in Cloud Shell:

az group delete --name <your resource group name; for example: quarkus-hello-azure-1690375364238-rg> --yes

L'esecuzione del comando può richiedere un minuto.

In questa guida introduttiva si userà il plug-in Maven per app Web del Servizio app di Azure per distribuire un'applicazione Web Java in un server JBoss EAP Linux nel Servizio app di Azure. Il Servizio app offre un servizio di hosting di app Web con scalabilità elevata e con applicazione automatica delle patch. Usare le schede per spostarsi tra le istruzioni per Tomcat, JBoss o il server incorporato (Java SE).

Screenshot dell'app Web Hello World Maven in esecuzione nel Servizio app di Azure.

Se Maven non è lo strumento di sviluppo preferito, vedere le esercitazioni simili per sviluppatori Java:

Se non si ha una sottoscrizione di Azure, creare un account Azure gratuito prima di iniziare.

1 - Usare Azure Cloud Shell

Azure Cloud Shell è un ambiente di shell interattivo ospitato in Azure e usato tramite il browser. È possibile usare Bash o PowerShell con Cloud Shell per usare i servizi di Azure. È possibile usare i comandi preinstallati di Cloud Shell per eseguire il codice contenuto in questo articolo senza dover installare strumenti nell'ambiente locale.

Per avviare Azure Cloud Shell:

Opzione Esempio/Collegamento
Selezionare Prova nell'angolo superiore destro di un blocco di codice o di comando. Quando si seleziona Prova, il codice o il comando non viene copiato automaticamente in Cloud Shell. Screenshot che mostra un 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. Pulsante per avviare Azure Cloud Shell.
Selezionare il pulsante Cloud Shell nella barra dei menu nell'angolo in alto a destra del portale di Azure. Screenshot che mostra il pulsante Cloud Shell nel portale di Azure

Per usare Azure Cloud Shell:

  1. Avviare Cloud Shell.

  2. Selezionare il pulsante Copia in un blocco di codice (o in un blocco di comando) per copiare il codice o il comando.

  3. Incollare il codice o il comando nella sessione di Cloud Shell selezionando CTRL+MAIUSC+V in Windows e Linux o selezionando CMD+MAIUSC+V in macOS.

  4. Premere Invio per eseguire il codice o il comando.

2 - Creare un'app Java

Clonare l'applicazione demo Pet Store.

git clone https://github.com/Azure-Samples/app-service-java-quickstart

Passare alla directory del progetto Pet Store completato e compilarlo.

Suggerimento

L'esempio petstore-ee7 richiede Java 11 o versione successiva. Il progetto di esempio booty-duke-app-service richiede Java 17. Se la versione installata di Java è minore di 17, eseguire la compilazione dall'interno della directory petstore-ee7 anziché al livello superiore.

cd app-service-java-quickstart
git checkout 20230308
cd petstore-ee7
mvn clean install

Se visualizzi un messaggio relativo allo stato HEAD scollegato, questo messaggio è sicuro da ignorare. Poiché non si eseguirà alcun commit Git in questa guida introduttiva, lo stato HEAD scollegato è appropriato.

3 - Configurare il plug-in Maven

Il processo di distribuzione nel Servizio app di Azure usa automaticamente le credenziali di Azure dall'interfaccia della riga di comando di Azure. Se l'interfaccia della riga di comando di Azure non è installata in locale, il plug-in Maven esegue l'autenticazione con OAuth o con l'accesso del dispositivo. Per altre informazioni, vedere Autenticazione con i plug-in Maven.

Eseguire il comando Maven mostrato di seguito per configurare la distribuzione. Questo comando consente di configurare il sistema operativo del Servizio app, la versione di Java e la versione di Tomcat.

mvn com.microsoft.azure:azure-webapp-maven-plugin:2.12.0:config
  1. Per Create new run configuration digitare Y, quindi premere INVIO.

  2. Per Define value for OS digitare 2 per Linux, quindi premere INVIO.

  3. Per Define value for javaVersion digitare 2 per Java 11, quindi premere INVIO.

  4. Per l'opzione webContainer digitare 1 per Jbosseap 7, quindi premere INVIO.

  5. Per Define value for pricingTier digitare 1 per P1v3, quindi premere INVIO.

  6. Per Confirm digitare Y, quindi premere INVIO.

    Please confirm webapp properties
    AppName : petstoreee7-1690443003536
    ResourceGroup : petstoreee7-1690443003536-rg
    Region : centralus
    PricingTier : P1v3
    OS : Linux
    Java Version: Java 11
    Web server stack: Jbosseap 7
    Deploy to slot : false
    Confirm (Y/N) [Y]: 
    [INFO] Saving configuration to pom.
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  19.914 s
    [INFO] Finished at: 2023-07-27T07:30:20Z
    [INFO] ------------------------------------------------------------------------
    

Dopo che le scelte sono state confermate, il plug-in aggiunge l'elemento plug-in precedente e le impostazioni necessarie al file pom.xml del progetto che configura l'app Web per l'esecuzione in Servizio app di Azure.

La parte pertinente del file pom.xml dovrebbe essere simile all'esempio seguente.

<build>
    <plugins>
        <plugin>
            <groupId>com.microsoft.azure</groupId>
            <artifactId>>azure-webapp-maven-plugin</artifactId>
            <version>x.xx.x</version>
            <configuration>
                <schemaVersion>v2</schemaVersion>
                <resourceGroup>your-resourcegroup-name</resourceGroup>
                <appName>your-app-name</appName>
            ...
            </configuration>
        </plugin>
    </plugins>
</build>           

È possibile modificare le configurazioni per il Servizio app direttamente nel file pom.xml. Alcune configurazioni comuni sono elencate nella tabella seguente:

Proprietà Richiesto Descrizione Versione
<schemaVersion> false Specificare la versione dello schema di configurazione. I valori supportati sono: v1, v2. 1.5.2
<subscriptionId> false Specifica l'ID sottoscrizione. 0.1.0+
<resourceGroup> true Gruppo di risorse di Azure per App Web. 0.1.0+
<appName> true Nome dell'App Web. 0.1.0+
<region> false Specifica l'area in cui ospitare l'app Web. Il valore predefinito è centralus. Le aree valide sono disponibili nella sezione Aree supportate. 0.1.0+
<pricingTier> false Il piano tariffario per l'App Web. Il valore predefinito è P1v2 per il carico di lavoro di produzione, mentre B2 è il valore minimo consigliato per le attività di sviluppo/test Java. Per altre informazioni, vedere Prezzi del Servizio app 0.1.0+
<runtime> false Configurazione dell'ambiente di runtime. Per altre informazioni, vedere Dettagli della configurazione. 0.1.0+
<deployment> false Configurazione della distribuzione. Per altre informazioni, vedere Dettagli della configurazione. 0.1.0+

Per l'elenco completo delle configurazioni, vedere la documentazione di riferimento sul plug-in. Tutti i plug-in Azure Maven condividono un set comune di configurazioni. Per informazioni, vedere Configurazioni comuni. Per le configurazioni specifiche del servizio app, vedere App Web di Azure: dettagli sulla configurazione.

Prestare attenzione ai valori di <appName> e <resourceGroup> (quindi di petstoreee7-1690443003536 e petstoreee7-1690443003536-rg nella demo). Vengono usati in un secondo momento.

4 - Distribuire l'app

Quando tutta la configurazione è pronta nel file pom.xml, è possibile distribuire l'app Java in Azure con un unico comando.

# Disable testing, as it requires Wildfly to be installed locally.
mvn package azure-webapp:deploy -DskipTests

Al termine della distribuzione, l'applicazione è pronta all'indirizzo http://<appName>.azurewebsites.net/ (http://petstoreee7-1690443003536.azurewebsites.net nella demo). Aprire l'URL con il Web browser locale. Si dovrebbe vedere

Screenshot dell'app Web Hello World Maven in esecuzione nel Servizio app di Azure.

Complimenti. La distribuzione della prima app Java nel servizio app è stata completata.

5 - Eseguire la pulizia delle risorse

Nei passaggi precedenti sono state create risorse di Azure in un gruppo di risorse. Se queste risorse non saranno necessarie in futuro, eliminare il gruppo di risorse dal portale oppure eseguire questo comando in Cloud Shell:

az group delete --name <your resource group name; for example: petstoreee7-1690443003536-rg> --yes

L'esecuzione del comando può richiedere un minuto.

Passaggi successivi