Como instalar o Apache Tomcat 9 no Ubuntu 18.04

Introdução

O Apache Tomcat é um servidor Web e um contêiner servlet que é usado para atender aos aplicativos Java. O Tomcat é uma implementação de código aberto das tecnologias do Java Servlet e JavaServer Pages, lançadas pela Apache Software Foundation. Este tutorial aborda a instalação básica e algumas configurações do lançamento mais recente do Tomcat 9 no seu servidor Ubuntu 18.04.

Pré-requisitos

Antes de iniciar este guia, você deve ter um usuário não raiz com privilégios sudo configurado no seu servidor. Você pode aprender a fazer isso completando nosso guia de configuração inicial de servidor Ubuntu 16.04.

Passo 1 — Instalar o Java

O Tomcat exige que o Java esteja instalado no servidor para que qualquer código de aplicativo Web do Java possa ser executado. Podemos satisfazer esse requisito instalando o OpenJDK com o apt.

Primeiramente, atualize seu índice de pacotes apt:

  • sudo apt update

Então, instale o pacote Java Development Kit com o apt:

  • sudo apt install default-jdk

Agora que o Java está instalado, podemos criar um usuário tomcat, que será usado para executar o serviço do Tomcat.

Passo 2 — Criar o usuário Tomcat

Para fins de segurança, o Tomcat deve ser executado como um usuário sem privilégios (ou seja, não raiz). Criaremos um novo usuário e grupo que executarão o serviço Tomcat.

Primeiro, crie um novo grupo tomcat:

  • sudo groupadd tomcat

Em seguida, crie um novo usuário tomcat. Tornaremos esse usuário um membro do grupo tomcat, com um diretório home de /opt/tomcat (onde vamos instalar o Tomcat) e com uma shell de /bin/false (para que ninguém possa fazer login na conta):

  • sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat

Agora que nosso usuário tomcat está configurado, vamos baixar e instalar o Tomcat.

Passo 3 — Instalar o Tomcat

A melhor maneira de instalar o Tomcat 9 é baixando a última versão binária e então configurá-la manualmente.

Encontre a versão mais recente do Tomcat 9 na página de downloads do Tomcat 9. No momento em que este artigo está sendo escrito, a versão mais recente é a 9.0.10, mas você deve usar uma versão estável mais recente caso esteja disponível. Na seção Binary Distributions, na lista Core, copie o link para o “tar.gz”.

Em seguida, mude para o diretório /tmp no seu servidor. Este é um bom diretório para baixar itens efêmeros, como o Tomcat tarball, os quais não precisaremos após extrair o conteúdo do Tomcat:

  • cd /tmp

Use o curl para baixar o link que copiou do site do Tomcat:

  • curl -O https://www-eu.apache.org/dist/tomcat/tomcat-9/v9.0.30/bin/apache-tomcat-9.0.30.tar.gz

Vamos instalar o Tomcat no diretório /opt/tomcat. Crie o diretório e então extraia o arquivo nele com esses comandos:

  • sudo mkdir /opt/tomcat
  • sudo tar xzvf apache-tomcat-9*tar.gz -C /opt/tomcat --strip-components=1

Em seguida, podemos configurar as permissões de usuário apropriadas para a nossa instalação.

Passo 4 — Atualizar as permissões

O usuário tomcat que configuramos precisa ter acesso à instalação do Tomcat. Agora, vamos configurar isso.

Vá até o diretório onde extraímos a instalação do Tomcat:

  • cd /opt/tomcat

Dê a propriedade de todo o diretório de instalação ao grupo tomcat:

  • sudo chgrp -R tomcat /opt/tomcat

Em seguida, dê ao grupo tomcat acesso ao diretório conf e todo o seu conteúdo, e então execute o acesso ao diretório em si:

  • sudo chmod -R g+r conf
  • sudo chmod g+x conf

Torne o usuário tomcat o proprietário dos diretórios webapps, work, temp e logs:

  • sudo chown -R tomcat webapps/ work/ temp/ logs/

Agora que as permissões apropriadas estão configuradas, podemos criar um arquivo de serviço systemd para gerenciar o processo do Tomcat.

Passo 5 —Criar um arquivo de serviço systemd

Queremos executar o Tomcat como um serviço. Dessa forma, vamos configurar o arquivo de serviço systemd.

O Tomcat precisa saber onde o Java está instalado. Este caminho é geralmente chamado de “JAVA_HOME”. A maneira mais fácil de procurar esse local é executando este comando:

  • sudo update-java-alternatives -l
Outputjava-1.11.0-openjdk-amd64       1081       /usr/lib/jvm/java-1.11.0-openjdk-amd64 

Seu JAVA_HOME é o resultado da última coluna (destacada em vermelho). Dado o exemplo acima, o JAVA_HOME correto para este servidor seria:

JAVA_HOME/usr/lib/jvm/java-1.11.0-openjdk-amd64 

Seu JAVA_HOME pode ser diferente.

Com esta informação, podemos criar o arquivo de serviço systemd. Abra um arquivo chamado tomcat.service no diretório /etc/systemd/system digitando:

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

Cole o conteúdo a seguir no seu arquivo de serviço. Modifique o valor de JAVA_HOME se necessário para que corresponda ao valor que você encontrou no seu sistema. Você também pode desejar modificar as configurações de alocação de memória que são especificadas no CATALINA_OPTS:

