Cuando instalas Apache Tomcat, se crea una estructura de directorios donde cada carpeta tiene una función específica. Conocer esta organización es fundamental para administrar aplicaciones, realizar despliegues, configurar el servidor y solucionar problemas.
A continuación se describe cada una de las carpetas y archivos más importantes de Tomcat.
Instalar Apache Tomcat
- Aprende a instalar apache tomcat en Linux siguiendo los pasos correctos.
- Aprende a instalar apache tomcat en Windows con un post explicado.
Ubicacion de Apache Tomcat
Cuando instalas Apache Tomcat, la estructura de directorios está organizada para separar la configuración, los binarios, las aplicaciones desplegadas y los archivos temporales.
Supongamos que lo instalaste en:
- Windows:
c:/tomcat - Linux:
/opt/tomcat/
Esta sería la descripción de cada elemento.
Carpetas y archivos de Apache Tomcat
| Archivo / Carpeta | Tipo | Descripción | ¿Se modifica normalmente? |
|---|---|---|---|
| BUILDING.txt | Documento | Explica cómo compilar Tomcat desde el código fuente utilizando Maven y Ant. Solo es útil si vas a desarrollar Tomcat. | No |
| CONTRIBUTING.md | Documento | Guía para desarrolladores que quieran contribuir al proyecto Apache Tomcat. | No |
| LICENSE | Documento | Contiene la licencia Apache License 2.0 bajo la que se distribuye Tomcat. | No |
| NOTICE | Documento | Información legal adicional sobre derechos de autor y componentes incluidos. | No |
| README.md | Documento | Introducción a Tomcat, enlaces útiles y descripción general del proyecto. | No |
| RELEASE-NOTES | Documento | Lista de novedades, mejoras, cambios y problemas conocidos de la versión instalada. | No |
| RUNNING.txt | Documento | Manual para iniciar, detener y configurar Tomcat desde la línea de comandos. | No |
| bin/ | Directorio | Contiene los scripts necesarios para iniciar, detener y administrar Tomcat. | Sí |
| conf/ | Directorio | Contiene toda la configuración principal del servidor. | Sí |
| lib/ | Directorio | Bibliotecas (.jar) utilizadas por Tomcat y disponibles para todas las aplicaciones. | A veces |
| logs/ | Directorio | Archivos de registro (logs) del servidor y de las aplicaciones. | No (se generan automáticamente) |
| temp/ | Directorio | Archivos temporales utilizados durante la ejecución. | No |
| webapps/ | Directorio | Aplicaciones web desplegadas (.war o carpetas). | Sí |
| work/ | Directorio | Archivos compilados por Tomcat, especialmente JSP convertidas a Servlets. | No |
bin/
Es uno de los directorios más importantes. Aquí están todos los scripts que permiten controlar Tomcat.
| Archivo | Tipo | Descripción | Función principal | Uso habitual |
|---|---|---|---|---|
| catalina.sh | Script Shell | Es el script principal de Tomcat. La mayoría de los demás scripts lo invocan internamente. | Iniciar, detener, reiniciar, depurar (jpda), ejecutar en primer plano (run) o en segundo plano (start) el servidor Tomcat. |
Administración diaria de Tomcat. |
| startup.sh | Script Shell | Script de conveniencia que llama a catalina.sh start. |
Inicia Tomcat en segundo plano (background). | Iniciar el servidor rápidamente. |
| shutdown.sh | Script Shell | Script de conveniencia que llama a catalina.sh stop. |
Envía la orden de apagado al servidor Tomcat utilizando el puerto de apagado configurado en server.xml. |
Detener el servidor de forma controlada. |
| daemon.sh | Script Shell | Permite ejecutar Tomcat como un servicio (daemon) en sistemas Unix/Linux utilizando jsvc. | Iniciar, detener o reiniciar Tomcat como un proceso de sistema con un usuario específico. | Entornos de producción donde no se usa systemd o se requiere jsvc. |
| digest.sh | Script Shell | Herramienta para generar resúmenes criptográficos (hashes) de contraseñas. | Crear contraseñas cifradas que pueden utilizarse en archivos como tomcat-users.xml o en mecanismos de autenticación. |
Configuración de autenticación más segura. |
| version.sh | Script Shell | Muestra información de la instalación de Tomcat y del entorno Java. | Imprime la versión de Tomcat, la versión de Java, JAVA_HOME, CATALINA_HOME y otros datos del entorno. |
Verificación de la instalación y diagnóstico. |
| setclasspath.sh | Script Shell | Script interno utilizado por Tomcat para preparar el entorno Java. | Configura el CLASSPATH y verifica que JAVA_HOME o JRE_HOME estén definidos correctamente. |
Se ejecuta automáticamente al iniciar Tomcat; normalmente no se ejecuta de forma manual. |
| configtest.sh | Script Shell | Ejecuta una validación de la configuración del servidor. | Comprueba que la configuración de Tomcat (principalmente server.xml) sea válida antes de iniciar el servidor. |
Detectar errores de configuración antes del arranque. |
| makebase.sh | Script Shell | Crea una estructura independiente de CATALINA_BASE. | Genera los directorios necesarios (conf, logs, temp, webapps, work, etc.) para ejecutar múltiples instancias de Tomcat usando una misma instalación (CATALINA_HOME). |
Administrar varias instancias de Tomcat en un mismo servidor. |
| tool-wrapper.sh | Script Shell | Script auxiliar para ejecutar herramientas Java incluidas con Tomcat. | Configura el entorno necesario para lanzar utilidades Java desde la línea de comandos. | Uso interno y herramientas de mantenimiento. |
| bootstrap.jar | Biblioteca JAR | Biblioteca que contiene la clase de arranque (Bootstrap) de Tomcat. |
Inicializa el contenedor de Servlets, carga las clases principales y pone en marcha el servidor. | Se utiliza automáticamente durante el inicio de Tomcat; no se ejecuta directamente. |
Normalmente aquí puedes agregar:
setenv.sh
Este archivo no viene por defecto, pero es muy utilizado para definir:
JAVA_HOME
CATALINA_OPTS
JAVA_OPTS
MEMORIA JVM
conf/
Es el corazón de la configuración. Contiene archivos XML y propiedades.
| Archivo / Directorio | Tipo | Descripción | Función principal | ¿Se modifica normalmente? |
|---|---|---|---|---|
| server.xml | XML | Archivo principal de configuración del servidor Tomcat. Define la arquitectura del servidor y sus componentes. | Configura los puertos (HTTP, HTTPS, AJP, Shutdown), conectores, motores (Engine), hosts virtuales (Host), aplicaciones (Context), válvulas (Valve) y otros servicios. | Sí |
| web.xml | XML | Descriptor de despliegue global para todas las aplicaciones web. Actúa como configuración predeterminada para cada aplicación. | Define servlets predeterminados, filtros globales, tipos MIME, páginas de bienvenida (welcome-file), manejo de sesiones, páginas de error y configuraciones comunes para todas las aplicaciones. | Ocasionalmente |
| context.xml | XML | Configuración global del contexto de las aplicaciones web. | Permite definir recursos compartidos como DataSources, recursos JNDI, parámetros globales, configuración de sesiones y comportamiento común para todos los contextos. | Sí |
| logging.properties | Propiedades | Configuración del sistema de registro (JULI - Java Utility Logging Implementation). | Define el nivel de registro (INFO, WARNING, SEVERE, FINE, etc.), los archivos donde se almacenan los logs y los componentes que generan información de diagnóstico. | Frecuentemente |
| catalina.properties | Propiedades | Archivo de propiedades internas del servidor Tomcat. | Configura variables internas como la carga de bibliotecas (common.loader, server.loader, shared.loader), paquetes protegidos y otras propiedades utilizadas durante el arranque. |
Ocasionalmente |
| catalina.policy | Política de seguridad | Archivo de políticas de seguridad de Java. | Define los permisos que tendrán las aplicaciones cuando se ejecuta el Java Security Manager. Especifica acceso a archivos, red, propiedades del sistema, etc. | Rara vez |
| jaspic-providers.xml | XML | Configuración de proveedores JASPIC (Java Authentication SPI for Containers). | Registra módulos de autenticación personalizados para integrar mecanismos de autenticación avanzados con el contenedor de Servlets. | Solo en implementaciones específicas |
| tomcat-users.xml | XML | Base de datos local de usuarios, contraseñas y roles de Tomcat. | Define los usuarios que pueden acceder a aplicaciones administrativas como Manager y Host Manager, así como sus respectivos roles. | Sí |
| Catalina/ | Directorio | Contiene configuraciones específicas para cada Host Virtual. | Permite definir archivos <Context> independientes para cada aplicación, evitando modificar server.xml. Facilita la administración de aplicaciones de forma aislada. |
Según la implementación |
Los más importantes son:
server.xml
Configura el servidor completo.
Aquí defines:
- Puerto HTTP
- Puerto HTTPS
- Puerto AJP
- Engine
- Host
- Context
- Connectors
Ejemplo:
<Connector port="8080"/>
web.xml
Configuración global para todas las aplicaciones.
Aquí se definen:
- MIME Types
- Welcome Files
- Session Timeout
- Servlets por defecto
- Filtros globales
context.xml
Configuración global de contexto.
Aquí puedes definir:
- DataSources
- Recursos JNDI
- Parámetros globales
tomcat-users.xml
Usuarios del administrador.
Ejemplo:
<user
username="admin"
password="123456"
roles="manager-gui"/>
logging.properties
Configura el sistema JULI de logs.
Permite definir:
- Nivel INFO
- DEBUG
- WARNING
y hacia dónde escribir los logs.
catalina.properties
Variables internas de Tomcat.
Ejemplo:
common.loader
server.loader
shared.loader
Permite indicar dónde buscar librerías adicionales.
lib/
Contiene todas las librerías compartidas.
Ejemplo:
lib/
├── servlet-api.jar
├── tomcat-util.jar
├── tomcat-websocket.jar
├── catalina.jar
├── el-api.jar
├── jasper.jar
└── ...
Todo lo que coloques aquí estará disponible para todas las aplicaciones desplegadas.
Por ejemplo:
mysql-connector.jar
postgresql.jar
ojdbc.jar
Así no necesitas copiar el mismo driver en cada aplicación.
logs/
Aquí Tomcat escribe todos los registros.
Ejemplo:
| Archivo de registro | Descripción | Función principal | Información que almacena | ¿Cuándo consultarlo? |
|---|---|---|---|---|
| catalina.out | Archivo que contiene toda la salida estándar (stdout) y de errores (stderr) de la JVM donde se ejecuta Tomcat. |
Centralizar la salida de la aplicación y del servidor durante la ejecución. | System.out.println(), excepciones (Exception), errores (Error), trazas de pila (Stack Trace), mensajes de inicio y apagado del servidor. |
Cuando una aplicación falla, Tomcat no inicia o necesitas revisar errores generales. |
| catalina..log | Registro diario generado por el sistema de logging de Tomcat. Se crea normalmente con un nombre como catalina.2026-07-13.log. |
Registrar los eventos internos del servidor organizados por fecha. | Inicio y detención del servidor, despliegue de aplicaciones, advertencias (WARNING), errores (SEVERE), información (INFO) y mensajes del contenedor. | Para revisar el historial de eventos ocurridos en un día específico. |
| localhost.log | Registro de eventos relacionados con el Host virtual localhost. |
Registrar la actividad del host principal configurado en Tomcat. | Errores de aplicaciones, despliegues, carga de contextos y mensajes generados por las aplicaciones alojadas en localhost. |
Cuando una aplicación presenta problemas al desplegarse o ejecutarse. |
| localhost_access_log..txt | Registro de acceso HTTP al servidor. Cada línea representa una petición recibida. | Auditar todas las solicitudes HTTP que llegan al servidor. | Dirección IP del cliente, fecha y hora, método HTTP (GET, POST, PUT, DELETE), URL solicitada, código de respuesta (200, 404, 500), tamaño de la respuesta y navegador (User-Agent), según la configuración. | Para analizar tráfico, detectar errores 404, medir actividad o realizar auditorías. |
| manager.log | Registro específico de la aplicación Manager de Tomcat. | Registrar las operaciones administrativas realizadas desde la aplicación Manager. | Despliegue de aplicaciones, eliminación de aplicaciones, recargas (reload), inicios y detenciones de aplicaciones, autenticación de usuarios administrativos. | Cuando se administra Tomcat mediante la aplicación Manager. |
| host-manager.log | Registro específico de la aplicación Host Manager. | Registrar la administración de Hosts Virtuales. | Creación, eliminación o modificación de Hosts, errores de configuración y operaciones administrativas relacionadas con Hosts. | Cuando se administran múltiples Hosts virtuales en Tomcat. |
Los más importantes son:
catalina.out
Salida estándar de la JVM.
Aquí aparecen:
- Exceptions
- StackTrace
- println()
- Errores Java
localhost_access_log
Registro de todas las peticiones HTTP.
Ejemplo:
GET /
GET /app/login
POST /api/users
manager.log
Logs del Manager Web.
temp/
Directorio temporal.
Aquí Tomcat almacena:
- uploads temporales
- JSP temporales
- objetos serializados
- archivos intermedios
Puede vaciarse cuando Tomcat está detenido.
webapps/
Es donde viven las aplicaciones.
Ejemplo:
webapps/
├── ROOT/
├── docs/
├── examples/
├── manager/
├── host-manager/
└── miAplicacion.war
Cuando copias un WAR:
miProyecto.war
Tomcat hace:
miProyecto.war
↓
webapps/
miProyecto/
Descomprime automáticamente el WAR.
ROOT
Representa la aplicación principal.
http://localhost:8080/
Si reemplazas ROOT:
ROOT.war
Tu aplicación será la página principal del servidor.
manager
Aplicación para administrar despliegues.
Permite:
- desplegar WAR
- eliminar aplicaciones
- recargar aplicaciones
- ver sesiones
host-manager
Administra Hosts Virtuales.
docs
Documentación de Tomcat.
examples
Aplicaciones de ejemplo.
En producción normalmente se eliminan por seguridad.
work/
Muchos administradores nunca entran aquí.
Es donde Tomcat guarda archivos generados.
Ejemplo:
work/
Catalina/
localhost/
ROOT/
org/
apache/
Cuando una JSP:
Hola Mundo
se ejecuta, Tomcat hace:
Por eso, si una JSP cambia y hay problemas de caché, suele bastar con:
JSP
↓
Java Servlet
↓
.class
↓
work/
rm -rf work/*
y reiniciar Tomcat para forzar la recompilación.
Flujo simplificado de funcionamiento
Usuario
↓
Puerto 8080
↓
Connector (server.xml)
↓
Catalina Engine
↓
Host
↓
webapps/
↓
Aplicación
↓
Si existe una JSP
↓
work/
↓
Servlet compilado
↓
Respuesta HTTP
Directorios que normalmente administrarás
| Directorio | Uso habitual |
|---|---|
| bin/ | Iniciar, detener y configurar el entorno de ejecución (scripts como startup.sh, shutdown.sh y setenv.sh). |
| conf/ | Configurar puertos, conectores, usuarios, recursos JNDI y comportamiento global del servidor. |
| webapps/ | Desplegar, actualizar o eliminar aplicaciones web (.war o directorios). |
| logs/ | Revisar errores, excepciones, accesos HTTP y diagnosticar problemas. |
| lib/ | Agregar bibliotecas compartidas, como drivers JDBC o dependencias comunes. |
En cambio, temp/ y work/ son directorios gestionados por Tomcat y normalmente no se modifican manualmente, salvo para limpiar archivos temporales o forzar la recompilación de JSP durante tareas de mantenimiento.
Preguntas frecuentes
¿Dónde se instalan las aplicaciones en Apache Tomcat?
Las aplicaciones web se despliegan normalmente en la carpeta webapps. Apache Tomcat puede desplegar aplicaciones en formato WAR o directorios descomprimidos automáticamente cuando el despliegue automático está habilitado.
¿Cuál es la carpeta más importante de Apache Tomcat?
"La carpeta conf es una de las más importantes porque contiene los archivos de configuración principales del servidor, como server.xml, web.xml, context.xml y tomcat-users.xml.
¿Para qué sirve la carpeta bin de Apache Tomcat?
La carpeta bin contiene los scripts necesarios para iniciar, detener y administrar Apache Tomcat. Incluye archivos como startup.sh, shutdown.sh, catalina.sh y sus equivalentes para Windows.
¿Dónde se encuentran los archivos de configuración de Apache Tomcat?
Los archivos de configuración se encuentran en la carpeta conf. Entre los más importantes están server.xml, web.xml, context.xml, logging.properties y catalina.properties.
¿Dónde se guardan los registros (logs) de Apache Tomcat?
Los registros del servidor se almacenan en la carpeta logs. Allí se encuentran archivos como catalina.out, localhost.log y otros registros que ayudan a diagnosticar errores y monitorear el funcionamiento del servidor.
¿Qué contiene la carpeta lib de Apache Tomcat?
La carpeta lib almacena las bibliotecas compartidas que utiliza Apache Tomcat y que pueden ser usadas por todas las aplicaciones desplegadas en el servidor.
¿Cuál es la diferencia entre CATALINA_HOME y CATALINA_BASE?
CATALINA_HOME indica la ubicación donde está instalado Apache Tomcat, mientras que CATALINA_BASE define el directorio utilizado por una instancia específica para almacenar configuraciones, aplicaciones, registros y archivos temporales.
¿Qué archivo configura el servidor Apache Tomcat?
El archivo principal de configuración es server.xml, ubicado en la carpeta conf. En él se definen conectores HTTP, puertos, motores, hosts virtuales y otros componentes fundamentales del servidor.