Durante estos días he tenido que conectar un servidor Apache 2.2.14 con un Tomcat 6, para realizar pruebas. Tras leer un montón de páginas que explican como hacerlo he creado una «chuleta» que ahora comparto con todos.
Paso seguidos:
1. Descargo desde http://apache.rediris.es/tomcat/tomcat-connectors/jk/binaries/linux/jk-1.2.28/i586/ el mod_jk para apache 2.2.x
2. Copio en modules de apache el mod_jk.so
3. Creo en conf el fichero mod_jk, que indica donde cargar el .so descargado, el fichero de workers.properties
Teniendo el aspecto
# Load mod_jk module
# Update this path to match your modules location
LoadModule jk_module modules/mod_jk.so
# Where to find workers.properties
# Update this path to match your conf directory location
JkWorkersFile conf/workers.properties
# Where to put jk logs
# Update this path to match your logs directory location
JkLogFile logs/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel info
# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
# JkOptions indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
# JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"
# Send everything for context /ws to worker ajp13
JkMount /ws ajp13
JkMount /ws/* ajp13
# Send everything for context /jsp-examples to worker ajp13
JkMount /jsp-examples ajp13
JkMount /jsp-examples/* ajp13
# Send everything for context /servelts-examples to worker ajp13
JkMount /servlets-examples ajp13
JkMount /servlets-examples/* ajp13
Con JkMount indicamos que cuando se indique esa ruta en el apache se redirija la petición al tomcat para que resuelva la petición.
4. Crear el workes.properties, donde se indica como conectar con el tomcat
# Define 1 real worker named ajp13
worker.list=ajp13
# Set properties for worker named ajp13 to use ajp13 protocol,
# and run on port 8009
worker.ajp13.type=ajp13
worker.ajp13.host=localhost
worker.ajp13.port=8009
worker.ajp13.lbfactor=50
worker.ajp13.cachesize=10
worker.ajp13.cache_timeout=600
worker.ajp13.socket_keepalive=1
worker.ajp13.socket_timeout=300# Define 1 real worker named ajp13
worker.list=ajp13
Con este fichero podemos indicar todas la conexiones a los tomcats que resolverán las peticiones.
5. Luego en conf\server.xml del Tomcat habilitar la conexión ajp13 en el tomcat, en este fichero descomentar esta linea
Esta parte es importante porque con esto indicamos al tomcat por que puerto escucha para atender conexiones, así el valor de port debe ser el mismo de worker.ajp13.port
6. Incluyo el fichero con del mod_jk.conf en el httpd.conf de apache
include conf/mod_jk.conf
Hola, supongo que tu implementacion es para linux,….funciona igual para windows?
Si, funciona yo la he utilizado en el trabajo.
Gracias por el comentario.
Otra consulta… en el archivo mod_jk.conf : en las lineas
# Send everything for context /jsp-examples to worker ajp13
JkMount /jsp-examples ajp13
JkMount /jsp-examples/* ajp13
# Send everything for context /servelts-examples to worker ajp13
JkMount /servlets-examples ajp13
JkMount /servlets-examples/* ajp13
las url’s jsp-examples y servlets-examples debo reemplazarlas por mis url’s?….gracias
Si, esas son el nombre de tus aplicaciones en el Tomcat, no tienes que cambiarlas por ninguna url, son el nombre de la aplicación. Por ejemplo si tú aplicación se llama «pepe», sería:
Si en el tomcat para acceder a la aplicación haces esto:
http://localhost:8080/pepe
Pondrías en la configuración del mod_jk.conf, lo siguiente:
JkMount /pepe ajp13
JkMount /pepe/* ajp13 -> para que tome todo lo que cuelgue de «pepe»
Espero que te sirva de ayuda.
David, gracias por el tiempo y compartir tus conocimientos, tengo una duda quiero hacer un index.html que capture un nombre en la carpeta httdocs y en el destino (action ) tiene que llamar a un servlet enviodatos.java , que se encuentra en tomcat el cual retorna el nombre y un saludo ,ahora dime ,gracias a este protocolo me deberia aparecer
la pagina sin ningún problema verdad. por favor contesta. O podrias hacer un ejemplo de como hacer una aplicación.¡¿como deberia hacerlo.Graciassssss
Hola:
Mi duda es, que una vez conectado apache con eclipse para que apache reenvie las peticiones. Como se puede configurar el ide Eclipse para trabajar en un entorno asi ?. Como se puede añadir
un runtime environment en eclipse de modo que sea eclipse el que trabaje con apache y este su
vez reenvie las peticiones a tomcat ?. Añadir un contenedor tomcat a eclipse es sencillo pero
no he encontrado como configurar apache http server para trabajar con eclipse ?
Alguien sabe como se podria hacer sin instalar un plugin como el PDT de eclipse para trabajar
con PHP ? , Trabajo con jsp y por tanto PHP no me interesa en estos momentos
Saludos.
Xavier Monfort