Esercizio - Distribuire un'app Web nel servizio app di Azure

Completato

In questa unità si distribuisce l'app Web Java Tomcat nel servizio app di Azure.

Plug-in Maven per Servizio app di Azure

Microsoft fornisce Maven Plugin per Servizio app di Azure per facilitare la distribuzione delle applicazioni in Azure per gli sviluppatori Java. Usando questo plug-in, è possibile configurare e distribuire facilmente l'applicazione in Azure. Usare la procedura descritta nelle sezioni seguenti per configurare il plug-in, compilare il codice sorgente e distribuire l'app.

Configurare il plug-in Maven per Servizio app di Azure

Per configurare il plug-in Maven per il servizio app di Azure, seguire questa procedura:

  1. Iniziare la configurazione usando il comando seguente:

    mvn com.microsoft.azure:azure-webapp-maven-plugin:2.10.0:config
    
  2. Dopo aver usato il comando, alcune domande vengono visualizzate al prompt, consentendo di configurare varie opzioni. Configurare le opzioni e i valori in base alle informazioni nella tabella seguente:

    Elemento Valore di input
    Abbonamento Scegliere la sottoscrizione di Azure.
    Definire il valore per OS Linux
    Definisci valore per fascia di prezzo B1
    Definire il valore per la versione di Java Java 21
    Definire il valore per lo stack di runtime TOMCAT 10.0
    Conferma (S/N)

    Dopo aver configurato le opzioni, l'output seguente è tipico:

    mvn com.microsoft.azure:azure-webapp-maven-plugin:2.10.0:config
    [INFO] Scanning for projects...
    [INFO]
    [INFO] -------------------< com.example:simple-tomcat-app >--------------------
    [INFO] Building simple-tomcat-app 1.0-SNAPSHOT
    [INFO]   from pom.xml
    [INFO] --------------------------------[ war ]---------------------------------
    [INFO]
    [INFO] --- azure-webapp:2.10.0:config (default-cli) @ simple-tomcat-app ---
    Downloading from central: https://repo.maven.apache.org/maven2/net/minidev/json-smart/maven-metadata.xml
    Downloading from ossrh: https://oss.sonatype.org/content/repositories/snapshots/net/minidev/json-smart/maven-metadata.xml
    Downloading from shibboleth-repo: https://build.shibboleth.net/nexus/content/repositories/releases/net/minidev/json-smart/maven-metadata.xml
    Downloaded from central: https://repo.maven.apache.org/maven2/net/minidev/json-smart/maven-metadata.xml (1.3 kB at 6.3 kB/s)
    Please choose which part to config [Application]:
    * 1: Application
      2: Runtime
      3: DeploymentSlot
    Enter your choice: 1
    Define value for appName [simple-tomcat-app]: tomcatmavendemo
    Define value for resourceGroup [tomcatmavendemo-rg]: MyResourceGroup
    Define value for region [{azure.region}]: centralus
    Define value for pricingTier [B1]:
    *  1: B1
       2: B2
       3: B3
       4: D1
       5: EP1
       6: EP2
       7: EP3
       8: F1
       9: P1v2
      10: P1v3
      11: P2v2
      12: P2v3
      13: P3v2
      14: P3v3
      15: S1
      16: S2
      17: S3
      18: Y1
    Enter your choice: 1
    Please confirm webapp properties
    AppName : tomcatmavendemo
    ResourceGroup : MyResourceGroup
    Region : centralus
    PricingTier : B1
    OS : Linux
    Java Version: 21
    Web server stack: Tomcat 10.1
    Deploy to slot : false
    Confirm (Y/N) [Y]: Y
    [INFO] Saving configuration to pom.
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  01:49 min
    [INFO] Finished at: 2024-11-07T09:54:55-08:00
    [INFO] ------------------------------------------------------------------------
    
  3. Il file pom.xml contiene ora una nuova sezione nella <plugins> sezione . Per modificare il nome del gruppo di risorse, il nome dell'istanza o il percorso di distribuzione, modificare i valori negli <resourceGroup>elementi , <appName>o <region> . L'esempio seguente mostra un filepom.xml tipico:

          <!-- Azure Web App Maven Plugin -->
    <plugin>
        <groupId>com.microsoft.azure</groupId>
        <artifactId>azure-webapp-maven-plugin</artifactId>
        <version>2.10.0</version>
        <configuration>
            <resourceGroup>MyResourceGroup</resourceGroup>
            <appName>tomcatmavendemo</appName>
            <region>centralus</region>
            <pricingTier>B1</pricingTier>
            <runtime>
                <os>linux</os>
                <javaVersion>21</javaVersion>
                <webContainer>Tomcat 10.1</webContainer>
            </runtime>
            <deployment>
                <resources>
                    <resource>
                        <directory>${project.build.directory}</directory>
                        <includes>
                            <include>*.war</include>
                        </includes>
                    </resource>
                </resources>
            </deployment>
        </configuration>
    </plugin>
    

