Distribuire un'app Web Java in una macchina virtuale nell'hub di Azure Stack

È possibile creare una macchina virtuale per ospitare l'app Web Java nell'hub di Azure Stack. In questo articolo si installano, si aprono le porte corrette e si configura un server Apache Tomcat in una macchina virtuale Linux nell'hub di Azure Stack. Si carica quindi un file di risorse applicazione Web Java (WAR) nel server. Un file WAR viene usato per distribuire una raccolta di file di archivio Java (JAR), file compressi che contengono risorse Java, ad esempio classi, testo, immagini, XML e HTML e altre risorse usate per distribuire un'applicazione Web.

Creare una VM

  1. Configurare la macchina virtuale nell'hub di Azure Stack seguendo le istruzioni riportate in Distribuire una macchina virtuale Linux per ospitare un'app Web nell'hub di Azure Stack.

  2. Nel riquadro rete vm assicurarsi che le porte seguenti siano accessibili:

    Porta Protocollo Descrizione
    80 HTTP Hypertext Transfer Protocol (HTTP) è il protocollo usato per distribuire pagine Web dai server. I client si connettono tramite HTTP con un nome DNS o un indirizzo IP.
    443 HTTPS Hypertext Transfer Protocol Secure (HTTPS) è una versione sicura di HTTP che richiede un certificato di sicurezza e consente la trasmissione crittografata di informazioni.
    22 SSH Secure Shell (SSH) è un protocollo di rete crittografato per le comunicazioni sicure. Questa connessione viene usata con un client SSH per configurare la macchina virtuale e distribuire l'app.
    3389 RDP Facoltativa. Remote Desktop Protocol (RDP) consente una connessione desktop remoto per usare un'interfaccia utente grafica nel computer.
    8080 Personalizzato Porta predefinita per il servizio Apache Tomcat. Per un server di produzione, si instrada il traffico attraverso 80 e 443.

Installare Java

  1. Connettersi alla macchina virtuale usando il client SSH. Per istruzioni, vedere Connettersi tramite SSH con PuTTY.

  2. Al prompt di bash nella macchina virtuale eseguire il comando seguente:

        sudo apt-get install default-jdk
    
  3. Convalidare l'installazione. Ancora connessi alla macchina virtuale nella sessione SSH, eseguire il comando seguente:

        java -version
    

