Implantar um aplicativo Web Java em uma VM no Azure Stack Hub

Você pode criar uma VM (máquina virtual) para hospedar seu aplicativo Web Java no Azure Stack Hub. Neste artigo, você instala, abre as portas certas e configura um servidor Apache Tomcat em uma VM Linux no Azure Stack Hub. Em seguida, você carrega um arquivo WAR (Recurso de Aplicativo Web) Java no servidor. Um arquivo WAR é usado para distribuir uma coleção de arquivos JAR (arquivo Java), arquivos compactados que contêm recursos Java, como classes, texto, imagens, XML e HTML, e outros recursos que são usados para fornecer um aplicativo Web.

Criar uma VM

  1. Configure sua VM no Azure Stack Hub seguindo as instruções em Implantar uma VM do Linux para hospedar um aplicativo Web no Azure Stack Hub.

  2. No painel de rede da VM, verifique se as seguintes portas estão acessíveis:

    Porta Protocolo Descrição
    80 HTTP HTTP (Protocolo de Transferência de Hipertexto) é o protocolo usado para fornecer páginas da Web de servidores. Os clientes se conectam via HTTP com um nome DNS ou endereço IP.
    443 HTTPS O HTTPS (Hypertext Transfer Protocol Secure) é uma versão segura do HTTP que requer um certificado de segurança e permite a transmissão criptografada de informações.
    22 SSH O Secure Shell (SSH) é um protocolo de rede criptografado para comunicações seguras. Você usa essa conexão com um cliente SSH para configurar a VM e implantar o aplicativo.
    3389 RDP Opcional. O RDP (Protocolo de Área de Trabalho Remota) permite que uma conexão de área de trabalho remota use uma interface gráfica do usuário em seu computador.
    8080 Personalizado A porta padrão para o serviço Apache Tomcat. Para um servidor de produção, você roteia seu tráfego por 80 e 443.

Instalar o Java

  1. Conecte-se à VM usando seu cliente SSH. Para obter instruções, consulte Conectar via SSH com PuTTY.

  2. No prompt bash em sua VM, execute o seguinte comando:

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

        java -version
    

Instalar e configurar o Tomcat

  1. Conecte-se à VM usando seu cliente SSH. Para obter instruções, consulte Conectar via SSH com PuTTY.

  2. Crie um usuário do Tomcat fazendo o seguinte:

    a. Crie um novo grupo Tomcat executando o seguinte comando:

        sudo groupadd tomcat
    

    b. Crie um novo usuário do Tomcat. Adicione esse usuário ao grupo Tomcat com um diretório inicial de /opt/tomcat. Você implanta o Tomcat neste diretório:

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

    a. Obtenha a URL do tar para a versão mais recente do Tomcat 8 na página de download do Tomcat 8.

    b. Use cURL para baixar a versão mais recente usando o link. 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 abra o arquivo morto:

        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 executando os seguintes comandos:

        sudo chgrp -R tomcat /opt/tomcat
        sudo chmod -R g+r conf
        sudo chmod g+x conf
    
  5. Crie um arquivo de serviço sistemado para que você possa executar o Tomcat como um serviço.

    a. O Tomcat precisa saber onde você instalou o Java. Esse caminho é comumente chamado de JAVA_HOME. Localize o local executando:

        sudo update-java-alternatives -l
    

    Isso produz algo semelhante ao seguinte:

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

    Você pode construir o valor da variável JAVA_HOME tomando o caminho da saída e adicionando /jre. Por exemplo, usando o exemplo anterior, /usr/lib/jvm/java-1.8.0-openjdk-amd64/jre.

    b. Use o valor do servidor para criar o arquivo de serviço sistemado:

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

    c. Cole o conteúdo a seguir no arquivo de serviço. Modifique o valor de JAVA_HOME, se necessário, para corresponder ao valor encontrado em seu sistema. Talvez você também queira modificar as configuraçõ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. Salve e feche o arquivo.

    e. Recarregue o daemon systemd para que ele saiba sobre o arquivo de serviço:

        sudo systemctl daemon-reload
    

    f. Inicie o serviço Tomcat:

        sudo systemctl start tomcat
    

    g. Verifique se ele foi iniciado sem erros inserindo:

        sudo systemctl status tomcat
    
  6. Verifique o servidor Tomcat. O Tomcat usa a porta 8080 para aceitar solicitações convencionais. Permita o tráfego para essa porta executando o seguinte comando:

        sudo ufw allow 8080
    

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

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

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

    A página do Apache Tomcat no servidor é carregada. Em seguida, configure o servidor para permitir que você acesse o Status do Servidor, o Aplicativo Gerenciador e o Gerenciador de Host.

  8. Habilite o arquivo de serviço para que o Tomcat seja iniciado automaticamente quando você reinicializar o servidor:

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

    a. Edite o arquivo tomcat-users.xml e defina uma função e um usuário para que você possa entrar. Defina o usuário para acessar o manager-gui e admin-gui.

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

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

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

    Por exemplo, seu arquivo final pode ser 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. Salve e feche o arquivo.

  10. O Tomcat restringe o acesso aos aplicativos Gerenciador e Gerenciador de Host a conexões provenientes do servidor. Como você está instalando o Tomcat em uma VM no Azure Stack Hub, convém remover essa restrição. Altere as restrições de endereço IP nesses aplicativos editando os arquivos decontext.xml apropriados.

    a. Atualize context.xml no aplicativo Gerenciador:

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

    b. Comente a restrição de endereço IP para permitir conexões de qualquer lugar ou adicione o endereço IP do computador que você está usando para se conectar 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. Salve e feche o arquivo.

    d. Atualize context.xml o aplicativo Gerenciador de Host com uma atualização semelhante:

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

    e. Salve e feche o arquivo.

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

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

    a. Para examinar a status do servidor Tomcat e verificar se você tem acesso, selecione Status do Servidor.

    b. Entre com suas credenciais do Tomcat.

    Apache Tomcat em uma VM do Azure Stack Hub

Criar um aplicativo

Você precisará criar um WAR para implantar no Tomcat. Se você quiser apenas marcar seu ambiente, poderá encontrar um exemplo de WAR no site do Apache Tomcat.

Para obter diretrizes sobre como desenvolver aplicativos Java no Azure, confira Criar e implantar aplicativos Java no Azure.

Implantar e executar o aplicativo

  1. Conecte-se à VM usando o cliente SSH. Para obter instruções, consulte Conectar-se via SSH com PuTTY.

  2. Para atualizar o servidor com o pacote do aplicativo, interrompa o serviço Tomcat:

        sudo systemctl stop tomcat
    
  3. Para poder gravar na pasta webapps, adicione o usuário FTP ao grupo Tomcat. Seu usuário FTP é o usuário que você define ao criar sua VM no Azure Stack Hub.

        sudo usermod -a -G tomcat <VM-user>
    
  4. Para limpar a pasta webapps e carregar o WAR novo ou atualizado, conecte-se à VM com o FileZilla. Para obter instruções, consulte Conectar-se ao SFTP com o FileZilla.

    a. Limpe TOMCAT_HOME/webapps.

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

  5. O Tomcat expande e implanta automaticamente o aplicativo. Você pode exibi-lo usando o nome DNS criado anteriormente. Por exemplo:

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

Próximas etapas