Olá pessoal,
preciso fazer o deploy de uma aplicação Java que roda no Tomcat em um servidor, sendo que esse servidor já possui um Apache.
Devido às restrições de portas da máquina (o servidor não é meu) não é possível acessar a aplicação tomcat diretamente de outra máquina, então estou tentando fazer com que o Tomcat seja acessível através do Apache, ou seja, o Apache recebe a requisição e encaminha para o Tomcat processá-la.
No servidor o Apache é o 2.2 e o Tomcat o 6.0.
Pesquisei sobre o assunto nas seguintes páginas:
http://tomcat.apache.org/connectors-doc/webserver_howto/apache.html
http://tomcat.apache.org/connectors-doc/generic_howto/quick.html
Primeiro fiz o teste em localhost na minha máquina e deu certo.
O que fiz foi basicamente:
copiar o mod_jk.so para o lib do apache
criar o arquivo workers.properties na mesma pasta que o apache2.conf
criar o arquivo de mod_jk.conf no conf do tomcat
incluir o mod_jk.conf no fim do arquivo apache2.conf
Fiz os mesmos passos no servidor, mas sem sucesso. Nem o redirecionamento em localhost funciona.
Não sei mais o que fazer ou de quem poderia ser a ?culpa?, alguma configuração do apache ou do tomcat… mas pela análise dos logs chegasse a conclusão de que o apache não está nem redirecionando a chamada para o Tomcat.
Uma diferença importante o ambiente da minha máquina (onde tudo funcionou) e o do servidor, é que enquanto o meu o Apache recebe a chamada e já redireciona, no servidor ele tenta acessar a aplicação como se fosse uma aplicação do Apache (e não efetua o redirecionamento para o Tomcat).
Resumo do estado atual no servidor:
Analisando os logs percebesse que o módulo mod_jk é carregado sem erros;
Ao acessar $lynx http://localhost:8081/AppDoTomcat dá certo (o meu Tomcat tá instalado na 8081);
Ao acessar $lynx http://localhost/AppDoTomcat o resultado é um erro 404 (page not found), sendo que o Apache tenta acessar a aplicação no diretório www/AppDoTomcat, sendo www o diretório base de sites do Apache (nada a ver com o Tomcat).
Arquivos de configuração:
mod_jk.conf:
# Load mod_jk module
# Update this path to match your modules location
LoadModule jk_module /usr/lib/apache2/modules/mod_jk.so
# Declare the module for <IfModule directive> (remove this line on Apache 2.x)
# AddModule mod_jk.c
# Where to find workers.properties
# Update this path to match your conf directory location (put workers.properties next to httpd.conf)
JkWorkersFile /etc/apache2/workers.properties
# Where to put jk shared memory
# Update this path to match your local state directory or logs directory
JkShmFile /var/log/mod_jk.shm
# Where to put jk logs
# Update this path to match your logs directory location (put mod_jk.log next to access_log)
JkLogFile /var/log/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel info
# Select the timestamp log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
# Send everything for context /examples to worker named worker1 (ajp13)
JkMount /AppDoTomcat* worker1
workers.properties:
worker.list=worker1
# Set properties for worker1 (ajp13)
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009
# teste
worker.worker1.socket_keepalive=1
# teste 2
worker.worker1.mount=/AppDoTomcat/*
últimas linhas do apache2.conf:
# Enable TomCat to work with apache
Include /opt/tomcat/conf/mod_jk.conf