Quiero acceder a Tomcat a través del servidor web Apache utilizando conectores. Me pegué a la documentación: http://tomcat.apache.org/connectors-doc/generic_howto/quick.html Solo lo modifiqué un poco para que coincida con la estructura de directorios utilizada en mi Debian- (Squeeze) -System.
Entonces agregué lo siguiente a /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
Comenté la carga del módulo, porque eso ya sucede, después de instalar mod_jk a través del paquete-sistema (libapache2-mod-jk).
Mis trabajadores.propiedades se ven así:
# 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
Tomcat 7 se instala directamente desde el archivo de Apache, porque no es un paquete en Squeeze. Tomcat 7 se está ejecutando y es accesible bajo su propio puerto (8180, para no chocar con tomcat6 del sistema de paquetes). Según tengo entendido, debería ver ahora el sitio tomcat con http: // host / tomcat7 / . Pero obtengo un 404 en su lugar. ¿Qué está mal?
Después de que Quanta sugirió establecer el nivel de registro para depurar (gracias) lo hice y encontré el siguiente mensaje de error en mod_jk.log: 'jk_map_to_storage :: mod_jk.c (3585): falta el mapa de uri para 176.9.9.55:/tomcat7 / '. Busqué en Google y encontré http://old.nabble.com/mod_jk%2C-missing-uri-map-td23984359.html
Por lo tanto, las opciones establecidas en httpd.conf no se usaron en VirtualHosts. Agregué 'JkMountCopy On' a mi VirtualHost y obtuve primero un Tomcat 404 (en lugar del httpd 404). Problema aquí, que intenta acceder exactamente al mismo URI montado, así que en mi caso / tomcat7. En su lugar, usé el nombre de la aplicación web como montaje y todo está bien para mí.
fuente
JkLogLevel
adebug
cargar / reiniciar Apache? Prueba esto:http://host/tomcat7/xx
. Publica todo el contenido deserver.xml
.Yo tuve el mismo problema. La solución es cambiar
JkMount /tomcat7* worker1
aJkMount /your-servlet-app* worker1
. Puedes tener tantosJkMount
como quieras.Por ejemplo, después de agregar
JkMount /manager* worker1
, podrá accederhttp://host/manager/html
Descubrí este problema después de haber intentado con AJP y http. Tuve el siguiente registro de acceso en mi
/var/log/tomcat7/localhost_access_log.txt
Las dos primeras líneas de registro se generaron mientras uso AJP. Los últimos tres se generaron mientras uso http para acceder directamente a tomcat. Entonces, apache pasa la URL completa a tomcat, en lugar de eliminar el prefijo jkmount.
fuente
Utilice mod_proxy_ajp o mod_proxy_http en su lugar si puede: http://httpd.apache.org/docs/2.2/mod/mod_proxy_ajp.html http://httpd.apache.org/docs/2.2/mod/mod_proxy_http.html
fuente