Implementar uma aplicação Web Java numa VM no Azure Stack Hub

Pode criar uma máquina virtual (VM) para alojar a sua aplicação Web Java no Azure Stack Hub. Neste artigo, vai instalar, abrir as portas certas e configurar um servidor Apache Tomcat numa VM do Linux no Azure Stack Hub. Em seguida, carregue um ficheiro WAR (Java Web Application Resource) para o servidor. Um ficheiro WAR é utilizado para distribuir uma coleção de ficheiros de arquivo Java (JAR), ficheiros comprimidos que contêm recursos Java, como classes, texto, imagens, XML e HTML, e outros recursos que são utilizados para fornecer uma aplicação Web.

Criar uma VM

  1. Configure a VM no Azure Stack Hub ao seguir as instruções em Implementar uma VM do Linux para alojar uma aplicação Web no Azure Stack Hub.

  2. No painel rede VM, certifique-se de que as seguintes portas estão acessíveis:

    Porta Protocolo Descrição
    80 HTTP O Protocolo HTTP (Hypertext Transfer Protocol) é o protocolo utilizado para fornecer páginas Web a partir de servidores. Os clientes ligam-se através de HTTP com um nome DNS ou endereço IP.
    443 HTTPS O PROTOCOLO HTTPS (Hypertext Transfer Protocol Secure) é uma versão segura de HTTP que requer um certificado de segurança e permite a transmissão encriptada de informações.
    22 SSH O Secure Shell (SSH) é um protocolo de rede encriptado para comunicações seguras. Utilize esta ligação com um cliente SSH para configurar a VM e implementar a aplicação.
    3389 RDP Opcional. O Protocolo RDP (Remote Desktop Protocol) permite que uma ligação de ambiente de trabalho remoto utilize uma interface de utilizador gráfico no seu computador.
    8080 Personalizado A porta predefinida para o serviço Apache Tomcat. Para um servidor de produção, encaminha o tráfego para 80 e 443.

Instalar Java

  1. Ligue-se à VM com o cliente SSH. Para obter instruções, veja Connect via SSH with PuTTY (Ligar através de SSH com PuTTY).

  2. Na linha de comandos bash da VM, execute o seguinte comando:

        sudo apt-get install default-jdk
    
  3. Valide a instalação. Ainda ligado à VM na sessão SSH, execute o seguinte comando:

        java -version
    