Eseguire la compilazione e la distribuzione in Servizio app di Azure

Dopo aver completato la configurazione delle impostazioni per la distribuzione nel servizio app di Azure, seguire questa procedura per compilare il codice sorgente e distribuire l'app in Servizi app di Azure:

  1. Compilare di nuovo il codice sorgente usando il comando seguente:

    mvn clean package
    
  2. Dopo la compilazione del codice sorgente, usare il comando seguente per distribuire l'applicazione:

    mvn azure-webapp:deploy
    

Al termine della distribuzione, l'output tipico è il seguente:

[INFO] Successfully deployed the artifact to https://tomcatmavendemo.azurewebsites.net
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  06:55 min
[INFO] Finished at: 2024-11-07T10:05:19-08:00
[INFO] ------------------------------------------------------------------------

Come si può notare, tale output fornisce l'URL pubblico dell'applicazione distribuita: Successfully deployed the artifact to https://tomcatmavendemo.azurewebsites.net.

Quando si passa all'applicazione, dovrebbe essere simile allo screenshot seguente:

Screenshot che mostra l'app Web distribuita in un browser.

Confermare il flusso di log

Per accedere al flusso di log, usare il comando seguente:

az webapp log tail \
    --resource-group <your-resource-group> \
    --name <your-app-name>

L'output seguente è tipico:

2024-11-07T18:14:37  Welcome, you are now connected to log-streaming service.
Starting Log Tail -n 10 of existing logs ----
/appsvctmp/volatile/logs/runtime/container.log
2024-11-07T18:06:05.3874260Z  java.base/java.lang.Thread.run(Thread.java:1583)
2024-11-07T18:06:05.5635356Z Nov 07, 2024 6:06:05 PM org.apache.coyote.AbstractProtocol stop
2024-11-07T18:06:05.5636042Z INFO: Stopping ProtocolHandler ["http-nio-127.0.0.1-80"]
2024-11-07T18:06:05.6020767Z Nov 07, 2024 6:06:05 PM org.apache.coyote.AbstractProtocol stop
2024-11-07T18:06:05.6021438Z INFO: Stopping ProtocolHandler ["http-nio-169.254.129.3-80"]
2024-11-07T18:06:05.6423756Z Nov 07, 2024 6:06:05 PM org.apache.coyote.AbstractProtocol destroy
2024-11-07T18:06:05.6424403Z INFO: Destroying ProtocolHandler ["http-nio-127.0.0.1-80"]
2024-11-07T18:06:05.6893602Z Nov 07, 2024 6:06:05 PM org.apache.coyote.AbstractProtocol destroy
2024-11-07T18:06:05.6894311Z INFO: Destroying ProtocolHandler ["http-nio-169.254.129.3-80"]
2024-11-07T18:06:05.7849816Z Done processing signal SIGTERM. Exiting now!
Ending Log Tail of existing logs ---
Starting Live Log Stream ---

Riepilogo dell'esercizio

In questa unità si è appreso come creare un'app Web Tomcat usando Maven. Si è anche appreso come creare un servlet e come funziona. Successivamente, hai distribuito la tua app Web in locale usando Tomcat. Infine, è stata distribuita su Azure App Service affinché chiunque nel mondo vi possa accedere.