Een Java-web-app implementeren op een VM in Azure Stack Hub

U kunt een virtuele machine (VM) maken om uw Java-web-app te hosten in Azure Stack Hub. In dit artikel installeert u de juiste poorten en configureert u een Apache Tomcat-server op een Virtuele Linux-machine in Azure Stack Hub. Vervolgens laadt u een WAR-bestand (Java Web Application Resource) op de server. Een WAR-bestand wordt gebruikt om een verzameling JAVA-archiefbestanden (JAR)-bestanden te distribueren, gecomprimeerde bestanden die Java-resources bevatten, zoals klassen, tekst, afbeeldingen, XML en HTML, en andere resources die worden gebruikt om een webtoepassing te leveren.

Een virtuele machine maken

  1. Stel uw VM in Azure Stack Hub in door de instructies te volgen in Een Virtuele Linux-machine implementeren om een web-app te hosten in Azure Stack Hub.

  2. Controleer in het deelvenster VM-netwerk of de volgende poorten toegankelijk zijn:

    Poort Protocol Beschrijving
    80 HTTP Hypertext Transfer Protocol (HTTP) is het protocol dat wordt gebruikt om webpagina's van servers te leveren. Clients maken verbinding via HTTP met een DNS-naam of IP-adres.
    443 HTTPS Hypertext Transfer Protocol Secure (HTTPS) is een beveiligde versie van HTTP waarvoor een beveiligingscertificaat is vereist en waarmee de versleutelde overdracht van informatie mogelijk is.
    22 SSH Secure Shell (SSH) is een versleuteld netwerkprotocol voor beveiligde communicatie. U gebruikt deze verbinding met een SSH-client om de VM te configureren en de app te implementeren.
    3389 RDP Optioneel. Met Remote Desktop Protocol (RDP) kan een externe bureaubladverbinding een grafische gebruikersinterface op uw computer gebruiken.
    8080 Aangepast telefoonnummer De standaardpoort voor de Apache Tomcat-service. Voor een productieserver routeert u uw verkeer via 80 en 443.

Java installeren

  1. Verbinding maken naar uw VIRTUELE machine met behulp van uw SSH-client. Zie Verbinding maken via SSH met PuTTY voor instructies.

  2. Voer bij de bash-prompt op uw VIRTUELE machine de volgende opdracht uit:

        sudo apt-get install default-jdk
    
  3. Valideer de installatie. Voer de volgende opdracht uit om nog steeds verbinding te maken met uw VIRTUELE machine in uw SSH-sessie:

        java -version
    

