Instalar Apache Tomcat 8 en CentOS 7

Hola amigos y amigos, después de tantos años me he dado cuenta que no le he dedicado al amigo el Gato Tom 🙂 , vamos Apache Tomcat 8, un artículo en exclusiva. Hace poco, en uno de mis clientes, tuve que realizar la instalación sobre un servidor virtualizado con Centos 7, así que aquí tenéis los pasos a seguir.

Hay que decir que en esta distribución, la versión que viene en los repositorios es la 7, así que veremos como instalar la última release de la 8.5 , desde las fuentes oficiales. Vamos al lío.

Sobre Apache Tomcat

Se trata de un contenedor de servlets y JSP. Incluye el compilador Jasper, que compila JSPs convirtiéndolas en servlets. El motor de servlets de Tomcat a menudo se presenta en combinación con el servidor web Apache. Digamos, que es la respuesta de la Apache Foundation, a lenguajes web como PHP o ASP.NET

Sirve para presentar aplicaciones desarrolladas en Java, se trata de un proyecto open source.

Al ser desarrollado en Java puede funcionar sobre cualquier sistema operativo de servidor, ya os he comentado que en nuestro caso es un sistemas GNU Linux.

Instalación de Apache Tomcat sobre Centos 7

Una vez ya tenemos disponible nuestro servidor, primero de todo actualizamos los repositorios e instalamos Java, algo básico para el funcionamiento de Tomcat, obvio:

  1. yum update
  2. yum -y install java-1.7.0-openjdk-devel

Si no tenemos el usuario ‘tomcat’ creado procedemos a crearlo:

  1. groupadd tomcat
  2. useradd -M -s /bin/nologin -g tomcat -d /opt/tomcat tomcat

De esta manera indicamos que el usuario no usa login, pertenece al grupo tomcat y tiene como directorio principal /opt/tomcat

Una vez hecho esto ya podemos descargar la última versión que a fecha de hoy es la 8.5.14

Descaga de versión de Apache Tomcat

Descargamos el fichero con extensión tar.gz y lo guardamos en la carpeta temporal /tmp

  1. cd /tmp
  2. wget http://apache.uvigo.es/tomcat/tomcat-8/v8.5.14/bin/apache-tomcat-8.5.14.tar.gz

Creamos la ubicación /opt/tomcat y descomprimimos el fichero:

  1. mkdir /opt/tomcat
  2. tar xvf apache-tomcat-8.5.14.tar.gz -C /opt/tomcat --strip-components=1

Vale, ahora tenemos que asignar permisos  y propietario a la carpeta y a diferentes subcarpetas y ficheros.

  1. cd /opt/tomcat
  2. chgrp -R tomcat /opt/tomcat
  3. chmod -R g+r conf
  4. chmod g+x conf
  5. #Por último asignmos el propietario a las carpetas principales
  6. chown -R tomcat webapps/ work/ temp/ logs/

Como hemos descargado el software y no hemos utilizado ‘yum‘ para la instalación desde los repositorios, debemos crear un fichero de arranque y  que lo sepa leer systemd.

Creamos dicho fichero:

  1. vi /etc/systemd/system/tomcat.service

Con el siguiente comentenido:

  1. # Systemd unit file for tomcat
  2. [Unit]
  3. Description=Apache Tomcat Web Application Container
  4. After=syslog.target network.target
  5.  
  6. [Service]
  7. Type=forking
  8.  
  9. Environment=JAVA_HOME=/usr/lib/jvm/jre
  10. Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
  11. Environment=CATALINA_HOME=/opt/tomcat
  12. Environment=CATALINA_BASE=/opt/tomcat
  13. Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
  14. Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'
  15.  
  16. ExecStart=/opt/tomcat/bin/startup.sh
  17. ExecStop=/bin/kill -15 $MAINPID
  18.  
  19. User=tomcat
  20. Group=tomcat
  21. UMask=0007
  22. RestartSec=10
  23. Restart=always
  24.  
  25. [Install]
  26. WantedBy=multi-user.target

Se trata de una configuración básica, si tienes ciertos conocimientos del funcionamiento de Tomcat, la puedes adaptar a tu gusto.

Ahora nos toca indicar a systemd que utilice el nuevo fichero:

  1. systemctl daemon-reload
  2. systemctl start tomcat
  3. #Lo añadimos al arranque
  4. systemctl enable tomcat
  5. #Podemos ver su estado
  6. systemctl status tomcat

De esta manera ya podemos ver la web de administración de tomcat, escribiendo http://la-ip-o-nombre-del-servidor:8080

Ojo, todavía nos queda trabajo. Ahora debemos añadir un usuario que tengo permisos de administrador, para poder acceder al panel. Para ello debemos modificar el fichero /opt/tomcat/conf/tomcat-users.xml, indicando el nuevo usuario:

  1. vi /opt/tomcat/conf/tomcat-users.xml

Dentro del fichero, justo dentro del apartado con las siguientes líneas :

  1. <tomcat-users>
    
  2. ...
    
  3. </tomcat-users>

Escribimos:

  1. <tomcat-users>
    
  2.     <user username="adminstrador" password="contraseña" roles="manager-gui,admin-gui"/>
    
  3. </tomcat-users>