/etc/systemd/system/tomcat.service

[Unit] Description=Apache Tomcat Web Application Container After=network.target  [Service] Type=forking  Environment=JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64 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 

Quando você terminar, salve e feche o arquivo.

Em seguida, recarregue o daemon systemd para que ele saiba sobre nosso arquivo de serviço:

  • sudo systemctl daemon-reload

Inicie o serviço Tomcat digitando:

  • sudo systemctl start tomcat

Verifique novamente se ele foi iniciado sem erros digitando:

  • sudo systemctl status tomcat

Passo 6 — Ajustar o firewall e testar o servidor Tomcat

Agora que o serviço Tomcat foi iniciado, podemos testá-lo para garantir que a página padrão esteja disponível.

Antes de fazer isso, precisamos ajustar o firewall para permitir que nossos pedidos cheguem ao serviço. Se seguiu os pré-requisitos, você terá um firewall ufw habilitado.

O Tomcat usa a porta 8080 para aceitar pedidos convencionais. Permita o tráfego naquela porta digitando:

  • sudo ufw allow 8080

Com o firewall modificado, é possível acessar a página inicial padrão indo ao seu domínio ou endereço IP seguido de :8080 em um navegador Web:

Open in web browserhttp://server_domain_or_IP:8080 

Você verá a página inicial padrão do Tomcat, além de outras informações. No entanto, caso clique nos links para o Manager App, por exemplo, você terá o acesso negado. Podemos configurar esse acesso a seguir.

Se você conseguir acessar o Tomcat com sucesso, agora é uma boa hora para habilitar o arquivo de serviço de forma a fazer o Tomcat iniciar automaticamente na inicialização:

  • sudo systemctl enable tomcat

Passo 7 — Configurar a interface de gerenciamento Web do Tomcat

Para usar o app gerenciador que vem com o Tomcat, precisamos adicionar um login ao nosso servidor Tomcat. Faremos isso editando o arquivo tomcat-users.xml:

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

Será adicionado um usuário que pode acessar o manager-gui e admin-gui (apps Web que vêm com o Tomcat). É possível fazer isso pela definição de um usuário, similar ao exemplo abaixo, entre as tags tomcat-users. Certifique-se de alterar o nome de usuário e senha para algo seguro:

tomcat-users.xml — Admin User

<tomcat-users . . .>     <user username="admin" password="password" roles="manager-gui,admin-gui"/> </tomcat-users> 

Salve e feche o arquivo quando você terminar.

Por padrão, as versões mais recentes do Tomcat restringem o acesso aos aplicativos gerenciadores e gerenciadores de host para conexões vindas do servidor em si. Como estamos instalando em uma máquina remota, você provavelmente vai querer remover ou alterar essa restrição. Para alterar as restrições de endereço IP neles, abra os arquivos context.xml apropriados.

Para o Manager app, digite:

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

Para o app Host Manager, digite:

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

Lá dentro, retire o comentário da restrição de endereço IP para permitir conexões de qualquer lugar. De forma alternativa, caso queira permitir o acesso apenas às conexões vindo do seu próprio endereço IP, adicione seu endereço IP público na lista:

context.xml files for Tomcat webapps

<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> 

Salve e feche os arquivos quando você terminar.

Para colocar nossas alterações em vigor, reinicie o serviço Tomcat:

  • sudo systemctl restart tomcat

Passo 8 — Acessar a interface Web

Agora que criamos um usuário, podemos acessar a interface Web mais uma vez em um navegador Web. Novamente, é possível chegar na interface correta digitando o nome de domínio ou endereço IP do seu servidor seguido da porta 8080 no seu navegador:

Open in web browserhttp://server_domain_or_IP:8080 

A página que você ver deve ser a mesma que lhe foi dada quando fez o teste mais cedo:

Tomcat root

Vamos dar uma olhada no Manager App, acessível pelo link http://server_domain_or_IP:8080/manager/html. Será necessário digitar as credenciais da conta que adicionou ao arquivo tomcat-users.xml. Depois disso, você deve ver uma página parecida com esta:

Tomcat Web Application Manager

O Web Application Manager é usado para gerenciar seus aplicativos Java. Você pode iniciar, parar, recarregar, implantar e remover aqui. Também é possível fazer um diagnóstico nos seus aplicativos (ou seja, encontrar vazamentos de memória). Por fim, as informações sobre seu servidor estão disponíveis no final da página.

Agora, vamos ver o Host Manager, acessível pelo link http://server_domain_or_IP:8080/host-manager/html/:

Tomcat Virtual Host Manager

A partir da página do Virtual Host Manager, é possível adicionar hosts virtuais para atender aos seus aplicativos.

Conclusão

Sua instalação do Tomcat está completa! Agora, você está livre para implantar seus próprios aplicativos Web do Java!

Atualmente, sua instalação do Tomcat está funcional, mas totalmente não criptografada. Isso significa que todos os dados, incluindo itens sensíveis como senhas, são enviados em um texto simples que pode ser interceptado e lido por outras partes na Internet. Para evitar que isso aconteça, é imensamente recomendada a criptografia das suas conexões com o SSL. Você pode descobrir como criptografar suas conexões para o Tomcat seguindo este guia (nota: este guia aborda a criptografia do Tomcat 8 no Ubuntu 16.04).