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

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

Een virtuele machine maken

  1. Stel uw VM in Azure Stack Hub in door de instructies te volgen in Een Linux-VM 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 voor het leveren van webpagina's vanaf servers. 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 versleutelde gegevens kunnen worden verzonden.
    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. Het Remote Desktop Protocol (RDP) staat een verbinding met extern bureaublad toe om een grafische gebruikersinterface op uw computer te 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. Maak verbinding met uw VM met behulp van uw SSH-client. Zie Verbinding maken via SSH met PuTTY voor instructies.

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

        sudo apt-get install default-jdk
    
  3. Valideer uw installatie. Nog steeds verbonden met uw VM in uw SSH-sessie, voert u de volgende opdracht uit:

        java -version
    

Tomcat installeren en configureren

  1. Maak verbinding met uw VM met behulp van uw SSH-client. Zie Verbinding maken via SSH met PuTTY voor instructies.

  2. Maak als volgt een Tomcat-gebruiker:

    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 de basismap /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 voor de nieuwste versie van Tomcat 8 op op 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 JAVA_HOME genoemd. Zoek de locatie door het volgende uit te voeren:

        sudo update-java-alternatives -l
    

    Dit produceert ongeveer het volgende:

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

    U kunt de waarde van de JAVA_HOME variabele maken door het pad uit de uitvoer te nemen en /jre toe te voegen. Bijvoorbeeld met behulp van 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 het servicebestand. Wijzig indien 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 op de hoogte is van uw servicebestand:

        sudo systemctl daemon-reload
    

    f. Start de Tomcat-service:

        sudo systemctl start tomcat
    

    g. Controleer of het zonder fouten is gestart 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 VM maken voor meer informatie.

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

    Schermopname van de pagina Apache Tomcat.

    De Apache Tomcat-pagina op uw server wordt geladen. Vervolgens configureert u de server zodat u toegang hebt tot serverstatus, 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 kan er bijvoorbeeld ongeveer als volgt uitzien:

        <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 apps Manager en Host Manager tot verbindingen die afkomstig zijn van de server. Omdat u Tomcat installeert op een VM in Azure Stack Hub, moet 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 app Manager:

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

    b. Markeer 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 met de wijzigingen wilt bijwerken, 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 op een 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. Maak verbinding met uw VM 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 wilt kunnen schrijven naar de map web-apps, 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 uw nieuwe of bijgewerkte WAR wilt laden, maakt u verbinding met uw VM 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