Tomcat installeren en configureren

  1. Verbinding maken naar uw VIRTUELE machine met behulp van uw SSH-client. Zie Verbinding maken via SSH met PuTTY voor instructies.

  2. Maak een Tomcat-gebruiker door het volgende te doen:

    a. Maak een nieuwe Tomcat-groep door de volgende opdracht uit te voeren:

        sudo groupadd tomcat
    

    b. Maak een nieuwe Tomcat-gebruiker. Voeg deze gebruiker toe aan de Tomcat-groep met een basismap van /opt/tomcat. U implementeert Tomcat in deze map:

        sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat
    
  3. Installeer Tomcat als volgt:

    a. Haal de URL voor de tar op voor de nieuwste versie van Tomcat 8 vanaf de downloadpagina van Tomcat 8.

    b. Gebruik cURL om de nieuwste versie te downloaden met behulp van de koppeling. Voer de volgende opdrachten uit:

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

    c. Installeer Tomcat in de map /opt/tomcat . Maak de map en open het archief:

        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. Werk de machtigingen voor Tomcat bij door de volgende opdrachten uit te voeren:

        sudo chgrp -R tomcat /opt/tomcat
        sudo chmod -R g+r conf
        sudo chmod g+x conf
    
  5. Maak een systeemservicebestand , zodat u Tomcat als een service kunt uitvoeren.

    a. Tomcat moet weten waar u Java hebt geïnstalleerd. Dit pad wordt meestal aangeduid als JAVA_HOME. Zoek de locatie door het volgende uit te voeren:

        sudo update-java-alternatives -l
    

    Dit produceert ongeveer als volgt:

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

    U kunt de JAVA_HOME variabele waarde maken door het pad uit de uitvoer te nemen en /jre toe te voegen. Gebruik bijvoorbeeld het voorgaande voorbeeld /usr/lib/jvm/java-1.8.0-openjdk-amd64/jre.

    b. Gebruik de waarde van uw server om het systeemservicebestand te maken:

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

    c. Plak de volgende inhoud in uw servicebestand. Wijzig zo nodig de waarde van JAVA_HOME zodat deze overeenkomt met de waarde die u op uw systeem hebt gevonden. Mogelijk wilt u ook de instellingen voor geheugentoewijzing wijzigen die zijn opgegeven 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. Sla het bestand op en sluit het.

    e. Laad de systemd daemon opnieuw zodat deze weet van uw servicebestand:

        sudo systemctl daemon-reload
    

    f. Start de Tomcat-service:

        sudo systemctl start tomcat
    

    g. Controleer of deze is gestart zonder fouten door het volgende in te voeren:

        sudo systemctl status tomcat
    
  6. Controleer de Tomcat-server. Tomcat gebruikt poort 8080 om conventionele aanvragen te accepteren. Sta verkeer naar die poort toe door de volgende opdracht uit te voeren:

        sudo ufw allow 8080
    

    Als u de regels voor binnenkomende poorten voor uw Azure Stack Hub-VM nog niet hebt toegevoegd, voegt u deze nu toe. Zie Een virtuele machine maken voor meer informatie.

  7. Open een browser in hetzelfde netwerk als uw Azure Stack Hub en open vervolgens uw server, yourmachine.local.cloudapp.azurestack.external:8080.

    Screenshot that shows the Apache Tomcat page.

    De Pagina Apache Tomcat op uw server wordt geladen. Vervolgens configureert u de server zodat u toegang hebt tot de serverstatus, de beheer-app en hostbeheer.

  8. Schakel het servicebestand in zodat Tomcat automatisch wordt gestart wanneer u de server opnieuw opstart:

        sudo systemctl enable tomcat
    
  9. Als u uzelf toegang wilt geven tot de webbeheerinterface, configureert u de Tomcat-server.

    a. Bewerk het tomcat-users.xml-bestand en definieer een rol en gebruiker, zodat u zich kunt aanmelden. Definieer de gebruiker voor toegang tot de manager-gui en admin-gui.

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

    b. Voeg de volgende elementen toe aan de <tomcat-users> sectie:

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

    Het uiteindelijke bestand ziet er bijvoorbeeld ongeveer als volgt uit:

        <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. Sla het bestand op en sluit het.

  10. Tomcat beperkt de toegang tot de Manager - en Host Manager-apps tot verbindingen die afkomstig zijn van de server. Omdat u Tomcat installeert op een virtuele machine in Azure Stack Hub, wilt u deze beperking verwijderen. Wijzig de IP-adresbeperkingen voor deze apps door de juiste context.xml bestanden te bewerken.

    a. Werk context.xml bij in de Manager-app:

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

    b. Maak een opmerking over de IP-adresbeperking om verbindingen vanaf elke locatie toe te staan of voeg het IP-adres toe van de computer die u gebruikt om verbinding te maken met 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. Sla het bestand op en sluit het.

    d. Werk context.xml de Host Manager-app bij met een vergelijkbare update:

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

    e. Sla het bestand op en sluit het.

  11. Als u de server wilt bijwerken met de wijzigingen, start u de Tomcat-service opnieuw op:

        sudo systemctl restart tomcat
    
  12. Open een browser in hetzelfde netwerk als uw Azure Stack Hub en open vervolgens uw server: yourmachine.local.cloudapp.azurestack.external:8080.

    a. Als u de status van de Tomcat-server wilt controleren en wilt controleren of u toegang hebt, selecteert u Serverstatus.

    b. Meld u aan met uw Tomcat-referenties.

    Apache Tomcat on an Azure Stack Hub VM

Een app maken

U moet een WAR maken om te implementeren in Tomcat. Als u alleen uw omgeving wilt controleren, kunt u een voorbeeld WAR vinden op de Apache Tomcat-site.

Zie Java-apps bouwen en implementeren in Azure voor hulp bij het ontwikkelen van Java-apps in Azure.

De app implementeren en uitvoeren

  1. Verbinding maken naar uw VIRTUELE machine met behulp van uw SSH-client. Zie Verbinding maken via SSH met PuTTY voor instructies.

  2. Als u de server wilt bijwerken met uw app-pakket, stopt u de Tomcat-service:

        sudo systemctl stop tomcat
    
  3. Als u naar de map web-apps wilt schrijven, voegt u uw FTP-gebruiker toe aan de Tomcat-groep. Uw FTP-gebruiker is de gebruiker die u definieert wanneer u uw VIRTUELE machine maakt in Azure Stack Hub.

        sudo usermod -a -G tomcat <VM-user>
    
  4. Als u de map web-apps wilt wissen en vervolgens de nieuwe of bijgewerkte WAR wilt laden, maakt u verbinding met uw VIRTUELE machine met FileZilla. Zie Verbinding maken met SFTP met FileZilla voor instructies.

    a. Wis TOMCAT_HOME/web-apps.

    b. Voeg uw WAR toe aan TOMCAT_HOME/web-apps (bijvoorbeeld /opt/tomcat/webapps/).

  5. Tomcat breidt de toepassing automatisch uit en implementeert deze. U kunt deze weergeven met behulp van de DNS-naam die u eerder hebt gemaakt. Bijvoorbeeld:

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

Volgende stappen