Instalación de Tomcat en Windows

De ChuWiki

Tomcat es un servidor de páginas html, jsp y Servlets. La instalación en Windows es bastante simple

En primer lugar, debemos tener instalado el compilador de Java, que se puede descargar de http://java.sun.com/javase/downloads/index.jsp

Luego hay que descargarse Tomcat de http://tomcat.apache.org/ La versión a elegir depende de la versión de Servlet que elijamos. La última de Servlet, según http://java.sun.com/products/servlet/ es la 2.5 que corresponde con Tomcat 6.x, así que bajamos esa.

En http://tomcat.apache.org/download-60.cgi elegimos hacia el final de la página la distribución binaria Windows Service Installer .

Ejecutamos el ejecutable que nos acabamos de descargar:

  • Sale un presentación. Pulsamos "next"
  • Sale la licencia. Pulsamos "I Agree".
  • Pregunta qué queremos instalar. Dejamos la opción por defecto: "Normal" y opciones marcadas por defecto. Aquí podríamos elegir si queremos que se instalen los ejemplos.
  • Pregunta en qué directorio. Ponemos uno a nuestro gusto o dejamos el de defecto. En adelante llamaré a este directorio $TOMCAT_HOME.
  • Pregunta puerto de conexión 8080, lo dejamos. Ponemos un administrador y password.
  • Pregunta el path del jre de java. Parece que localiza bien el que tengo instalado, así que lo dejo con lo que pone.
  • Le damos a "install" y esperamos.

Cuando termina nos pregunta si queremos arrancar apache tomcat. Le decimos que sí. Luego, para probar, arrancamos el navegador y ponemos la siguiente dirección http://localhost:8080. Si todo está bien instalado deberíamos ven en el navegador la página de bienvenida de Apache Tomcat.

Para probar algo más, escribimos una pequeña página jsp. Vamos al sitio de instalación de tomcat y en el directorio webapps/ROOT y con el notepad o el editor que queramos escribimos un fichero prueba.jsp con el siguiente contenido

<html>
<body>
<% out.println("Hola mundo"); %>
</body>
</html>

Luego volvemos al navegador y visitamos la página http://localhost:8080/prueba.jsp. Deberíamos ver el Hola Mundo.


Configurar Tomcat para que trabaje conjuntamente con un servidor Apache[editar]

Ya tenemos Tomcat instalado y funcionando. Podemos perfectamente dejarlo así.

Sin embargo, Tomcat está pensado para servir páginas html, jsp y Servlets. Se le pueden añadir módulos java o servlets específicos para que sea capaz de servir páginas php o de otro tipo. Sin embargo, suele ser más eficiente montar un servidor Apache normal y configurar Tomcat y Apache para que trabajen conjuntamente. De esta forma, el navegador se conectará contra el servidor Apache para la mayoría de las cosas. Cuando el navegador pida una página jsp o un Servlet, Apache redirigirá la petición a Tomcat y será este el que nos sirva dicha página jsp o Servlet.

Vamos a ver aquí cómo hacerlo.

Suponemos que ya tenemos instalado el Tomcat según los pasos anteriores. También debemos instalar el servidor Apache.

Ahora hay que descargarse el conector de apache con tomcat. Podemos bajarnos el binario si lo hay para nuestro sistema operativo de http://apache.rediris.es/tomcat/tomcat-connectors/jk/binaries/ En esa página debemos elegir el directorio de nuestro sistema operativo. En mi caso, que tengo windows y apache 2.0.53 elijo el fichero mod_jk-apache-2.0.59.so. Lo descargo en el directorio modules de donde tengo instalado Apache $APACHE_HOME\modules con el nombre mod_jk.so

Si sólo hay un servidor Apache y un servidor Tomcat y corren en la misma máquina, Tomcat es capaz de configurar a Apache con unas opciones por defecto. Si corren en máquinas separadas, debemos hacerlo manualmente.

