18 março 2009

Integrando Apache HTTP Server com Apache Tomcat

Com o objetivo de ter um ambiente aqui em casa mais parecido com o ambiente que encontramos num serviço de hospedagem java, decidi integrar o Apache HPPT Server com o Apache Tomcat.

O objetivo mais comum para essa integração é a transparência obtida no acesso aos sistemas, ou seja, permitir que se acesse os sistemas que estejam rodando no Tomcat pela porta 80 em vez da porta 8080 que é utilizada por padrão pelo Tomcat. Um exemplo prático para isso é caso você precise rodar sistemas PHP com sistemas JEE no mesmo servidor utilizando a porta 80 para os dois casos.

Existem vários artigos explicando como se fazer essa integração utilizando-se do mod_jk para isso, porém existe um módulo do apache http que torna essa configuração mais simples, o mod_proxy_ajp. Esse módulo já vem incluso no apache http server, bastando apenas ativá-lo. Aqui estou utilizando o Ubuntu 8.10, mas acredito que não deva haver diferenças para outras distribuições linux.

Partindo do princípio de que ambos os servidores estão instalados, a primeira configuração a se fazer é no arquivo $TOMCAT_HOME/conf/server.xml. A alteração é para habilitar o conector do AJP 1.3, que deve ficar da seguinte forma:
< port="8009" style="font-weight: bold;">enableLookups="false" protocol="AJP/1.3" redirectPort="8443" />
Após isso precisamos configurar o Apache HTTP Server. A maneira como fiz aqui foi criar um host virtual para direcionar as requisições para o tomcat. Para isso adicionei no arquivo /etc/hosts mais uma entrada, ficando da seguinte forma:
127.0.0.1 localhost
127.0.0.1 servidorvirtual
Após configurar os hosts vamos habilitar o módulo mod_proxy_ajp:
# cd /etc/apache2/mods-enabled
# ln -s ../mods-available/proxy_ajp.load proxy_ajp.load
E caso não esteja habilitado, fazemos o mesmo procedimento para o módulo proxy, que é uma dependência do mod_proxy.ajp:
# ln -s ../mods-available/proxy.load proxy.load
# ln -s ../mods-available/proxy.conf proxy.conf
Habilitado os módulos, vamos configurar o servidor virtual que redirecionará as requisições ao Tomcat acrescentando ao arquivo /etc/apache2/sites-available/default a seguinte configuração:

ServerName servidorvirtual
ErrorLog /var/log/apache2/ajp.error.log
CustomLog /var/log/apache2/ajp.log combined


AddDefaultCharset Off
Order deny,allow
Allow from all


ProxyPass / ajp://localhost:8009/
ProxyPassReverse / ajp://localhost:8009/
Pronto, agora é só reiniciar o Apache HTTP Server e o Tomcat. O resultado é que ao acessar http://localhost você estará acessando o servidor HTTP diretamente, e ao acessar http://servidorvirtual o HTTP Server redirecionará a requisição paro o Tomcat.

Nenhum comentário: