Pesquisa de site

Como executar vários aplicativos da Web em um servidor Apache Tomcat


Apache Tomcat é um contêiner web de código aberto que permite implantar Java Servlets, JSP e Web Sockets para executar um servidor web baseado em código Java. Ele também pode ser identificado como um contêiner de servlet de plataforma cruzada ou um contêiner da web.

Simplesmente, o Tomcat é muito popular entre muitas partes interessadas da indústria devido às muitas vantagens sobre outros contêineres de web no mercado. Você pode criar arquivos web a partir de seu projeto Java e simplesmente implantá-los em um contêiner Tomcat para hospedar um servidor web HTTP codificado por Java. As indústrias escolhem o Apache Tomcat em vez de outros contêineres devido às seguintes vantagens.

  1. Peso leve.
  2. Amplamente utilizado.
  3. Muito mais rápido que outros contêineres.
  4. Fácil de configurar.
  5. Muito flexível.

Normalmente, o Apache Tomcat é um produto amigável que dá aos engenheiros espaço para implantar seus artefatos WAR (Web ARchives) com alterações mínimas de configuração.

Este post é direcionado a um público que já usa o Tomcat e sabe como iniciar e usar o motor Apache Tomcat.

No Apache Tomcat, WARs devem ser colocados no diretório webapps onde o contêiner os implanta por padrão. Simplesmente, o diretório webapps atua como o contêiner principal do código Java para o Tomcat implantá-lo como um servidor web.

Em um cenário em que precisamos hospedar mais de um servidor web a partir de um único contêiner Tomcat, você pode usar esta postagem como um guia para fazer isso. Neste artigo, mostrarei como implantar vários aplicativos da Web ou dois servidores da Web em um Tomcat.

Pré-requisitos: Java deve estar instalado no servidor. De preferência 1.7.x ou superior. Neste tutorial tenho o Java 1.7 instalado já que utilizo o Tomcat versão 8.0.37.

Você pode instalar Java usando seu gerenciador de pacotes, como yum ou apt, conforme mostrado:

yum install java              [On CentOS based Systems]
apt-get install default-jre   [On Debian based Systems]

Etapa 1: Instale o servidor Apache Tomcat

1. Primeiro crie um usuário tomcat separado usando a conta root.

useradd tomcat
passwd tomcat

Agora faça login como usuário tomcat e baixe o pacote mais recente do apache tomcat no site oficial aqui: https://tomcat.apache.org/ ou alternativamente, você pode usar o seguinte comando wget para baixar diretamente no terminal .

Neste caso, baixei o Apache Tomcat, 8.5.5, que é uma das últimas versões estáveis lançadas até o momento.

wget http://redrockdigimark.com/apachemirror/tomcat/tomcat-8/v8.5.5/bin/apache-tomcat-8.5.5.tar.gz

2. Após o download do arquivo, descompacte o conteúdo usando o comando tar e visualize a estrutura de diretórios conforme mostrado:

tar -xvf apache-tomcat-8.5.5.tar.gz
cd apache-tomcat-8.5.5/
ls -l
total 112
drwxr-x---. 2 tomcat tomcat  4096 Sep 29 11:26 bin
drwx------. 2 tomcat tomcat  4096 Sep  1 01:23 conf
drwxr-x---. 2 tomcat tomcat  4096 Sep 29 11:26 lib
-rw-r-----. 1 tomcat tomcat 57092 Sep  1 01:23 LICENSE
drwxr-x---. 2 tomcat tomcat  4096 Sep  1 01:21 logs
-rw-r-----. 1 tomcat tomcat  1723 Sep  1 01:23 NOTICE
-rw-r-----. 1 tomcat tomcat  7063 Sep  1 01:23 RELEASE-NOTES
-rw-r-----. 1 tomcat tomcat 15946 Sep  1 01:23 RUNNING.txt
drwxr-x---. 2 tomcat tomcat  4096 Sep 29 11:26 temp
drwxr-x---. 7 tomcat tomcat  4096 Sep  1 01:22 webapps
drwxr-x---. 2 tomcat tomcat  4096 Sep  1 01:21 work

Etapa 2: configurar o servidor Apache Tomcat

3. A mudança de configuração que procuramos está dentro do diretório conf e está sendo usada para colocar todos os arquivos de configuração que ajudam o Tomcat a inicializar.

O conteúdo do diretório conf é semelhante ao abaixo.

cd conf/
ls -l
total 224
-rw-------. 1 tomcat tomcat  12502 Sep  1 01:23 catalina.policy
-rw-------. 1 tomcat tomcat   7203 Sep  1 01:23 catalina.properties
-rw-------. 1 tomcat tomcat   1338 Sep  1 01:23 context.xml
-rw-------. 1 tomcat tomcat   1149 Sep  1 01:23 jaspic-providers.xml
-rw-------. 1 tomcat tomcat   2358 Sep  1 01:23 jaspic-providers.xsd
-rw-------. 1 tomcat tomcat   3622 Sep  1 01:23 logging.properties
-rw-------. 1 tomcat tomcat   7283 Sep  1 01:23 server.xml
-rw-------. 1 tomcat tomcat   2164 Sep  1 01:23 tomcat-users.xml
-rw-------. 1 tomcat tomcat   2633 Sep  1 01:23 tomcat-users.xsd
-rw-------. 1 tomcat tomcat 168133 Sep  1 01:23 web.xml

4. Neste caso, o que é importante para mim é o arquivo server.xml. Portanto, não farei explicações aprofundadas sobre outros arquivos ou diretórios.

O server.xml é o arquivo de configuração que informa ao tomcat qual porta inicializá-lo, qual conteúdo do diretório implantar e muitas outras configurações principais e básicas.

Basicamente, parece abaixo depois de abrir o arquivo.

vim server.xml

Etapa 3: implantando aplicativos da Web no Apache Tomcat

5. Agora vamos implantar uma nova aplicação web no Apache Tomcat, primeiro encontre o local onde a tag de serviço está fechada e insira as linhas abaixo após a primeira tag fechada Etiqueta de serviço.

<Service name="webapps2">
    <Connector port="7070" maxHttpHeaderSize="7192"
        maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
        enableLookups="false" redirectPort="7443" acceptCount="100"
        connectionTimeout="20000" disableUploadTimeout="true" />
        <Connector port="7072" 
        enableLookups="false" redirectPort="7043" protocol="AJP/1.3" />

    <Engine name="webapps2" defaultHost="localhost">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
            resourceName="UserDatabase"/>
            <Host name="localhost" appBase="webapps2"
                unpackWARs="true" autoDeploy="true"
                 xmlValidation="false" xmlNamespaceAware="false">
            </Host>
    </Engine>
</Service>

Como você pode ver, mudei a porta do conector para 7070 na entrada recém-inserida, já que o Tomcat padrão começa com a porta 8080. Após a configuração completa, haverá dois servidores web rodando nas portas 8080 e 7070.

6. Após salvar a alteração feita em server.xml, crie um diretório no apache chamado webapps2 dentro do apache main.

cd /home/tomcat/apache-tomcat-8.5.5/
mkdir webapps2

Se você observar a nova entrada server.xml que forneci, verá que o nome do serviço, a base do aplicativo e o mecanismo são nomeados como webapps2. Foi por isso que criei o diretório chamado webapps2. Você pode criar um conforme desejar, mas certifique-se de fazer alterações na entrada conforme necessário.

7. Para garantir que o segundo servidor web esteja funcionando, copiei o conteúdo do diretório webapps para o diretório webapps2.

cp -r webapps/* webapps2/

8. Agora a parte emocionante. Vamos iniciar o servidor e ver se está funcionando. Vá para o diretório bin e execute o script startup.sh. Você pode visualizar os logs no arquivo catalina.out que reside no diretório de logs.

cd bin/
./startup.sh
Using CATALINA_BASE:   /home/tomcat/apache-tomcat-8.5.5
Using CATALINA_HOME:   /home/tomcat/apache-tomcat-8.5.5
Using CATALINA_TMPDIR: /home/tomcat/apache-tomcat-8.5.5/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /home/tomcat/apache-tomcat-8.5.5/bin/bootstrap.jar:/home/tomcat/apache-tomcat-8.5.5/bin/tomcat-juli.jar
Tomcat started.

9. Se você consultar os logs, poderá ver que ambos webapps e webapps2 estão implantados e o aplicativo foi iniciado sem nenhum problema .

cd logs/
tail -25f catalina.out 
29-Sep-2016 12:13:51.210 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps/examples
29-Sep-2016 12:13:51.661 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps/examples has finished in 452 ms
29-Sep-2016 12:13:51.664 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps/docs
29-Sep-2016 12:13:51.703 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps/docs has finished in 39 ms
29-Sep-2016 12:13:51.704 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps/host-manager
29-Sep-2016 12:13:51.744 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps/host-manager has finished in 39 ms
29-Sep-2016 12:13:51.748 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler [http-nio-8080]
29-Sep-2016 12:13:51.767 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler [ajp-nio-8009]
29-Sep-2016 12:13:51.768 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service webapps2
29-Sep-2016 12:13:51.768 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/8.5.5
29-Sep-2016 12:13:51.777 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/manager
29-Sep-2016 12:13:51.879 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/manager has finished in 102 ms
29-Sep-2016 12:13:51.879 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/ROOT
29-Sep-2016 12:13:51.915 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/ROOT has finished in 35 ms
29-Sep-2016 12:13:51.927 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/examples
29-Sep-2016 12:13:52.323 INFO [localhost-startStop-1] org.apache.catalina.core.ApplicationContext.log ContextListener: contextInitialized()
29-Sep-2016 12:13:52.337 INFO [localhost-startStop-1] org.apache.catalina.core.ApplicationContext.log SessionListener: contextInitialized()
29-Sep-2016 12:13:52.341 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/examples has finished in 414 ms
29-Sep-2016 12:13:52.341 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/docs
29-Sep-2016 12:13:52.371 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/docs has finished in 29 ms
29-Sep-2016 12:13:52.371 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/host-manager
29-Sep-2016 12:13:52.417 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/host-manager has finished in 46 ms
...

10. Neste cenário, o IP do servidor que usei é 172.16.1.39 e você pode ver que eu poderia iniciar dois servidores web em um único contêiner Tomcat.

http://172.16.1.39:8080   [1st Web App]
http://172.16.1.39:7070   [2nd Web App]

Espero que todos vocês considerem este artigo útil e agradável. Mantenha contato com a TecMint e sinta-se à vontade para entrar em contato comigo caso tenha alguma dúvida sobre este artigo.