Tomcat es un contenedor de servlets (es lo que necesitamos para ejecutar JSP y Servlets) creado por la fundación Apache dentro del proyecto Jakarta. Aunque se puede utilizar como servidor web no está tan optimizado como el servidor web de la misma fundación, Apache. El siguiente tutorial tiene como objetivo mostrar cómo lograr que las peticiones a Apache se redirijan a Tomcat utilizando un conector (en este caso jk). A lo largo del tutorial se compilarán los paquetes a partir del código fuente, en lugar de utilizar precompilados, por lo que debería poder seguirse facilmente utilizando cualquier distribución.
Instalación del JDK
Evidentemente lo primero que necesitamos para desarrollar en Java es instalar el kit de desarrollo (JDK) que podemos descargar desde la web de Sun. A la hora de escribir este tutorial la última versión es la 5.0 Update 6. Utilizaremos la versión autoextraible (Linux self-extracting file) en lugar del paquete RPM.
su
Introducir contraseña de root
cp -p jdk-1_5_0_06-linux-i586.bin /usr/local
cd /usr/local
chmod +x jdk-1_5_0_06-linux-i586.bin
./jdk-1_5_0_06-linux-i586.bin
rm jdk-1_5_0_06-linux-i586.bin
Esto extraerá el contenido del archivo en una nueva carpeta jdk1.5.0_06 en /usr/local. Ahora basta crear la variable de entorno para indicar dónde está instalado el JDK y añadir a la variable PATH el directorio en el que se encuentran los binarios para poder ejecutarlos desde cualquier sitio. Para ello abrimos el archivo /etc/profile con nuestro editor favorito (como root) y añadimos las siguientes líneas al final:
JAVA_HOME=/usr/local/jdk1.5.0_06
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME
Actualizamos las variables de entorno:
source /etc/profile
Si todo ha salido bien al escribir javac -version
deberíamos obtener el número de versión del compilador de Java. En el caso de que algo halla salido mal el sistema nos informará de que no encontró ningún ejecutable con ese nombre.
Compilar e instalar Apache
Descargamos el código fuente de la aplicación desde la web de la fundación. Descomprimimos, compilamos e instalamos:
cp -p httpd-2.2.0.tar.gz /usr/local/src/
cd /usr/local/src
tar xvzf httpd-2.2.0.tar.gz
rm httpd-2.2.0.tar.gz
cd /usr/local/src/httpd-2.2.0
./configure --prefix=/usr/local/apache --enable-module=most --enable-mods-shared=most
make
make install
Con esto habremos instalado Apache en /usr/local/apache. Vamos a probar la configuración por defecto y a intentar iniciar el servidor:
/usr/local/apache/bin/apachectl configtest
/usr/local/apache/bin/apachectl start
Si todo ha funcionado correctamente deberíamos poder abrir la URL http://localhost en un navegador y ver la página de bienvenida de Apache.
Detengamos Apache hasta que instalemos Tomcat y el conector:
/usr/local/apache/bin/apachectl stop
Compilar e instalar Tomcat
Descargamos la aplicación desde su web. En este caso no tenemos más que descomprimir el archivo en el directorio que queramos, ya que se trata de una aplicación Java.
cp -p apache-tomcat-5.5.16.tar.gz /usr/local/
cd /usr/local
tar xvzf apache-tomcat-5.5.16.tar.gz
rm apache-tomcat-5.5.16.tar.gz
De nuevo vamos a editar /etc/profile para añadir la variable de entorno CATALINA_HOME:
CATALINA_HOME=/usr/local/apache-tomcat-5.5.16
export CATALINA_HOME
Y actualizamos:
source /etc/profile
Por último ejecutamos el script de iniciación de tomcat:
/usr/local/apache-tomcat-5.5.16/bin/startup.sh
Deberías ver la página de bienvenida de Tomcat introduciendo la URL http://localhost:8080 en un navegador.
Por ahora vamos a parar Tomcat
/usr/local/apache-tomcat-5.5.16/bin/shutdown.sh
En este momento tenemos instalados ambos servidores que correrían de forma independiente, con Apache escuchando en el puerto 80 y Tomcat escuchando en el 8080.
Compilar e instalar el conector JK
Existen dos versiones del conector, JK y JK2. Aunque parezca raro la versión que nos interesa instalar es la primera, ya que la segunda está descontinuada. El código fuente se puede descargar desde la web de Tomcat.
Vamos a compilar el módulo mod_jk.so (debería colocarlo en la carpeta de módulos del servidor Apache):
cp -p jakarta-tomcat-connectors-1.2.15-src.tar.gz /usr/local/src/
cd /usr/local/src
tar xvzf jakarta-tomcat-connectors-1.2.15-src.tar.gz
rm jakarta-tomcat-connectors-1.2.15-src.tar.gz
cd jakarta-tomcat-connectors-1.2.15-src/jk/native/
./buildconf.sh
./configure --with-apxs=/usr/local/apache/bin/apxs
make
make install
Y ahora sólo falta configurarlo. Creamos un nuevo archivo workers.properties en /usr/local/apache/conf con el siguiente contenido:
workers.tomcat_home=/usr/local/apache-tomcat-5.5.16/
workers.java_home=$JAVA_HOME
ps=/
worker.list=defaultworker.default.port=8009
worker.default.host=localhost
worker.default.type=ajp13
worker.default.lbfactor=1
Editamos el archivo de configuración de Apache (/usr/local/apache/conf/httpd.conf) para cargar el módulo. En la sección LoadModules añadimos:
LoadModule jk_module modules/mod_jk.so
Y al final del archivo:
JkWorkersFile "conf/workers.properties"
JkLogFile "logs/mod_jk.log"
JkLogLevel warnJkMount /jsp-examples default
JkMount /jsp-examples/* default
JkMount es la línea que indica a Apache que solicitudes reenviar a Tomcat. En este caso llamaremos a Tomcat siempre que se intente acceder a cualquier archivo del directorio jsp-examples, donde se guardan algunos ejemplos para demostrar el uso de JSP, utilizando el protocolo definido por «default». También podríamos haber utilizado algo del estilo *.jsp para ejecutar Tomcat sólo en el caso de que los archivos terminaran con esta extensión.
Por último iniciamos Apache y Tomcat:
/usr/local/apache-tomcat-5.5.16/bin/startup.sh
/usr/local/apache/bin/apachectl start
Al introducir la URL http://localhost deberíamos ver la web de bienvenida de Apache, al introducir http://localhost:8080 la de Tomcat, y con http://localhost/jsp-examples Apache enviará la petición a Tomcat.
Pingback: meneame.net
exelente guia siempre resulta un cacho conectar tomcat con apache.
Pingback: Apache y Tomcat en Windows
Muy buena guia.. felicitaciones!
excelente guia.
te felicito.
Muy buen manual. mejor no lo hay. eso se los aseguro. Mucha gracias.
Maravilloso, en verdad muchas gracias por compartir tus conocimientos y tu experiencia.
Ojala existieran mas instrucciones como estas.
Mis respetos y muchas felicitaciones.
hOLA mi comentario es que este tutorial es muy bueno lo voy ha aplicar, pero tengo una inquietud yo necesito trabajar en una aplicación en J2ME pero me recomendaron que utilice TOMCAT y que trabaje con NET BEANS mi interrogante es que si tengo que tranbajar con j2ME y Net Beans bajo linux o bajo windows para trabajar con el servidor TOMCAT le agradeceria que me ayudaran en esto.
Gracias
Puedes utilizar tomcat y netbeans tanto en windows como en linux, así que como prefieras Fernanda
Pero primero pregunta si tienes que desarrollar aplicaciones J2ME o J2EE, porque lo primero se refiere a móviles, pdas, y esa clase de cosas
ojala todos los manuales fueran asi de simples sin tanto choro
Excelente manual, te agradezco mucho el compartir tus conocimientos con todos nosotros.
Éxitos.
Solo una cosa que me provoco muchos dolores de cabeza, si se utiliza otro nombre para los workers en el worker.properties:
worker.list=w1
tiene que usarse el mismo nombre en http.conf:
JkMount /jsp-examples w1
Saludos,
Gmora
todo bien, tengo un pequeño problema cuando arranco el servidor apache me sale el siguiente mensaje:
Invalid command: ´JkMount/jps-examples´ , perhaps misspelled or defined by a module not included in the server configuration
ya le menie mucho y sige igual, nose que hacer.
Realmente es un manual excelente, me resultó muy útil y muy claro.
Te agradezco mucho la ayuda.
Muchos éxitos.
Saludos,
Danilo
Gerardo
Me fije que pusiste ´JkMount/jps-examples´ pero es ´JkMount/jsp-examples´
Eso,
Saludos
Como todos los demas deja que te felicite es un muy manual. todo va a lo que es sin tanto rodeo. AL PAN PAN Y AL VINO VINO.
Saludos a todos…..
Este tutorial es muy bueno……Felicidades…
Tengo una duda, estoy utilizando MySQL, java servlets y tomcat. No se con exactitud la diferencia de utilizar tomcat sin el direccionamiento de apache. Tengo entendido q tomcat funge como servidor web, pero e visto en otros y en esta pagina q cuando se trabaja con linux se hace ese tipo de redireccionamiento para tomcat…… ¿que debo de hacer, que recomiendo hacer y porq ?…..
Si alguien sabe, yo ya investigue, pero no soy experto en esta materia y quiero saber a traves de los q saben que recomiendan…..
Saludos.. de antemano gracias…..
(jrm)
Que tal:
Excelente esta guia de instalación, aunque supongo que algo me falló debido a que puedo acceder a apache, pero no a tomcat..
ojala me puedan ayudar.
Saludos.
Excelente tutorial, he seguido todos los pasos de la guía, pero al iniciar tomcat esperaria ver la página localhost:8080, mas no muestra nada, manejo SUSE 10.0.
¿que debo hacer para que tomcat me deje ver páginas web?.
Espero que mis palabras de agradecimiento sean suficientes para aquel que ha desarrollado esta guía, ¡Mil gracias!. El tiempo que has dedicado a hacer esto no tiene precio porque tambien he instalado recientemente y desde luego tu guía me resultará útil para depurar y mejorar un poco más mi instalación de tomcat que hice, de nuevo ¡Mil gracias!.
Muy buena guia.
Saludos
exelente ayuda mis mas sinceras felicitaciones, mil gracias me ayudo full y espero poder contar contigo si se me presentace otro problema
eddy
buenisimo
holas a todos:
tengo una consulta, actualmente puedo correr aplicaciones web con jsp y php con el tomcat en windows, pero resulta que mi aplicacion web necesito pasarla a linux, quisiera saber si es posible hacer esto en linux tambien o si hay una forma mas facil
espero me ayuden
christopher
hola la yuda es muy biuena pero me sale un error cuando estoy en el conector JK digito la linea
./configure –with-apxs=/usr/local/apache/bin/apxs
y me sale error del apxs alguien me podria ayudar
ya tengo dias en esto y no me sale necesito poner a trabajar mi servidor gracias antemano
Eddy, el error q te sale es pq el directorio de apxs a veces es bin y a veces es sbin, no sé si por al versión o q px, pero yo vi este mismo manual en otro blog, pero un poco diferente, y al hojear en los directorios parecidos me di cuenta de que no era sbin sino bin el directorio, en tu caso supongo q es al revés pq aqui dice q es bin, tal vez tu directorio es sbin, pero estaria bien q lo hojearas antes de modificar el comando de configuración, te recomiendo q cheques los directorios con «ls -l» pq epxs es un apuntador a una carpeta que se encuentra en otro lado ;), espero te ayude, es mi primer respuesta en este foro 😛
Enhorabuena…
Excelente guía, me fue de mucha utilidad… Agradezco tu valiosa colaboración…
Saludos desde Montería – Colombia
Hola! En verdad muchas muchas gracias por el tutorial, soy nueva en esto y en ocasiones es necesario un buen apoyo para empezar a caminar.
Gracias!
Sólo puedo repetir lo que han escrito otros: Muchas gracias por hacer una guia clara, concisa y sencilla. No es larga, no tiene florituras, términos técnicos ni palabras grandilocuentes… Pero funciona y se puede implementar en pocos minutos. Sencillez y rapidez, perfecto para (casi) todo el mundo.
Un saludo.
Simplemente Excelente!!!!
hola que tal, yo instale tengo ya todo listo pero cuando trato de reiniciar el servicio de http me manda este error
Cannot load /etc/httpd/modules/mod_jk2.so into server: /etc/httpd/modules/mod_jk2.so: cannot open shared object file: No such file or directory
y ya agregue la linea de LoadModule en httpd.conf
las rutas de trabajo que tengo son
java=/usr/java/jdk1.5.0_04/
tomcat=/usr/local/apache-tomcat-5.5.20/
que puede estar fallando??
gracias
Que tal, por el nombre del archivo es probable que tengas q renombrar el archivo resultante del proceso de compilación o verificar tus modificaciones del httpd.conf pq el archivo debe llamarse «mod_jk.so», en el error que posteas parece ser que nombraste el archivo «mod_jk2.so» en las modificaciones al httpd.conf, énfasis en el «2», el archivo que te genera el proceso de compilación es «mod_jk.so» y así debe de ser. Espero te sirva 😉 (Segunda respuesta en el foro xD)
tomcat es un servidor de aplicaciones y se puede usar como servidor web tal como apache, la idea de conectar apache y tomcat (al menos para mi) es lograr la característica de tener php y jsp en un mismo servidor web en este caso apache. y no tener que lidear con el puerto 8080 para jsp y el 80 para php, entonces conectarlos lo hace mas cómodo.
ahora si solo se interesan por correr tomcat como servidor web independiente de apache también es posible, es bastante potente y ocupa pocos recursos, esto no quiere decir que apache conectado con tomcat tenga menor rendimiento de hecho esta forma se viene ocupando desde mucho antes de que se pudiera ocupar tomcat como un servidor web de producción independiente y confiable y aunque tomcat siempre ha sido independiente en versiones anteriores no era tan confiable como apache y se ocupaba de esa forma solo para pruebas de desarrollo. pero ahora podemos decir que tomcat solo anda muy bien y muy rápido.
ocupar tomcat independiente o apache + tomcat dependerá de que tipo de implementación se quiera. como dije antes para mi es mas cómodo conectarlos para tener jsp y php de forma «simultanea».
Tengo un problema tengo instalado centos 4.4 y cuando llego al proceso de instalacion del conector al configurar el conector, no tengo la ruta /usr/local/apache/bin, es necesario configurar con apxs que significa ello. pues tengo configurado el apache que viene con centos y normal me sale el tomcat en el puerto 8080 pero el conector como lo configuro. o debo instalar el apache de nuevo
Gracias por la consulta
apxs es una aplicación para extender la funcionalidad de apache. si quieres compilar el conector lo vas a necesitar, claro. Prueba a ver si está en el paquete apache-dev, apache-devel o algo similar.
Si no siempre puedes ver si tienes el módulo ya compilado disponible para tu plataforma en algún sitio. Ubuntu 6.06 lo tiene en los repositorios, por ejemplo.
Por otro lado, si no sabes dónde está tal o cual ejecutable puedes usar el comando «whereis aplicacion»
Hola que tal, todo salio bien, pero para probar con la base de datos mysql por el shell me sale el siguiente error:
[root@linux packBean]# java TestConexion
Exception in thread «main» java.lang.NoClassDefFoundError: TestConexion
at gnu.java.lang.MainThread.run(libgcj.so.7rh)
Caused by: java.lang.ClassNotFoundException: TestConexion not found in gnu.gcj.runtime.SystemClassLoader{urls=[file:/usr/local/apache-tomcat-6.0.2/lib/connector.jar], parent=gnu.gcj.runtime.ExtensionClassLoader{urls=[], parent=null}}
at java.net.URLClassLoader.findClass(libgcj.so.7rh)
at gnu.gcj.runtime.SystemClassLoader.findClass(libgcj.so.7rh)
at java.lang.ClassLoader.loadClass(libgcj.so.7rh)
at java.lang.ClassLoader.loadClass(libgcj.so.7rh)
at gnu.java.lang.MainThread.run(libgcj.so.7rh)
He intentado por todo lado solucionar este error, pero nada..
Gracias mil a quien haya hecho esta guía , es concreta fácil de seguir y me ha salvado la vida!!
Buenas
El tutorial realmente esta genial.
Ahora lo interesante seria añadirle PHP y MySQL, alguien sabria como realizar esto, porque segun creo hay que compilar php antes de apache, para despues compilar apache con soporte php… alguien podria indicar como se haria?
Y ya puestos a pedir, 😀 añadirle el mod apache::asp
Escribí un tutorial sobre cómo instalar PHP y MySQL también, pero en Windows
Eso lo instala hasta mi abuelita!!!!
Ahora puedo trabajar en Linux!!!!
;o)
excelente tutorial
Excelente tutorial!
Hola el tutorial esta muy bueno.. Yo me estoy iniciando en linux y tengo instalado Ubuntu 5.10. He hecho todo al pie de la letra pero cuando voy a comenzar el apache
root@asl52:/usr/local/apache/bin# apachectl -k start
me da este error
bash: apachectl: command not found
NO entiendo por que? Ya revise la carpeta y si esta el apachectl alli.
Alguien puede ayudarme?
Ejecútalo así:
./apachectl -k start
Ok ya lo hice ahora…
root@asl52:/bin# cd /usr/local/apache/bin
root@asl52:/usr/local/apache/bin# ./apachectl -k start
httpd: Could not reliably determine the server’s fully qualified domain name, using 192.168.1.52 for ServerName
root@asl52:/usr/local/apache/bin#
Que es eso?
Sólo indica que Apache no ha encontrado el parámetro ServerName en el archivo de configuración (httpd.conf), que es el que le indica el nombre de dominio de tu máquina, así que va a asumir por defecto que vas a acceder al servidor usando la IP de la máquina (192.168.1.52). En principio el servidor debería estar corriendo ya sin problemas y deberías ver la página de presentación de apache escribiendo http://192.168.1.52, http://localhost o http://127.0.0.1 en el navegador
De todas formas, si sólo estás instalando Apache para jugar con él en local y no quieres que te saque ese mensaje puedes añadir «ServerName localhost» en ese archivo de configuración (de hecho creo que esa línea está por defecto pero comentada)
Ojala fuera para jugar.. Estoy instalando apache para luego instalar Tomcat y usarlos en mi trabajo para trabajar con jsp… Gracias! Ya funciono!!!! It works!!! Gracias gracias!
Cabe destacar que me ha servido bastante este tutorial y las respuestas a mis comentarios!
Soy yo de nuevo.. Ahora necesito detener el servidor y tampoco lo hace…
Coloco /usr/local/apache/bin/apachectl stop y sigue corriendo.
Si no es mucha molestia puedes decirme que hacer please?
¿Qué te responde cuando lanzas el comando?
De todas formas siempre puedes matar el proceso usando el comando kill
Genial
Lo estoy probando y parece que funciona
Gracias
Hola a todos:
He seguido el tutorial paso por paso y el archivo de logs de Apache me dice que Tomcat está escuchando en un puerto erróneo.¿alquien tiene alguna idea?
GRACIAs
Hola cuando instale apache levantaba bien pero cuando agregue las lineas
JkWorkersFile «conf/workers.properties»
JkLogFile «logs/mod_jk.log»
JkLogLevel warn
JkMount /jsp-examples default
JkMount /jsp-examples/* default
en el archivo de configuracion de apache me da este error
Syntax error on line 418 of /usr/local/apache2/conf/httpd.conf:
Invalid command ‘JkMount/jsp-examples’, perhaps misspelled or defined by a module not included in the server configuration
y ahora no inicia apache.
Please help!!!!