Para la configuración por defecto hay que seguir los siguientes pasos:

  • Crear en $TOMCAT_HOME/conf un subdirectorio jk y dentro un fichero vacío de nombre workers.properties.
  • Editamos el fichero $TOMCAT_HOME/conf/server.xml y añadimos entre los tags Engine lo siguiente
...
<Engine ...>
   ...
   <!-- Cambia $APACHE_HOME por el directorio donde tú lo tengas instalado -->
   <Listener className="org.apache.jk.config.ApacheConfig" 
      modJk="$APACHE_HOME/modules/mod_jk.so" />
   ...
</Engine>
  • Una vez hecho esto, hay que rearrancar Tomcat. Al rearrancarlo se generará un fichero $TOMCAT_HOME/conf/auto/mod_jk.conf. Podemos copiar este fichero a $TOMCAT_HOME/conf/jk/mod_jk.conf por aquello de que queden juntos todos los ficheros de configuración del servidor Apache. El contenido de este fichero será (por supuesto en vez de $APACHE_HOME y $TOMCAT_HOME saldrán los directorios reales)
########## Auto generated on Tue Apr 10 21:11:37 CEST 2007##########

<IfModule !mod_jk.c>
  LoadModule jk_module "$APACHE_HOME/modules/mod_jk.so"
</IfModule>

JkWorkersFile "$TOMCAT_HOME/conf/jk/workers.properties"
JkLogFile "$TOMCAT_HOME/logs/mod_jk.log"

JkLogLevel emerg

<VirtualHost localhost>
    ServerName localhost

    JkMount /examples ajp13
    JkMount /examples/* ajp13

    JkMount /host-manager ajp13
    JkMount /host-manager/* ajp13

    JkMount /docs ajp13
    JkMount /docs/* ajp13

    JkMount /manager ajp13
    JkMount /manager/* ajp13
</VirtualHost>
  • En el fichero http.conf de Apache, que estará en $APACHE_HOME/conf/httpd.conf, debemos poner una línea hacia el final para incluir este fichero generado. La línea en httpd.conf es como esta
Include "$TOMCAT_HOME/conf/jk/mod_jk.conf"

Las comillas son necesarias si, como le gusta mucho a windows, nuestro path tiene espacios en blanco en los nombres del directorio, estilo "Archivos de Programa".

Ahora rearrancamos Apache y debería estar funcionando. Poniendo http://localhost deberíamos ver la página de inicio que hayamos puesto en Apache. Poniendo, por ejemplo http://localhost/docs deberíamos ver la documentación de Tomcat.

Cosas del fichero mod_jk.conf[editar]

En el fichero mod_jk.conf es donde se indica a Apache cómo y cuando llamar a Tomcat. Por defecto se llama a Tomcat en los directorios que se instalan por defecto en Tomcat. Son las líneas con JkMount.

Normalmente, debemos organizar nuestros propios directorios de Servlets y páginas jsp en Tomcat y debemos decirle a Apache que llame a Tomcat en esos directorios. Por eso, deberemos tocar este fichero manualmente según nuestros gustos/necesidades.

Lo primero que he puesto, para que todas las páginas .jsp se pidan a Tomcat, es la siguiente línea

    ...
    ServerName localhost

    JkMount /*.jsp ajp13

    JkMount /examples ajp13
    ...

Después de tocar este fichero y rearrancar los servidores, conectandome con el navegador a http://localhost me sale la página de Apache, pero si pongo http://localhost/prueba.jsp, se ejecuta la página jsp y me sale el "Hola Mundo".

Un pequeño detalle a tener en cuenta es que con esta configuración las páginas que sirve Apache y las que sirve Tomcat están en directorios completamente separados. Apache sirve las páginas que están en $APACHE_HOME/htdocs (o el directorio que hayamos configurado) mientras que Tomcat sirve las páginas/Servlets en $TOMCAT_HOME/webapp/ROOT