Installare e configurare Tomcat

  1. Connettersi alla macchina virtuale usando il client SSH. Per istruzioni, vedere Connettersi tramite SSH con PuTTY.

  2. Creare un utente Tomcat eseguendo le operazioni seguenti:

    a. Creare un nuovo gruppo Tomcat eseguendo il comando seguente:

        sudo groupadd tomcat
    

    b. Creare un nuovo utente Tomcat. Aggiungere questo utente al gruppo Tomcat con una home directory di /opt/tomcat. Si distribuisce Tomcat in questa directory:

        sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat
    
  3. Installare Tomcat eseguendo le operazioni seguenti:

    a. Ottenere l'URL per il tar per la versione più recente di Tomcat 8 dalla pagina di download di Tomcat 8.

    b. Usare cURL per scaricare la versione più recente usando il collegamento. Eseguire i comandi seguenti:

        cd /tmp 
        curl -O <URL for the tar for the latest version of Tomcat 8>
    

    c. Installare Tomcat nella directory /opt/tomcat . Creare la cartella e quindi aprire l'archivio:

        sudo mkdir /opt/tomcat
        sudo tar xzvf apache-tomcat-8*tar.gz -C /opt/tomcat --strip-components=1
        sudo chown -R tomcat webapps/ work/ temp/ logs/
    
  4. Aggiornare le autorizzazioni per Tomcat eseguendo i comandi seguenti:

        sudo chgrp -R tomcat /opt/tomcat
        sudo chmod -R g+r conf
        sudo chmod g+x conf
    
  5. Creare un file di servizio systemd , in modo che sia possibile eseguire Tomcat come servizio.

    a. Tomcat deve sapere dove è stato installato Java. Questo percorso viene comunemente definito JAVA_HOME. Trovare la posizione eseguendo:

        sudo update-java-alternatives -l
    

    In questo modo viene generato un elemento simile al seguente:

        Output
        java-1.8.0-openjdk-amd64       1081       /usr/lib/jvm/java-1.8.0-openjdk-amd64
    

    È possibile costruire il valore della variabile JAVA_HOME prendendo il percorso dall'output e aggiungendo /jre. Ad esempio, usando l'esempio precedente, /usr/lib/jvm/java-1.8.0-openjdk-amd64/jre.

    b. Usare il valore del server per creare il file del servizio systemd:

        sudo nano /etc/systemd/system/tomcat.service
    

    c. Incollare il contenuto seguente nel file del servizio. Modificare il valore di JAVA_HOME, se necessario, per corrispondere al valore trovato nel sistema. È anche possibile modificare le impostazioni di allocazione della memoria specificate in CATALINA_OPTS:

        [Unit]
        Description=Apache Tomcat Web Application Container
        After=network.target
    
        [Service]
        Type=forking
    
        Environment=JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre
        Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
        Environment=CATALINA_HOME=/opt/tomcat
        Environment=CATALINA_BASE=/opt/tomcat
        Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
        Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'
    
        ExecStart=/opt/tomcat/bin/startup.sh
        ExecStop=/opt/tomcat/bin/shutdown.sh
    
        User=tomcat
        Group=tomcat
        UMask=0007
        RestartSec=10
        Restart=always
    
        [Install]
        WantedBy=multi-user.target
    

    d. Salvare e chiudere il file.

    e. Ricaricare il daemon systemd in modo che conosca il file di servizio:

        sudo systemctl daemon-reload
    

    f. Avviare il servizio Tomcat:

        sudo systemctl start tomcat
    

    g. Verificare che sia stato avviato senza errori immettendo:

        sudo systemctl status tomcat
    
  6. Verificare il server Tomcat. Tomcat usa la porta 8080 per accettare richieste convenzionali. Consentire il traffico a tale porta eseguendo il comando seguente:

        sudo ufw allow 8080
    

    Se non sono state aggiunte le regole di porta in ingresso per la macchina virtuale dell'hub di Azure Stack, aggiungerle ora. Per altre informazioni, vedere Creare una macchina virtuale.

  7. Aprire un browser nella stessa rete dell'hub di Azure Stack e quindi aprire il server, yourmachine.local.cloudapp.azurestack.external:8080.

    Screenshot che mostra la pagina Apache Tomcat.

    La pagina Apache Tomcat nel server viene caricata. Successivamente, si configura il server per consentire l'accesso a Server Status, Manager App e Host Manager.

  8. Abilitare il file di servizio in modo che Tomcat venga avviato automaticamente quando si riavvia il server:

        sudo systemctl enable tomcat
    
  9. Per consentire l'accesso all'interfaccia di gestione Web, configurare il server Tomcat.

    a. Modificare il file tomcat-users.xml e definire un ruolo e un utente in modo da poter accedere. Definire l'utente per accedere manager-gui a e admin-gui.

        sudo nano /opt/tomcat/conf/tomcat-users.xml
    

    b. Aggiungere gli elementi seguenti alla <tomcat-users> sezione:

        <role rolename="tomcat"/>
        <user username="<username>" password="<password>" roles="tomcat,manager-gui,admin-gui"/>
    

    Ad esempio, il file finale potrebbe essere simile al seguente:

        <tomcat-users xmlns="http://tomcat.apache.org/xml"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
              version="1.0">
        <role rolename="tomcat"/>
        <user username="tomcatuser" password="changemepassword" roles="tomcat,manager-gui,admin-gui"/>
        </tomcat-users>
    

    c. Salvare e chiudere il file.

  10. Tomcat limita l'accesso alle app Manager e Host Manager alle connessioni provenienti dal server. Poiché si installa Tomcat in una macchina virtuale nell'hub di Azure Stack, è necessario rimuovere questa restrizione. Modificare le restrizioni relative agli indirizzi IP per queste app modificando i file dicontext.xml appropriati.

    a. Aggiornare context.xml nell'app Manager:

        sudo nano /opt/tomcat/webapps/manager/META-INF/context.xml
    

    b. Impostare come commento la restrizione dell'indirizzo IP per consentire le connessioni da qualsiasi posizione o aggiungere l'indirizzo IP del computer in uso per connettersi a Tomcat.

    <Context antiResourceLocking="false" privileged="true" >
        <!--<Valve className="org.apache.catalina.valves.RemoteAddrValve"
                allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />-->
    </Context>
    

    c. Salvare e chiudere il file.

    d. Aggiornare context.xml'app Host Manager con un aggiornamento simile:

        sudo nano /opt/tomcat/webapps/host-manager/META-INF/context.xml
    

    e. Salvare e chiudere il file.

  11. Per aggiornare il server con le modifiche, riavviare il servizio Tomcat:

        sudo systemctl restart tomcat
    
  12. Aprire un browser nella stessa rete dell'hub di Azure Stack e quindi aprire il server : yourmachine.local.cloudapp.azurestack.external:8080.

    a. Per esaminare lo stato del server Tomcat e verificare di avere accesso, selezionare Stato server.

    b. Accedere con le credenziali di Tomcat.

    Apache Tomcat in una macchina virtuale dell'hub di Azure Stack

Creare un'app

Per eseguire la distribuzione in Tomcat, è necessario creare una war. Se si vuole solo controllare l'ambiente, è possibile trovare un esempio WAR nel sito Apache Tomcat.

Per indicazioni sullo sviluppo di app Java in Azure, vedere Creare e distribuire app Java in Azure.

Distribuire ed eseguire l'app

  1. Connettersi alla macchina virtuale usando il client SSH. Per istruzioni, vedere Connettersi tramite SSH con PuTTY.

  2. Per aggiornare il server con il pacchetto dell'app, arrestare il servizio Tomcat:

        sudo systemctl stop tomcat
    
  3. Per poter scrivere nella cartella webapps, aggiungere l'utente FTP al gruppo Tomcat. L'utente FTP è l'utente definito quando si crea la macchina virtuale nell'hub di Azure Stack.

        sudo usermod -a -G tomcat <VM-user>
    
  4. Per cancellare la cartella webapps e quindi caricare war nuovo o aggiornato, connettersi alla macchina virtuale con FileZilla. Per istruzioni, vedere Connettersi a SFTP con FileZilla.

    a. Cancellare TOMCAT_HOME/app Web.

    b. Aggiungere war a TOMCAT_HOME/webapps (ad esempio , /opt/tomcat/webapps/).

  5. Tomcat espande e distribuisce automaticamente l'applicazione. È possibile visualizzarlo usando il nome DNS creato in precedenza. Ad esempio:

       http://yourmachine.local.cloudapp.azurestack.external:8080/sample
    

Passaggi successivi