
{"id":24105,"date":"2024-11-14T17:13:00","date_gmt":"2024-11-14T16:13:00","guid":{"rendered":"https:\/\/contabo.com\/blog\/?p=24105"},"modified":"2025-06-12T18:27:25","modified_gmt":"2025-06-12T16:27:25","slug":"guia-completa-para-configurar-apache-tomcat","status":"publish","type":"post","link":"https:\/\/contabo.com\/blog\/es\/guia-completa-para-configurar-apache-tomcat\/","title":{"rendered":"Gu\u00eda Completa para Configurar y Optimizar Apache Tomcat"},"content":{"rendered":"\n<p>14 de noviembre de 2024 \/ Christopher Carter \/ Tutoriales<\/p>\n\n\n\n<p>Ejecutar aplicaciones web en Java no tiene por qu\u00e9 ser complicado. Apache Tomcat ofrece una plataforma confiable y de c\u00f3digo abierto para desplegar tus aplicaciones, y configurarlo correctamente marca una gran diferencia en el rendimiento.<\/p>\n\n\n\n<p>Ya sea que utilices Tomcat en un VPS para desarrollo o escales a un servidor dedicado para producci\u00f3n, esta gu\u00eda te acompa\u00f1a paso a paso. Aprender\u00e1s a instalar, configurar y optimizar Tomcat seg\u00fan tus necesidades.<\/p>\n\n\n\n<p><strong>Esta gu\u00eda cubre:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Configuraci\u00f3n de Tomcat desde cero<\/li>\n\n\n\n<li>Ajustes para un rendimiento \u00f3ptimo<\/li>\n\n\n\n<li>Despliegue seguro de tus aplicaciones<\/li>\n\n\n\n<li>Resoluci\u00f3n de problemas comunes<\/li>\n\n\n\n<li>C\u00f3mo tomar decisiones informadas sobre la instalaci\u00f3n<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-que-es-apache-tomcat\">\u00bfQu\u00e9 es Apache Tomcat?<\/h2>\n\n\n\n<p>Apache Tomcat act\u00faa como puente entre los servidores web y las aplicaciones Java. Es un contenedor de servlets de c\u00f3digo abierto que te permite ejecutar aplicaciones web Java de forma eficiente.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-funcion-principal\">Funci\u00f3n principal<\/h3>\n\n\n\n<p>Tomcat es un motor especializado en aplicaciones Java. Mientras que los servidores web tradicionales gestionan contenido est\u00e1tico (im\u00e1genes, HTML), Tomcat procesa servlets y JavaServer Pages (JSP), generando contenido din\u00e1mico. Proporciona el entorno en tiempo de ejecuci\u00f3n necesario para responder a peticiones web con Java.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-componentes-clave\">Componentes clave<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Catalina: Contenedor de servlets que ejecuta tus aplicaciones Java<\/li>\n\n\n\n<li>Coyote: Conector HTTP que gestiona las peticiones web<\/li>\n\n\n\n<li>Jasper: Motor JSP que convierte las p\u00e1ginas JSP en servlets<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-por-que-elegir-tomcat\">\u00bfPor qu\u00e9 elegir Tomcat?<\/h3>\n\n\n\n<p>Como servidor de aplicaciones de c\u00f3digo abierto, Tomcat ofrece:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Rendimiento ligero que no consume muchos recursos<\/li>\n\n\n\n<li>Funciones de seguridad integradas<\/li>\n\n\n\n<li>Amplio soporte comunitario<\/li>\n\n\n\n<li>F\u00e1cil integraci\u00f3n con otros servidores web<\/li>\n<\/ul>\n\n\n\n<p>Veamos las caracter\u00edsticas espec\u00edficas de Tomcat que lo hacen popular para alojar aplicaciones web.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-caracteristicas-clave-de-apache-tomcat\">Caracter\u00edsticas Clave de Apache Tomcat<\/h2>\n\n\n\n<p>Apache Tomcat viene repleto de capacidades que lo hacen una elecci\u00f3n popular para alojar aplicaciones Java en un servidor HTTP Apache. Exploremos las caracter\u00edsticas m\u00e1s importantes para tus aplicaciones web.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-capacidades-principales\">Capacidades principales<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Procesamiento de servlets<\/strong>: Tomcat maneja peticiones\/respuestas de forma eficiente y simult\u00e1nea.<\/li>\n\n\n\n<li><strong>Soporte JSP<\/strong>: El procesamiento integrado de JavaServer Pages (JSP) te permite crear contenido web din\u00e1mico f\u00e1cilmente. Tomcat compila autom\u00e1ticamente tus archivos JSP en servlets para mejorar el rendimiento.<\/li>\n\n\n\n<li><strong>Conector HTTP (Coyote)<\/strong>: El conector Coyote gestiona todas las conexiones HTTP entrantes, proporcionando\n<ul class=\"wp-block-list\">\n<li>Manejo eficiente de solicitudes<\/li>\n\n\n\n<li>Pool de conexiones<\/li>\n\n\n\n<li>Actualizaci\u00f3n de protocolos<\/li>\n\n\n\n<li>Cifrado SSL\/TLS para Tomcat<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-funciones-de-desarrollo\">Funciones de desarrollo<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Despliegue en caliente<\/strong>: Despliega tus archivos WAR sin reiniciar el servidor, manteniendo tus aplicaciones disponibles durante actualizaciones.<\/li>\n\n\n\n<li><strong>Gesti\u00f3n de recursos<\/strong>: Tomcat gestiona eficientemente tus recursos JVM (Java Virtual Machine), con funciones para:\n<ul class=\"wp-block-list\">\n<li>Pooling de conexiones<\/li>\n\n\n\n<li>Gesti\u00f3n de memoria<\/li>\n\n\n\n<li>Optimizaci\u00f3n de hilos<\/li>\n\n\n\n<li>Manejo de sesiones<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-preparado-para-empresas\">Preparado para empresas<\/h3>\n\n\n\n<p>Tomcat incluye funciones que lo hacen adecuado para aplicaciones empresariales:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Soporte de clustering para escalabilidad<\/li>\n\n\n\n<li>Realms de seguridad para autenticaci\u00f3n<\/li>\n\n\n\n<li>Capacidades de hospedaje virtual<\/li>\n\n\n\n<li>Registro y monitoreo extensos<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-requisitos-previos-para-instalar-apache-tomcat\">Requisitos Previos para Instalar Apache Tomcat<\/h2>\n\n\n\n<p>Antes de instalar, aseg\u00farate de tener todo lo necesario para un proceso de configuraci\u00f3n del servidor Tomcat sin problemas.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-requisitos-del-sistema\">Requisitos del sistema<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-hardware\">Hardware<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>M\u00ednimo 2GB RAM para desarrollo<\/li>\n\n\n\n<li>4GB o m\u00e1s para producci\u00f3n<\/li>\n\n\n\n<li>Al menos 1GB de espacio en disco<\/li>\n\n\n\n<li>Un n\u00facleo de CPU como m\u00ednimo, se recomienda doble n\u00facleo<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-sistema-operativo\">Sistema operativo<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Linux (recomendado para servidores)<\/li>\n\n\n\n<li>Windows Server<\/li>\n\n\n\n<li>macOS (para desarrollo)<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-software\">Software<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>JDK 8 o superior<\/li>\n\n\n\n<li>Variable JAVA_HOME configurada<\/li>\n\n\n\n<li>Java en el PATH del sistema<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-red\">Red<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Puerto 8080 (HTTP)<\/li>\n\n\n\n<li>Puerto 8443 (HTTPS)<\/li>\n\n\n\n<li>Puerto 8005 (comando de apagado)<\/li>\n\n\n\n<li>Puerto 8009 (AJP)<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-herramientas-adicionales\">Herramientas adicionales<\/h4>\n\n\n\n<p>Considera instalar:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Un editor de texto para archivos de configuraci\u00f3n<\/li>\n\n\n\n<li>Herramientas de manejo de archivos WAR<\/li>\n\n\n\n<li>Herramientas de monitoreo para entornos de producci\u00f3n<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-como-instalar-apache-tomcat-guia-paso-a-paso\">C\u00f3mo Instalar Apache Tomcat (Gu\u00eda Paso a Paso)<\/h2>\n\n\n\n<p>Veamos c\u00f3mo instalar Tomcat en diferentes plataformas. Cubriremos los m\u00e9todos de instalaci\u00f3n m\u00e1s comunes para ayudarte a elegir el m\u00e1s adecuado para ti.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-instalacion-en-linux-metodo-manual\">Instalaci\u00f3n en Linux (m\u00e9todo manual)<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-descargar-y-preparar\">Descargar y preparar<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>wget https:\/\/downloads.apache.org\/tomcat\/tomcat-9\/v9.0.x\/bin\/apache-tomcat-9.0.x.tar.gz\ntar xzvf apache-tomcat-9.0.x.tar.gz\nsudo mv apache-tomcat-9.0.x \/opt\/tomcat<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-configurar-entorno\">Configurar entorno<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo useradd -r -m -U -d \/opt\/tomcat -s \/bin\/false tomcat\nsudo chown -R tomcat: \/opt\/tomcat\nsudo chmod +x \/opt\/tomcat\/bin\/*.sh<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-instalacion-en-linux-gestor-de-paquetes\">Instalaci\u00f3n en Linux (gestor de paquetes)<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-ubuntu-debian\">Ubuntu\/Debian:<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt update\nsudo apt install tomcat9\nsudo apt install tomcat9-admin<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-centos-rhel\">CentOS\/RHEL:<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo yum install tomcat\nsudo systemctl start tomcat<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-instalacion-en-windows\">Instalaci\u00f3n en Windows<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Descarga el instalador de servicios desde el sitio web de Apache<\/li>\n\n\n\n<li>Ejecuta el instalador como administrador<\/li>\n\n\n\n<li>Sigue el asistente de configuraci\u00f3n:\n<ul class=\"wp-block-list\">\n<li>Elige el directorio de instalaci\u00f3n<\/li>\n\n\n\n<li>Selecciona el nombre del servicio<\/li>\n\n\n\n<li>Configura los puertos<\/li>\n\n\n\n<li>Asigna la memoria inicial<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-instalacion-con-docker\">Instalaci\u00f3n con Docker<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-instalar-docker\">Instalar Docker<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt update\nsudo apt install docker.io\nsudo systemctl start docker\nsudo systemctl enable docker<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-obtener-y-ejecutar-tomcat\">Obtener y ejecutar Tomcat<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>docker pull tomcat:9.0\n\ndocker run -d \\\n    --name tomcat \\\n    -p 8080:8080 \\\n    -v tomcat-data:\/usr\/local\/tomcat\/webapps \\\n    tomcat:9.0<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-verificar-estado-del-contenedor\">Verificar estado del contenedor<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>docker ps\ndocker logs tomcat\ndocker exec -it tomcat bash<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-crear-servicio-en-linux\">Crear servicio en Linux<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-crear-archivo-de-servicio-systemd-linux\">Crear archivo de servicio systemd (Linux):<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo nano \/etc\/systemd\/system\/tomcat.service<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-anadir-la-configuracion-del-servicio\">A\u00f1adir la configuraci\u00f3n del servicio:<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;Unit]\nDescription=Apache Tomcat\nAfter=network.target\n\n&#91;Service]\nType=forking\nUser=tomcat\nEnvironment=\"JAVA_HOME=\/usr\/lib\/jvm\/java-11-openjdk\"\nEnvironment=\"CATALINA_HOME=\/opt\/tomcat\"\nExecStart=\/opt\/tomcat\/bin\/startup.sh\nExecStop=\/opt\/tomcat\/bin\/shutdown.sh\n\n&#91;Install]\nWantedBy=multi-user.target<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-verificar-instalacion\"><strong>Verificar instalaci\u00f3n<\/strong><\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-iniciar-servicio-tomcat\"><strong>Iniciar servicio Tomcat<\/strong><\/h4>\n\n\n\n<p><strong>En Linux:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl start tomcat<\/code><\/pre>\n\n\n\n<p><strong>En Windows:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>net start tomcat9<\/code><\/pre>\n\n\n\n<p>Verificar estado del servicio<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl status tomcat<\/code><\/pre>\n\n\n\n<p><strong>Ver acceso web<\/strong><\/p>\n\n\n\n<p>Abre el navegador:\u00a0http:\/\/tu-ip-servidor:8080<\/p>\n\n\n\n<p>Verifica que aparezca la p\u00e1gina de bienvenida de Tomcat<\/p>\n\n\n\n<p>Prueba la app del Manager:\u00a0http:\/\/tu-ip-servidor:8080\/manager<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-problemas-comunes-de-instalacion\">Problemas comunes de instalaci\u00f3n<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Puerto 8080 en uso:<\/strong> Cambia el puerto en\u00a0server.xml<\/li>\n\n\n\n<li><strong>Java no encontrado:<\/strong> Verifica la variable de entorno\u00a0JAVA_HOME<\/li>\n\n\n\n<li><strong>Permiso denegado:<\/strong> Verifica permisos del directorio<\/li>\n\n\n\n<li><strong>El servicio no inicia: <\/strong>Revisa los registros en\u00a0\/var\/log\/tomcat<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-configuracion-de-apache-tomcat-para-un-rendimiento-optimo\">Configuraci\u00f3n de Apache Tomcat para un rendimiento \u00f3ptimo<\/h2>\n\n\n\n<p>Vamos a optimizar tu instalaci\u00f3n de Tomcat para manejar aplicaciones web de forma eficiente. Como afinar un coche, peque\u00f1os ajustes pueden mejorar mucho el rendimiento.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-configuracion-de-memoria\">Configuraci\u00f3n de memoria<\/h3>\n\n\n\n<p>Tomcat necesita una asignaci\u00f3n adecuada de memoria. Configura esto en\u00a0catalina.sh\u00a0o\u00a0setenv.sh:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>export CATALINA_OPTS=\"$CATALINA_OPTS -Xms512m -Xmx1024m -XX:MaxPermSize=256m\"<\/code><\/pre>\n\n\n\n<p>Significado de estos valores:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Xms: memoria inicial asignada<\/li>\n\n\n\n<li>Xmx: memoria m\u00e1xima permitida<\/li>\n\n\n\n<li>MaxPermSize: espacio para clases Java<\/li>\n<\/ul>\n\n\n\n<p>Para la mayor\u00eda de las aplicaciones peque\u00f1as o medianas, 512 MB de inicio y hasta 1 GB funcionan bien.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-optimizacion-del-pool-de-hilos-server-xml\">Optimizaci\u00f3n del pool de hilos (server.xml)<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;Connector port=\"8080\" protocol=\"HTTP\/1.1\"\n           maxThreads=\"400\"\n           minSpareThreads=\"25\"\n           maxSpareThreads=\"75\"\n           acceptCount=\"100\"\n           connectionTimeout=\"20000\"\n           enableLookups=\"false\" \/&gt;<\/code><\/pre>\n\n\n\n<p><strong>Descripci\u00f3n:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>maxThreads: usuarios simult\u00e1neos m\u00e1ximos<\/li>\n\n\n\n<li>minSpareThreads: hilos listos para uso inmediato<\/li>\n\n\n\n<li>acceptCount: cola de espera antes de rechazar conexiones<\/li>\n\n\n\n<li>connectionTimeout: tiempo m\u00e1ximo de espera antes de cerrar conexi\u00f3n inactiva<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-compresion\">Compresi\u00f3n<\/h3>\n\n\n\n<p>Tomcat puede comprimir datos para ahorrar ancho de banda:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;Connector port=\"8080\" protocol=\"HTTP\/1.1\"\n           compression=\"on\"\n           compressionMinSize=\"2048\"\n           compressableMimeType=\"text\/html,text\/xml,text\/plain,text\/css,text\/javascript\" \/&gt;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-cache\">Cach\u00e9<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;Context&gt;\n    &lt;Resources cachingAllowed=\"true\" cacheMaxSize=\"100000\" \/&gt;\n&lt;\/Context&gt;<\/code><\/pre>\n\n\n\n<p>Esto permite a Tomcat mantener archivos frecuentemente accedidos disponibles para una carga m\u00e1s r\u00e1pida.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-como-desplegar-aplicaciones-java-en-apache-tomcat\">C\u00f3mo Desplegar Aplicaciones Java en Apache Tomcat<\/h2>\n\n\n\n<p>Desplegar aplicaciones en Tomcat es como mudarse a una casa nueva: necesitas saber d\u00f3nde colocar todo. Veamos las formas disponibles.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-opciones-de-despliegue\">Opciones de despliegue<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Archivo WAR\u00a0(como una caja de mudanza empaquetada)<\/li>\n\n\n\n<li>Despliegue de directorios\u00a0(como mover archivos uno por uno)<\/li>\n\n\n\n<li>Aplicaci\u00f3n Manager\u00a0(panel de control web)<\/li>\n\n\n\n<li>Despliegue autom\u00e1tico<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-despliegue-con-war\">Despliegue con WAR<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>cp tu-aplicacion.war \/opt\/tomcat\/webapps\/\ntail -f \/opt\/tomcat\/logs\/catalina.out<\/code><\/pre>\n\n\n\n<p>Tomcat desempaqueta y despliega el archivo autom\u00e1ticamente.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-usar-la-aplicacion-manager\">Usar la Aplicaci\u00f3n Manager<\/h3>\n\n\n\n<p><strong>Configurar acceso en tomcat-users.xml:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;tomcat-users&gt;\n  &lt;role rolename=\"manager-gui\"\/&gt;\n  &lt;user username=\"admin\" password=\"seguro\" roles=\"manager-gui\"\/&gt;\n&lt;\/tomcat-users&gt;<\/code><\/pre>\n\n\n\n<p>Accede v\u00eda:&nbsp;http:\/\/tu-servidor:8080\/manager\/html<\/p>\n\n\n\n<p>Desde all\u00ed puedes:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Subir archivos WAR<\/li>\n\n\n\n<li>Iniciar\/detener aplicaciones<\/li>\n\n\n\n<li>Ver estado del despliegue<\/li>\n\n\n\n<li>Monitorear recursos<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-estructura-de-directorio-de-aplicaciones\">Estructura de directorio de aplicaciones<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>\/webapps\/tu-aplicacion\/\n    \u251c\u2500\u2500 WEB-INF\/\n    \u2502   \u251c\u2500\u2500 web.xml\n    \u2502   \u251c\u2500\u2500 classes\/\n    \u2502   \u2514\u2500\u2500 lib\/\n    \u2514\u2500\u2500 resources\/<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-configuracion-de-despliegue-en-caliente\">Configuraci\u00f3n de despliegue en caliente<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;Host name=\"localhost\" appBase=\"webapps\"\n      unpackWARs=\"true\" autoDeploy=\"true\">\n    &lt;Valve className=\"org.apache.catalina.valves.AccessLogValve\"\n           directory=\"logs\"\n           prefix=\"localhost_access_log\" suffix=\".txt\"\n           pattern=\"%h %l %u %t &amp;quot;%r&amp;quot; %s %b\" \/>\n&lt;\/Host><\/code><\/pre>\n\n\n\n<p><strong>Nota<\/strong>:\u00a0en entornos cr\u00edticos puedes desactivar el despliegue autom\u00e1tico:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>autoDeploy=\"false\"<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-problemas-comunes-de-despliegue\">Problemas comunes de despliegue<\/h3>\n\n\n\n<p><strong>Problemas de permisos<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ls -l \/opt\/tomcat\/webapps\/tu-aplicacion\nchown -R tomcat:tomcat \/opt\/tomcat\/webapps\/tu-aplicacion<\/code><\/pre>\n\n\n\n<p><strong>Librer\u00edas faltantes<\/strong>: aseg\u00farate de que est\u00e9n en\u00a0WEB-INF\/lib<\/p>\n\n\n\n<p>Problemas de memoria<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ps aux | grep tomcat<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-configuracion-del-contexto-context-xml\">Configuraci\u00f3n del contexto (context.xml)<\/h3>\n\n\n\n<p>Archivo para par\u00e1metros de configuraci\u00f3n por aplicaci\u00f3n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;Context>\n    &lt;Environment name=\"dbUrl\"\n                 value=\"jdbc:mysql:\/\/localhost:3306\/mydb\"\n                 type=\"java.lang.String\" override=\"false\"\/>\n&lt;\/Context><\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-seguridad-en-apache-tomcat\">Seguridad en Apache Tomcat<\/h2>\n\n\n\n<p>La seguridad no es opcional al ejecutar aplicaciones web. A continuaci\u00f3n, los pasos esenciales para mejorar la seguridad en Tomcat.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-medidas-basicas\">Medidas b\u00e1sicas<\/h3>\n\n\n\n<p><strong>Eliminar aplicaciones predeterminadas<\/strong><\/p>\n\n\n\n<p>Limpia tu instalaci\u00f3n eliminando las apps innecesarias:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd $CATALINA_HOME\/webapps\nrm -rf docs examples manager host-manager ROOT<\/code><\/pre>\n\n\n\n<p>Esto reduce los puntos de entrada no utilizados.<\/p>\n\n\n\n<p><strong>Control de acceso<\/strong><\/p>\n\n\n\n<p><strong>Asegurar la interfaz del Manager<\/strong><\/p>\n\n\n\n<p>Crea credenciales seguras en&nbsp;tomcat-users.xml:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;tomcat-users>\n    &lt;role rolename=\"manager-gui\"\/>\n    &lt;role rolename=\"admin-gui\"\/>\n    &lt;user username=\"admin\"\n          password=\"tu_contrase\u00f1a_segura\"\n          roles=\"manager-gui,admin-gui\"\/>\n&lt;\/tomcat-users><\/code><\/pre>\n\n\n\n<p><strong>Restringir acceso por IP.<\/strong> Limita el acceso al manager por direcci\u00f3n IP en\u00a0context.xml:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;Context antiResourceLocking=\"false\">\n    &lt;Valve className=\"org.apache.catalina.valves.RemoteAddrValve\"\n           allow=\"127\\.0\\.0\\.1|192\\.168\\.1\\.*\"\/>\n&lt;\/Context><\/code><\/pre>\n\n\n\n<p><strong>Configuraci\u00f3n SSL\/TLS<\/strong><\/p>\n\n\n\n<p>Activa HTTPS para cifrar el tr\u00e1fico:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;Connector port=\"8443\" protocol=\"org.apache.coyote.http11.Http11NioProtocol\"\n           maxThreads=\"150\" SSLEnabled=\"true\">\n    &lt;SSLHostConfig>\n        &lt;Certificate certificateKeystoreFile=\"conf\/localhost-rsa.jks\"\n                     type=\"RSA\" \/>\n    &lt;\/SSLHostConfig>\n&lt;\/Connector><\/code><\/pre>\n\n\n\n<p>Piensa en SSL como enviar cartas en sobres cerrados en lugar de postales: protege la privacidad de los datos en tr\u00e1nsito.<\/p>\n\n\n\n<p><strong>Encabezados de seguridad<\/strong>. Agrega filtros de seguridad en\u00a0web.xml:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;filter>\n    &lt;filter-name>httpHeaderSecurity&lt;\/filter-name>\n    &lt;filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter&lt;\/filter-class>\n&lt;\/filter><\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-solucion-de-problemas-comunes-en-apache-tomcat\">Soluci\u00f3n de problemas comunes en Apache Tomcat<\/h3>\n\n\n\n<p>Cuando surgen problemas, tener un enfoque sistem\u00e1tico te ahorra tiempo. A continuaci\u00f3n, los fallos m\u00e1s frecuentes y sus soluciones.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-problemas-de-inicio\"><strong>Problemas de inicio<\/strong><\/h4>\n\n\n\n<p><strong>El servidor no arranca<\/strong><\/p>\n\n\n\n<p>Verifica si los puertos est\u00e1n ocupados:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo netstat -tulpn | grep LISTEN<\/code><\/pre>\n\n\n\n<p>Comprueba Java:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>java -version<\/code><\/pre>\n\n\n\n<p>Revisa los registros:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>tail -f \/opt\/tomcat\/logs\/catalina.out<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-problemas-de-memoria\">Problemas de memoria<\/h4>\n\n\n\n<p>Si Tomcat se detiene inesperadamente, podr\u00eda ser por falta de memoria:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ps aux | grep tomcat\ntail -f \/opt\/tomcat\/logs\/gc.log<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Problemas de rendimiento<\/h4>\n\n\n\n<p><strong>Respuestas lentas<\/strong>\u00a0pueden deberse a:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Uso elevado de memoria<\/li>\n\n\n\n<li>Conexiones concurrentes excesivas<\/li>\n\n\n\n<li>Consultas lentas a base de datos<\/li>\n\n\n\n<li>Pool de hilos mal dimensionado<\/li>\n<\/ul>\n\n\n\n<p>Monitorea estos recursos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>top -u tomcat\nnetstat -an | grep 8080 | wc -l<\/code><\/pre>\n\n\n\n<p>Errores comunes<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>404<\/strong>: Verifica rutas y nombres<\/li>\n\n\n\n<li>503: Revisa memoria y recursos<\/li>\n\n\n\n<li><strong>ClassNotFound<\/strong>: Asegura librer\u00edas en\u00a0WEB-INF\/lib<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-comparativa-tomcat-vs-otros-servidores-java\">Comparativa: Tomcat vs Otros Servidores Java<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Caracter\u00edstica<\/th><th>Tomcat<\/th><th>JBoss\/WildFly<\/th><th>GlassFish<\/th><th>Jetty<\/th><\/tr><\/thead><tbody><tr><td>Tiempo de arranque<\/td><td>R\u00e1pido<\/td><td>Lento<\/td><td>Medio<\/td><td>Muy r\u00e1pido<\/td><\/tr><tr><td>Uso de memoria<\/td><td>Bajo<\/td><td>Alto<\/td><td>Medio<\/td><td>Bajo<\/td><\/tr><tr><td>Configuraci\u00f3n<\/td><td>Sencilla<\/td><td>Compleja<\/td><td>Media<\/td><td>Sencilla<\/td><\/tr><tr><td>Soporte JEE completo<\/td><td>No<\/td><td>S\u00ed<\/td><td>S\u00ed<\/td><td>No<\/td><\/tr><tr><td>Curva de aprendizaje<\/td><td>Baja<\/td><td>Alta<\/td><td>Media<\/td><td>Baja<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Cu\u00e1ndo elegir Tomcat<\/h4>\n\n\n\n<p>Tomcat es ideal cuando necesitas:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Un contenedor de servlets ligero<\/li>\n\n\n\n<li>Arranques r\u00e1pidos<\/li>\n\n\n\n<li>Proceso de despliegue sencillo<\/li>\n\n\n\n<li>Bajo consumo de memoria<\/li>\n\n\n\n<li>Soporte para aplicaciones web Java b\u00e1sicas<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Cu\u00e1ndo considerar alternativas<\/h4>\n\n\n\n<p>Opta por otro servidor si necesitas:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Funcionalidad completa de Java EE<\/li>\n\n\n\n<li>Clustering integrado<\/li>\n\n\n\n<li>Herramientas avanzadas de gesti\u00f3n<\/li>\n\n\n\n<li>Interfaces de administraci\u00f3n empresariales<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-buenas-practicas-para-administrar-apache-tomcat\">Buenas pr\u00e1cticas para administrar Apache Tomcat<\/h3>\n\n\n\n<p>Para mantener tu servidor funcionando de manera eficiente, sigue estas buenas pr\u00e1cticas:<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Mantenimiento regular<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Actualiza con frecuencia: Mant\u00e9n Tomcat y Java al d\u00eda.<\/li>\n\n\n\n<li>Monitorea registros: Habilita rotaci\u00f3n de logs y rev\u00edsalos peri\u00f3dicamente.<\/li>\n\n\n\n<li>Haz copias de seguridad: Guarda configuraci\u00f3n y aplicaciones regularmente.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Optimizaci\u00f3n del rendimiento<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ajusta la JVM: Seg\u00fan la carga y necesidades del sistema.<\/li>\n\n\n\n<li>Usa pool de conexiones: Para mejorar el acceso a base de datos.<\/li>\n\n\n\n<li>Activa cach\u00e9: Para contenido est\u00e1tico.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Buenas pr\u00e1cticas de seguridad<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Usa HTTPS: Siempre cifra las conexiones.<\/li>\n\n\n\n<li>Controla el acceso: Restringe el acceso al Manager y Host Manager.<\/li>\n\n\n\n<li>Mant\u00e9nlo simple: Elimina servicios y aplicaciones no necesarias.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Monitoreo y alertas<\/h4>\n\n\n\n<p>Configura alertas: Para eventos cr\u00edticos (memoria alta, errores de aplicaci\u00f3n).<\/p>\n\n\n\n<p>Instala herramientas: Como JavaMelody o New Relic.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n","protected":false},"excerpt":{"rendered":"<p>14 de noviembre de 2024 \/ Christopher Carter \/ Tutoriales Ejecutar aplicaciones web en Java no tiene por qu\u00e9 ser complicado. Apache Tomcat ofrece una plataforma confiable y de c\u00f3digo abierto para desplegar tus aplicaciones, y configurarlo correctamente marca una gran diferencia en el rendimiento. Ya sea que utilices Tomcat en un VPS para desarrollo [&hellip;]<\/p>\n","protected":false},"author":63,"featured_media":21250,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1988],"tags":[1750,2654,2657,2653,2660,2659,2658,2661,2655,2656],"ppma_author":[1492],"class_list":["post-24105","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutoriales","tag-apache-tomcat","tag-configuracion-tomcat","tag-despliegue-war","tag-instalar-tomcat","tag-manager-tomcat","tag-rendimiento-tomcat","tag-seguridad-tomcat","tag-servidor-de-aplicaciones-java","tag-servidor-java","tag-tomcat-en-linux"],"uagb_featured_image_src":{"full":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2024\/11\/blog-head_apache-tomcat-guide_EN.jpg",1200,630,false],"thumbnail":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2024\/11\/blog-head_apache-tomcat-guide_EN-150x150.jpg",150,150,true],"medium":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2024\/11\/blog-head_apache-tomcat-guide_EN-600x315.jpg",600,315,true],"medium_large":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2024\/11\/blog-head_apache-tomcat-guide_EN-768x403.jpg",768,403,true],"large":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2024\/11\/blog-head_apache-tomcat-guide_EN.jpg",1200,630,false],"1536x1536":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2024\/11\/blog-head_apache-tomcat-guide_EN.jpg",1200,630,false],"2048x2048":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2024\/11\/blog-head_apache-tomcat-guide_EN.jpg",1200,630,false]},"uagb_author_info":{"display_name":"Christopher Carter","author_link":"https:\/\/contabo.com\/blog\/es\/author\/christophercarter\/"},"uagb_comment_info":0,"uagb_excerpt":"14 de noviembre de 2024 \/ Christopher Carter \/ Tutoriales Ejecutar aplicaciones web en Java no tiene por qu\u00e9 ser complicado. Apache Tomcat ofrece una plataforma confiable y de c\u00f3digo abierto para desplegar tus aplicaciones, y configurarlo correctamente marca una gran diferencia en el rendimiento. Ya sea que utilices Tomcat en un VPS para desarrollo&hellip;","authors":[{"term_id":1492,"user_id":63,"is_guest":0,"slug":"christophercarter","display_name":"Christopher Carter","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/63db81672a5ce4c1e8ee39753d00251d561b5b3a9967febf1c4f662024cef00f?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/posts\/24105","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/users\/63"}],"replies":[{"embeddable":true,"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=24105"}],"version-history":[{"count":2,"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/posts\/24105\/revisions"}],"predecessor-version":[{"id":24117,"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/posts\/24105\/revisions\/24117"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/media\/21250"}],"wp:attachment":[{"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=24105"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=24105"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=24105"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=24105"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}