En la línea anterior hemos creado un nuevo usuario, llamado «administrador» con roles sobre la «manager-gui» y la «admin-gui», esto es, los paneles de administración. Atención aquí, para que funcionen tenemos que eliminar la línea anterior y posterior, de comentarios.

Por defecto en las últimas versiones de Tomcat el acceso a los paneles de ministración y manager están restringuidos, para IP que no sean la del propio servidor. Para cambiar esto y así acceder de manera remota desde otra ubicación, se deben modificar los ficheros /opt/tomcat/webapps/manager/META-INF/context.xml y /opt/tomcat/webapps/host-manager/META-INF/context.xml, modificando las siguientes líneas:

  1. <Context antiResourceLocking="false" privileged="true" >
    
  2.   <!--<Valve className="org.apache.catalina.valves.RemoteAddrValve"
    
  3.          allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />-->
    
  4. </Context>

Una vez realizamos el cambio guardamos, salimos y reiniciamos el servicio:

  1. systemctl restart tomcat

Con esto ya lo tendríamos listo para acceder. Para la ocasión he creado un subdominio para que veais su funcionamiento, durante unas semanas estará disponible. Es el siguiente: http://gatotom.ochobitsunbyte.pw:8080 El usuario es «admin» y la password «contrasea»

La primera vista sería la siguiente:

Si accedemos al apartado «Manager App«, la vista será la siguiente. Desde aquí podemos gestionar las aplicaciones, con la instalación nos vienen unas de muestra:

Gestor de App de Apache Tomcat

Si marcamos sobre «Host Manager» veremos la siguiente pantalla:

Y con esto hemos terminado. ¿Habéis accedido a la web? ¿Qué os parece esta versión? ¿Tenéis experiencia con Apache Tomcat? ¿Revisando las App de muestra os habéis encontrado con alguna sorpresa?

Nos leemos en la próxima.

16 Respuestas

  1. Indian dice:

    Creo que hay un problema, cuando descargas tomcat lo descomprimes directamente en el directorio /tmp y luego te mueves a /opt/tomcat donde no hay nada.

  2. Percy dice:

    Estimado buenas tardes, me parece excelente tu publicación, tengo una duda no encuentro la ruta /etc/systemd/system/ y tampoco puedo ejecutar el comando systemctl me dice que no existe, uso centos 6.

    • Hola,

      El artículo está pensado para CentOS 7. Piensa que en esa versión se utiliza systemd, y en CentOS 6 no.

      Tendrías que cambiar systemctl por service, por ejemplo:

      service tomcat restart

      Espero que te haya servido de ayuda mis comentarios.

      Saludos

  3. hola dice:

    Con este comando estas creando tambien la carpeta /opt/tomcat
    useradd -M -s /bin/nologin -g tomcat -d /opt/tomcat tomcat

    luego mas abajo vuelves a crearla mkdir /opt/tomcat te dara eror
    CReo que esto es COPY PASTE tuyo mejor danos la fuente

    • Hola,

      Para realizar el artículo lo hice todo yo en un servidor, de hecho estuvo accesible durante unos días para que la gente viese el resultado.

      En cualquier caso tienes razón en la parte de la creación del directorio, ya lo he modificado.

      Saludos

  4. Alexis dice:

    Haciendo la instalación de esta manera, ¿dónde puedo ubicar el archivo tomcat.conf? Lo busqué en /etc/tomcat pero no lo encontré

  5. David dice:

    Hola.
    Tienes idea donde mirar cuando obtienes un error de este tipo:

    systemctl status tomcat

    tomcat.service – Apache Tomcat Web Application Container
    Loaded: loaded (/usr/lib/systemd/system/tomcat.service; enabled; vendor preset: disabled)
    Active: failed (Result: exit-code) since Mon 2017-11-13 11:02:38 WET; 46s ago
    Main PID: 2131 (code=exited, status=1/FAILURE)

    systemd[1]: Started Apache Tomcat Web Application Container.
    systemd[1]: Starting Apache Tomcat Web Application Container…
    systemd[1]: tomcat.service: main process exited, code=exited, status=1/FAILURE
    systemd[1]: Unit tomcat.service entered failed state.
    systemd[1]: tomcat.service failed.

    Gracias

  6. Isaac dice:

    Buenos días

    He visto varios manuales donde se instala Tomcat y no siempre es igual. En la mayoría de casos no se crea el usuario tomcat. ¿La forma más recomendable de realizar la instalación sería esta?

    Saludos

  7. ildefonso dice:

    Hola, buenas noches

    Me encuentro con un problema y es que no logro encontrar el directorio: » /etc/systemd/system/ » y por ende no puedo crear el «tomcat.service» Me podrías ayudar por favor.

  8. Isaac dice:

    Buenos días David
    Otra consulta. Tengo todo funcionando perfectamente. Cuando coloco un war en la carpeta war-listen del master se despliega automáticamente en los exclavos, ahora tengo la duda de si una vez desplegado todo, debería eliminar los .war de la carpeta war-listen o dejarlos.
    ¿Qué utilidad tiene dejarlos? ¿Qué es mejor?

    Muchas gracias

  9. No hay que olvidarse de abrir el puerto 8080 en el firewall para poder acceder desde el navegador. Muy buena publicación!
    Saludos

Deja un comentario

This site uses Akismet to reduce spam. Learn how your comment data is processed.