Quero acessar o Tomcat através do servidor Apache usando conectores. Aderi à documentação: http://tomcat.apache.org/connectors-doc/generic_howto/quick.html Eu o modifiquei apenas um pouco para corresponder à estrutura de diretórios usada no meu sistema Debian- (Squeeze).
Então, adicionei o seguinte ao /etc/apache2/httpd.conf:
# Load mod_jk module
# Update this path to match your modules location
#LoadModule jk_module libexec/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/apache2/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/apache2/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 /tomcat7/* worker1
Comentei o carregamento do módulo, porque isso já acontece, após a instalação do mod_jk através do sistema de pacotes (libapache2-mod-jk).
Meus workers.properties ficam assim:
# Define 1 real worker using ajp13
worker.list=worker1
# Set properties for worker1 (ajp13)
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009
O Tomcat 7 é instalado diretamente do archive do Apache, porque não é um pacote no Squeeze. O Tomcat 7 está em execução e acessível sob sua própria porta (8180, para não colidir com o tomcat6 no sistema de pacotes). Pelo que entendi, eu deveria ver agora o site tomcat com http: // host / tomcat7 / . Mas eu recebo um 404. O que está errado?
Depois que o quanta sugeriu definir o nível de log para depuração (obrigado), fiz isso e encontrei a seguinte mensagem de erro no mod_jk.log: 'jk_map_to_storage :: mod_jk.c (3585): falta do mapa de uri para 176.9.9.55:/tomcat7 / '. Pesquisei no Google e encontrei http://old.nabble.com/mod_jk%2C-missing-uri-map-td23984359.html
Portanto, as opções definidas no httpd.conf não foram usadas no VirtualHosts. Adicionei 'JkMountCopy On' ao meu VirtualHost - e obtive primeiro um Tomcat 404 (em vez do httpd 404). Problema aqui, que ele tenta acessar exatamente o mesmo URI montado, então no meu caso / tomcat7. Em vez disso, usei o nome do webapp como mount e tudo está bem para mim.
fonte
JkLogLevel
adebug
e recarga / reiniciar Apache? Tente isto:http://host/tomcat7/xx
. Publique todo o conteúdo deserver.xml
.Eu tive o mesmo problema. A solução é mudar
JkMount /tomcat7* worker1
paraJkMount /your-servlet-app* worker1
. Você pode ter quantasJkMount
quiser.Por exemplo, após adicionar
JkMount /manager* worker1
, você poderá acessarhttp://host/manager/html
Descobri esse problema depois de experimentar o AJP e o http. Eu tinha o seguinte log de acesso no meu
/var/log/tomcat7/localhost_access_log.txt
As duas primeiras linhas de log foram geradas enquanto eu uso o AJP. Os três últimos foram gerados enquanto eu uso o http para acessar diretamente o tomcat. Portanto, o apache está passando a URL inteira para o tomcat, em vez de remover o prefixo jkmount.
fonte
Use mod_proxy_ajp ou mod_proxy_http se puder: http://httpd.apache.org/docs/2.2/mod/mod_proxy_ajp.html http://httpd.apache.org/docs/2.2/mod/mod_proxy_http.html
fonte