Instalar e configurar o Tomcat

  1. Ligue-se à VM com o cliente SSH. Para obter instruções, veja Connect via SSH with PuTTY (Ligar através de SSH com PuTTY).

  2. Crie um utilizador do Tomcat ao fazer o seguinte:

    a. Crie um novo grupo tomcat ao executar o seguinte comando:

        sudo groupadd tomcat
    

    b. Crie um novo utilizador do Tomcat. Adicione este utilizador ao grupo Tomcat com um diretório raiz de /opt/tomcat. Vai implementar o Tomcat neste diretório:

        sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat
    
  3. Instale o Tomcat ao fazer o seguinte:

    a. Obtenha o URL do tar para a versão mais recente do Tomcat 8 a partir da página de transferência do Tomcat 8.

    b. Utilize o cURL para transferir a versão mais recente com a ligação. Execute os seguintes comandos:

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

    c. Instale o Tomcat no diretório /opt/tomcat . Crie a pasta e, em seguida, abra o arquivo:

        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. Atualize as permissões do Tomcat ao executar os seguintes comandos:

        sudo chgrp -R tomcat /opt/tomcat
        sudo chmod -R g+r conf
        sudo chmod g+x conf
    
  5. Crie um ficheiro de serviço systemd , para que possa executar o Tomcat como um serviço.

    a. O Tomcat precisa de saber onde instalou o Java. Este caminho é geralmente conhecido como JAVA_HOME. Localize a localização ao executar:

        sudo update-java-alternatives -l
    

    Isto produz algo semelhante ao seguinte:

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

    Pode construir o valor da variável JAVA_HOME ao seguir o caminho a partir da saída e ao adicionar /jre. Por exemplo, com o exemplo anterior, /usr/lib/jvm/java-1.8.0-openjdk-amd64/jre.

    b. Utilize o valor do servidor para criar o ficheiro de serviço systemd:

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

    c. Cole os seguintes conteúdos no ficheiro de serviço. Modifique o valor de JAVA_HOME, se necessário, para corresponder ao valor que encontrou no seu sistema. Também poderá querer modificar as definições de alocação de memória especificadas no 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. Guarde e feche o ficheiro.

    e. Recarregue o daemon do systemd para que saiba mais sobre o ficheiro de serviço:

        sudo systemctl daemon-reload
    

    f. Inicie o serviço Tomcat:

        sudo systemctl start tomcat
    

    exemplo, Verifique se começou sem erros ao introduzir:

        sudo systemctl status tomcat
    
  6. Verifique o servidor Tomcat. O Tomcat utiliza a porta 8080 para aceitar pedidos convencionais. Permita o tráfego para essa porta ao executar o seguinte comando:

        sudo ufw allow 8080
    

    Se ainda não adicionou as regras de porta de entrada para a VM do Azure Stack Hub, adicione-as agora. Para obter mais informações, veja Criar uma VM.

  7. Abra um browser na mesma rede que o Azure Stack Hub e, em seguida, abra o servidor, yourmachine.local.cloudapp.azurestack.external:8080.

    Captura de ecrã que mostra a página do Apache Tomcat.

    A página do Apache Tomcat no seu servidor é carregada. Em seguida, configure o servidor para lhe permitir aceder ao Estado do Servidor, à Aplicação do Gestor e ao Gestor de Anfitriões.

  8. Ative o ficheiro de serviço para que o Tomcat seja iniciado automaticamente quando reiniciar o servidor:

        sudo systemctl enable tomcat
    
  9. Para permitir o acesso à interface de gestão Web, configure o servidor Tomcat.

    a. Edite o ficheiro tomcat-users.xml e defina uma função e um utilizador para que possa iniciar sessão. Defina o utilizador para aceder a manager-gui e admin-gui.

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

    b. Adicione os seguintes elementos à <tomcat-users> secção:

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

    Por exemplo, o ficheiro final poderá ter um aspeto semelhante a:

        <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. Guarde e feche o ficheiro.

  10. O Tomcat restringe o acesso às aplicações Gestor e Gestor de Anfitriões a ligações provenientes do servidor. Uma vez que está a instalar o Tomcat numa VM no Azure Stack Hub, vai querer remover esta restrição. Altere as restrições de endereços IP nestas aplicações ao editar os ficheiros decontext.xml adequados.

    a. Atualize context.xml na aplicação Gestor:

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

    b. Comente a restrição de endereços IP para permitir ligações a partir de qualquer lugar ou adicione o endereço IP do computador que está a utilizar para ligar ao 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. Guarde e feche o ficheiro.

    d. Atualize context.xml a aplicação Gestor de Anfitriões com uma atualização semelhante:

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

    e. Guarde e feche o ficheiro.

  11. Para atualizar o servidor com as alterações, reinicie o serviço Tomcat:

        sudo systemctl restart tomcat
    
  12. Abra um browser na mesma rede que o Azure Stack Hub e, em seguida, abra o servidor: yourmachine.local.cloudapp.azurestack.external:8080.

    a. Para rever o estado do servidor Tomcat e verificar se tem acesso, selecione Estado do Servidor.

    b. Inicie sessão com as suas credenciais do Tomcat.

    Apache Tomcat numa VM do Azure Stack Hub

Criar uma aplicação

Terá de criar uma WAR para implementar no Tomcat. Se apenas quiser verificar o seu ambiente, pode encontrar um exemplo WAR no site do Apache Tomcat.

Para obter orientações sobre o desenvolvimento de aplicações Java no Azure, veja Criar e implementar aplicações Java no Azure.

Implementar e executar a aplicação

  1. Ligue-se à VM com o cliente SSH. Para obter instruções, consulte Ligar através de SSH com PuTTY.

  2. Para atualizar o servidor com o pacote de aplicações, pare o serviço Tomcat:

        sudo systemctl stop tomcat
    
  3. Para poder escrever na pasta webapps, adicione o utilizador de FTP ao grupo Tomcat. O utilizador de FTP é o utilizador que define quando cria a VM no Azure Stack Hub.

        sudo usermod -a -G tomcat <VM-user>
    
  4. Para limpar a pasta de aplicações Web e, em seguida, carregar a sua WAR nova ou atualizada, ligue-se à sua VM com o FileZilla. Para obter instruções, consulte Ligar ao SFTP com o FileZilla.

    a. Limpe TOMCAT_HOME/webapps.

    b. Adicione a sua WAR a TOMCAT_HOME/webapps (por exemplo, /opt/tomcat/webapps/).

  5. O Tomcat expande e implementa automaticamente a aplicação. Pode vê-lo com o nome DNS que criou anteriormente. Por exemplo:

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

Passos seguintes