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.

17 março 2009

Voltando a postar

Após o primeiro post deste ano deixei o blog juntando teias de aranha novamente. Mas agora pretendo cumprir mais um dos objetivos que citei no blog anterior: escrever mais no blog - o que seria o terceiro objetivo a ser buscado, já que iniciei o curso de inglês e implementei algumas coisas novas no Controle Financeiro Pessoal (preciso escolher um nome melhor pra ele).

Quanto ao Controle Financeiro, estou repensando algumas coisas sobre ele, principalmente sobre sua interface que devo trocar o JQuery pelo YUI. O certo mesmo é que iniciarei agora uma fase de ajustes no sistema e refatoração do código fonte para que possa deixá-lo estável o suficiente para disponibilizá-lo novamente. As metas principais são:
- Implementar segurança no sistema - na pressa de ter algo "usável" não me preocupei com isso, então agora é a hora;

- Melhorar a interface como usuário quanto a aparência e a usabilidade;

- Criar uma pequena página de introdução ao uso do sistema;

- Refatorar o código fonte que está muito mal escrito, eu admito.
Para acertar esses pontos levarei algum bom tempo ainda, mas tão logo termine esses trabalhos irei disponibilizar novamente o sistema para uso na internet.