Integrando Apache 2 com Tomcat 5

Nesse artigo vamos demonstrar a integração do servidor web Apache com o servidor JSP Tomcat. Demonstrarei como instalar, configurar e integrar as switches. Esse artigo foi baseado na distro Debian, Apache2 e Tomcat5.

[ Hits: 73.520 ]

Por: Leandro Moreira em 20/09/2006


Fazendo Apache e Tomcat responderem na mesma porta



Como sabemos, o Apache funciona na porta 80, já o Tomcat funciona na porta 8080. Devemos então fazer que as requisições que cheguem na porta 80 sejam direcionadas para a porta 8080 de forma transparente, para isso temos duas possibilidades, a primeira criar um redirecionamento com iptables:

iptables -A FORWARD -s ip_ser_tomcat -p tcp --dport 80 -j REDIRECT 8080
iptables -A FORWARD d ip_ser_tomcat -p tcp --sport 80 -j REDIRECT 8080

Com isso o iptables vai redirecionar todas as conexões que chegarem na porta 80 para a 8080, só que eu testei uma outra forma que eu particularmente gostei mais, vamos criar um proxy reverso, ele vai fazer exatamente o mesmo que o iptables, redirecionar as conexões destinadas a porta 80 para a 8080.

Primeiramente temos que habilitar o módulo proxy:

# ln -s /etc/apache2/mod-available/proxy.load /etc/apache2/mod-enable

Habilitando o módulo rewrite:

# ln -s /etc/apache2/mod-available/proxy.load /etc/apache2/mod-enable

Adicione as seguinte linhas no apache2.conf (/etc/apache2/apache2.conf):

ProxyPass /jsp-examples http://localhost:8080/jsp-examples
ProxyPassReverse /jsp-examples http://localhost:8080/jsp-examples

Salve o arquivo e saia.

Inicie o Tomcat e o Apache (nessa ordem, primeiro o Tomcat e em seguida o Apache).

Adicione a seguintes linhas ao arquivo server.xml (/etc/tomcat5/server.xml):

proxyName="www.mycompany.com"
proxyPort="80"

Testando a obra:

http://localhost/jsp-examples

Referências:
Página anterior    

Páginas do artigo
   1. Instalação
   2. Configuração do JDK
   3. Configuração do Tomcat
   4. Fazendo Apache e Tomcat responderem na mesma porta
Outros artigos deste autor

Integrando autenticação do Squid ao Active Directory

Instalando e configurando o Nagios com e sem MySQL

Instalação e configuração do Squid com TProxy no Debian

Recuperando RouterOS na RouterBOARD 450

Compilando kernel com suporte a POM (path-omatic) e Layer7 no Debian e Slackware

Leitura recomendada

Roteando duas sub-redes com servidores

Virtual Host e Virtual Host Mod_Proxy

Instalando e configurando o modem SpeedTouch 330 USB da Alcatel

Recurso de Views no Bind

Passos essenciais para configurar seu modem 3G no Linux

  
Comentários
[1] Comentário enviado por tatototino em 20/09/2006 - 11:01h

Isso que você não é integração do Apache com Tomcat e sim um proxy reverso para o Sertvidor Tomcat com o módulo "mod_proxy" do Apache.

Para a integração do Apache com o Tomcat você poderia usar o módulo do Apache, o "mod_jk", também não entendi por que você habilitou o mod_rewrite.

[2] Comentário enviado por mslinux em 20/09/2006 - 13:45h

Acho que a questão da integração foi confudida.
Melhor, fazer as devidas correções.
Sinceramente

[3] Comentário enviado por tatototino em 20/09/2006 - 14:30h

Por exemplo, acho que o servidor web que hospeda esse site tem mod_jk versão 1.2.14.
Lembrado que eu só acho! =P


[4] Comentário enviado por leandromoreirati em 20/09/2006 - 23:12h

Quando disse Integrando Apache e o TOMCAT quiz dizer como abordado no ultimo tópico, fazer âmbos os serviços responderem na mesma porta. Como relação ao mod_jk se você observou o artigo corretamente deve ter vizualizado o comando:

