Distribuera en Java-webbapp till en virtuell dator i Azure Stack Hub

Du kan skapa en virtuell dator (VM) som värd för din Java-webbapp i Azure Stack Hub. I den här artikeln installerar du, öppnar rätt portar och konfigurerar en Apache Tomcat-server på en virtuell Linux-dator i Azure Stack Hub. Sedan läser du in en WAR-fil (Java Web Application Resource) på servern. En WAR-fil används för att distribuera en samling Java-arkivfiler (JAR), komprimerade filer som innehåller Java-resurser som klasser, text, bilder, XML och HTML och andra resurser som används för att leverera ett webbprogram.

Skapa en virtuell dator

  1. Konfigurera din virtuella dator i Azure Stack Hub genom att följa anvisningarna i Distribuera en virtuell Linux-dator som värd för en webbapp i Azure Stack Hub.

  2. Kontrollera att följande portar är tillgängliga i fönstret VM-nätverk:

    Port Protokoll Description
    80 HTTP HTTP (Hypertext Transfer Protocol) är det protokoll som används för att leverera webbsidor från servrar. Klienter ansluter via HTTP med ett DNS-namn eller en IP-adress.
    443 HTTPS Hypertext Transfer Protocol Secure (HTTPS) är en säker version av HTTP som kräver ett säkerhetscertifikat och tillåter krypterad överföring av information.
    22 SSH Secure Shell (SSH) är ett krypterat nätverksprotokoll för säker kommunikation. Du använder den här anslutningen med en SSH-klient för att konfigurera den virtuella datorn och distribuera appen.
    3389 RDP Valfritt. Med Remote Desktop Protocol (RDP) kan en fjärrskrivbordsanslutning använda ett grafiskt användargränssnitt på datorn.
    8080 Anpassat Standardporten för Apache Tomcat-tjänsten. För en produktionsserver dirigerar du trafiken via 80 och 443.

Installera Java

  1. Anslut till den virtuella datorn med hjälp av SSH-klienten. Anvisningar finns i Ansluta via SSH med PuTTY.

  2. Kör följande kommando i bash-kommandotolken på den virtuella datorn:

        sudo apt-get install default-jdk
    
  3. Verifiera installationen. Kör följande kommando när du fortfarande är ansluten till den virtuella datorn i SSH-sessionen:

        java -version
    

Installera och konfigurera Tomcat

  1. Anslut till den virtuella datorn med hjälp av SSH-klienten. Anvisningar finns i Ansluta via SSH med PuTTY.

  2. Skapa en Tomcat-användare genom att göra följande:

    a. Skapa en ny Tomcat-grupp genom att köra följande kommando:

        sudo groupadd tomcat
    

    b. Skapa en ny Tomcat-användare. Lägg till den här användaren i Tomcat-gruppen med hemkatalogen /opt/tomcat. Du distribuerar Tomcat till den här katalogen:

        sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat
    
  3. Installera Tomcat genom att göra följande:

    a. Hämta URL:en för tjäran för den senaste versionen av Tomcat 8 från nedladdningssidan för Tomcat 8.

    b. Använd cURL för att ladda ned den senaste versionen med hjälp av länken . Kör följande kommandon:

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

    c. Installera Tomcat i katalogen /opt/tomcat . Skapa mappen och öppna sedan arkivet:

        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. Uppdatera behörigheterna för Tomcat genom att köra följande kommandon:

        sudo chgrp -R tomcat /opt/tomcat
        sudo chmod -R g+r conf
        sudo chmod g+x conf
    
  5. Skapa en systemtjänstfil så att du kan köra Tomcat som en tjänst.

    a. Tomcat måste veta var du installerade Java. Den här sökvägen kallas ofta JAVA_HOME. Hitta platsen genom att köra:

        sudo update-java-alternatives -l
    

    Detta ger något som liknar följande:

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

    Du kan skapa JAVA_HOME variabelvärde genom att ta sökvägen från utdata och lägga till /jre. Med föregående exempel kan du till exempel använda /usr/lib/jvm/java-1.8.0-openjdk-amd64/jre.

    b. Använd värdet från servern för att skapa systemtjänstfilen:

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

    c. Klistra in följande innehåll i tjänstfilen. Ändra värdet för JAVA_HOME om det behövs så att det matchar det värde som du hittade i systemet. Du kanske också vill ändra inställningarna för minnesallokering som anges i 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. Spara och stäng filen.

    e. Ladda om systemdaemonen så att den känner till tjänstfilen:

        sudo systemctl daemon-reload
    

    f. Starta Tomcat-tjänsten:

        sudo systemctl start tomcat
    

    ex. Kontrollera att den startade utan fel genom att ange:

        sudo systemctl status tomcat
    
  6. Verifiera Tomcat-servern. Tomcat använder port 8080 för att acceptera konventionella begäranden. Tillåt trafik till den porten genom att köra följande kommando:

        sudo ufw allow 8080
    

    Om du inte har lagt till regler för inkommande portar för din virtuella Azure Stack Hub-dator lägger du till dem nu. Mer information finns i Skapa en virtuell dator.

  7. Öppna en webbläsare i samma nätverk som Azure Stack Hub och öppna sedan servern yourmachine.local.cloudapp.azurestack.external:8080.

    Skärmbild som visar sidan Apache Tomcat.

    Apache Tomcat-sidan på servern läses in. Därefter konfigurerar du servern så att du kan komma åt serverstatus, hanterarens app och värdhanteraren.

  8. Aktivera tjänstfilen så att Tomcat startar automatiskt när du startar om servern:

        sudo systemctl enable tomcat
    
  9. Om du vill ge dig själv åtkomst till webbhanteringsgränssnittet konfigurerar du Tomcat-servern.

    a. Redigera tomcat-users.xml-filen och definiera en roll och användare så att du kan logga in. Definiera användaren för att komma åt manager-gui och admin-gui.

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

    b. Lägg till följande element i <tomcat-users> avsnittet:

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

    Den slutliga filen kan till exempel se ut ungefär så här:

        <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. Spara och stäng filen.

  10. Tomcat begränsar åtkomsten till manager - och värdhanterarapparna till anslutningar som kommer från servern. Eftersom du installerar Tomcat på en virtuell dator i Azure Stack Hub vill du ta bort den här begränsningen. Ändra IP-adressbegränsningarna för dessa appar genom att redigera lämpliga context.xml filer.

    a. Uppdatera context.xml i appen Manager:

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

    b. Kommentera ut IP-adressbegränsningen för att tillåta anslutningar var som helst eller lägg till IP-adressen för den dator som du använder för att ansluta till 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. Spara och stäng filen.

    d. Uppdatera context.xml Host Manager-appen med en liknande uppdatering:

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

    e. Spara och stäng filen.

  11. Om du vill uppdatera servern med ändringarna startar du om Tomcat-tjänsten:

        sudo systemctl restart tomcat
    
  12. Öppna en webbläsare i samma nätverk som Azure Stack Hub och öppna sedan servern: yourmachine.local.cloudapp.azurestack.external:8080.

    a. Om du vill granska status för Tomcat-servern och kontrollera att du har åtkomst väljer du Serverstatus.

    b. Logga in med dina Tomcat-autentiseringsuppgifter.

    Apache Tomcat på en virtuell Azure Stack Hub-dator

Skapa en app

Du måste skapa en WAR-distribution till Tomcat. Om du bara vill kontrollera din miljö kan du hitta ett exempel på WAR på Apache Tomcat-webbplatsen.

Vägledning om hur du utvecklar Java-appar i Azure finns i Skapa och distribuera Java-appar i Azure.

Distribuera och kör appen

  1. Anslut till den virtuella datorn med hjälp av SSH-klienten. Anvisningar finns i Ansluta via SSH med PuTTY.

  2. Om du vill uppdatera servern med ditt apppaket stoppar du Tomcat-tjänsten:

        sudo systemctl stop tomcat
    
  3. Om du vill kunna skriva till mappen webapps lägger du till FTP-användaren i Tomcat-gruppen. FTP-användaren är den användare som du definierar när du skapar den virtuella datorn i Azure Stack Hub.

        sudo usermod -a -G tomcat <VM-user>
    
  4. Om du vill rensa mappen webapps och sedan läsa in din nya eller uppdaterade WAR ansluter du till den virtuella datorn med FileZilla. Anvisningar finns i Ansluta med SFTP med FileZilla.

    a. Rensa TOMCAT_HOME/webbappar.

    b. Lägg till war i TOMCAT_HOME/webapps (till exempel /opt/tomcat/webapps/).

  5. Tomcat expanderar och distribuerar programmet automatiskt. Du kan visa den med hjälp av DNS-namnet som du skapade tidigare. Exempel:

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

Nästa steg