Integrando Tomcat5 e Apache2 com Virtual Hosts

Faz algum tempo que faço nenhum post aqui e para quebrar esse jejum resolvi postar um artigo sobre como integrar o Tomcat com o Apache e de quebra usar virtualhosts em um Debian, mas a experiencia pode ser utilizada em qualquer outra plataforma. Por acaso a plataforma que os fornecedores me deram para trabalhar era um Debian (todos sabem que prefiro o CentOS).
Quando me entregaram a máquina ela já estava com apache2 instalado, tomcat5 e java 1.6, porém a opção de virtual hosting não estava funcionando e precisavam que o website fosse acessado assim:
http://www.portaldodominio.com.br/
e não
http://201.x.xxx.75/portal
De posse do login de root e ciente que o S.O era um debian 4 arregacei as mangas e comecei o trabalho.
O Modulo JK
Após rápida consulta ao oráculo (google.com.br), descobri que necessitava do mod_jk para que o apache pudesse entender as requisições do tomcat.
simplesmente utilizei o apt-get para fazer esse trabalho “sujo” para mim.
[root@appserver]# apt-get install libapache2-mod-jk
Criando o arquivo workers.properties
Para que o apache consiga se comunicar adequadamente com o tomcat é necessário a criação do arquivo workers.properties. Esse arquivo conterá os detalhes sobre cada processo ligado ao Tomcat definido através do workers que se comunicam através do protocolo ajpv13.
O conteudo do meu arquivo fico assim:
#
# O worker foi chamado de portal
#
#workers.tomcat_home=/opt/tomcat5.5/webapps/
workers.java_home=/usr/java/
ps=/
worker.list=portal
worker.default.port=8080
worker.default.host=localhost
worker.default.type=ajp13
worker.default.lbfactor=1
Uma vez configurado e salvo é hora de configurar um virtualhost no apache, para isso criei o arquivo siteportal no diretório /etc/apache/sites-enabled com o seguinte conteudo.
<VirtualHost 201.x.xxx.75:80>
ServerName http://www.portaldodominio.com.br
ServerAdmin suporte@portaldodominio.com.brDocumentRoot “/opt/tomcat5.5/webapps/portaldodominio”
<Directory “/opt/tomcat5.5/webapps/portaldodominio”>
Options None
AllowOverride None
Order allow,deny
allow from all
</Directory>JkMount /* portal
JkMount /*.jsp portalDirectoryIndex index.do index.jsp index.html
# Globally deny access to the WEB-INF directory
<LocationMatch ..*WEB-INF.*.>
AllowOverride None
deny from all
</LocationMatch>
</VirtualHost>
Salvei o arquivo e reiniciei o apache com um apachectl restart
Configurando o Tomcat
Essa foi a hora que vi o porco torcer o rabo, devido a minha pouca vivência com a utilização de Tomcat com virtualhost levei algum tempo para entender como a carrapeta rodava, mas no fim tudo funcionou.
Primeiro inseri o seguinte trecho no arquivo /opt/tomcat5.5/conf/server.xml antes da ultima tag </Engine>.
<listener className=”org.apache.jk.config.apacheConfig” mod_jk=”/usr/apache2/modules/mod_jk.so” workerConfig=”/etc/apache2/workers.properties”/>
<Host name=”www.portaldodominio.com.br” appBase=”/opt/tomcat5.5/webapps/portaldodominio” unpackWARs=”true” autoDeploy=”true”>
<Context path=”" docBase=”" debug=”1″ reloadable=”true”/>
<Valve className=”org.apache.catalina.valves.AccessLogValve” directory=”logs” prefix=”web1_access_log.” suffix=”.txt” pattern=”common” resolveHosts=”false”/>
</Host>
Repare que o appBase aponta para o local aonde está o website (portaldodominio), essa ação fará com que o tomcat consiga entender que o host name www.portaldodominio.com.br aponta para o webapps correto!
Salve o arquivo e reinicie o apache e o tomcat!
[root@appserver]# /etc/initi.d/tomcat5.5 restart
[root@appserver]# apache2ctl restart
Após o reinicio da dupla acima acessei a utl: http://www.portaldodominio.com.br/ e o website apareceu e não a página default o apache2.
É isso aí pessoal, espero conseguir ajudar alguém com esse pequeno artigo.
Até a proxima!!