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
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.
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
Connettersi alla macchina virtuale usando il client SSH. Per istruzioni, vedere Connettersi tramite SSH con PuTTY.
Al prompt di bash nella macchina virtuale eseguire il comando seguente:
sudo apt-get install default-jdk
Convalidare l'installazione. Ancora connessi alla macchina virtuale nella sessione SSH, eseguire il comando seguente:
java -version
Installare e configurare Tomcat
Connettersi alla macchina virtuale usando il client SSH. Per istruzioni, vedere Connettersi tramite SSH con PuTTY.
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
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/
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
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
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.
Aprire un browser nella stessa rete dell'hub di Azure Stack e quindi aprire il server, yourmachine.local.cloudapp.azurestack.external:8080.
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.
Abilitare il file di servizio in modo che Tomcat venga avviato automaticamente quando si riavvia il server:
sudo systemctl enable tomcat
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 eadmin-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.
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.
Per aggiornare il server con le modifiche, riavviare il servizio Tomcat:
sudo systemctl restart tomcat
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.
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
Connettersi alla macchina virtuale usando il client SSH. Per istruzioni, vedere Connettersi tramite SSH con PuTTY.
Per aggiornare il server con il pacchetto dell'app, arrestare il servizio Tomcat:
sudo systemctl stop tomcat
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>
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/).
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
- Altre informazioni su come sviluppare per l'hub di Azure Stack.
- Informazioni sulle distribuzioni comuni per l'hub di Azure Stack come IaaS.
- Per informazioni sul linguaggio di programmazione Java e trovare risorse aggiuntive per Java, vedere Java.com.