#aptitude install libapache2-mod-jk2

Que serve para instalar o mod_jk como usei o apache2 no artigo usei o libapache2-mod-jk2 para a configuração.
Já o mdódulo rewrite, tive vários problemas com o proxy reverso ao nao ativa-lo. Após ativa-lo, meu porxy reverso funcionou sem problemas.

[5] Comentário enviado por tatototino em 21/09/2006 - 06:47h

Entendo, mas você nem mesmo configurou o mod_jk, você só o instalou, nem carregar o módulo você carregou, talvez tenha carregado na instalação(alguns módulos adiciona a linha no "httpd.conf" automaticamente para carregar o módulo), mas mesmo assim você não o configurou!

[6] Comentário enviado por y2h4ck em 21/09/2006 - 18:59h

Parabéns pelo artigo.

Abraços.

[7] Comentário enviado por fsc7 em 22/09/2006 - 18:41h

Concordo com o tatototino, você não configurou o mod_jk. Isso não é integração de apache e tomcat na minha opinião, uma fonte melhor seria isso aqui:

http://www.linuxquestions.org/questions/showthread.php?t=429037

De qualquer forma o seu artigo é bom. Só tme que mudar o título.

[8] Comentário enviado por melphos em 23/09/2006 - 12:43h

Para integrar o apache com o tomcat na mesma porta, só faltou você setar o work.properties e configurar as opções do módulo jk em seu httpd.conf.

Um pequeno exemplo, /etc/apache2/conf.d/jk2.conf, coloque:
JkSet config.file /etc/apache2/workers2.properties

no arquivo, /etc/apache2/workers2.properties, adicone:
[shm]
file=/var/log/apache2/mod_jk.log
size=1048576

# Example socket channel, override port and host.
[channel.socket:localhost:8009]
port=8009
host=127.0.0.1

# define the worker
[ajp13:localhost:8009]
channel=channel.socket:localhost:8009

# Uri mapping
[uri:/*]
worker=ajp13:localhost:8009

Pronto, apenas verifique as opções se o tomcat está na mesma máquina e escutando nas portas 8009, se caso não for, mude para a porta desejada, se caso não for o IP local, mude para o do servidor tomcat.

De resto o seu artigo está muito bom, meus parabéns. O que os colegas falaram e eu concordo é que não houve uma integração efetiva com as "ferramentas" apropriadas e sim uma "gambe", com o iptables e mod_proxy e mod_rewrite.

Abraços,
Ivan

[9] Comentário enviado por leandromoreirati em 24/09/2006 - 15:08h

Caros,
Muito obrigado pelas dicas, relamente cometi 2 pecados capitais nesse artigo o primeiro e que eu realmete não configirei o jdk nos mods do apache e o segundo, eu nao criei um link do workers2.properties que se encontra na pasta /etc/tomcat5 o arquivo esta configurado conforme o melphos demonstrou com muita propriedade. Gostaria imensamente de pedir desculpas a comunidade por tal descuido no artigo. E mais uma vez gostair de agradecer a todos pelas dicas. Eu so nao respondi antes pois o bicho ta pegando pro meu lado e si hoje pude analizar com mais calma o que estava sendo postado.

Att.

Leandro

[10] Comentário enviado por datalann em 02/10/2008 - 08:48h

E aí Galera, blza?
Eu fiz todo o redirecionamento e funcionou no ponto de vista de que está redirecionando, porém a página está em jsf com componentes richfaces e JSF Facelet e quando eu passo a usar o redirecionamento, eu tenho um problema que esses componentes não estão carregando. A página aparece toda desestrutura e as janelas e contornos que existe na página, desaparecem deixando os campos de preenchimento e outros fora do lugar. Lembrando que eu apenas configuro o servidor e que o programador é uma outra pessoa que trabalha aqui comigo. Alguém saberia como resolver isso?

Att.
Álann Dias


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts