Cómo instalar Tomcat en CentOS 7

En esta entrada explicamos cómo instalar Tomcat en CentOS 7 paso a paso, de modo que puedas montar tu propio servidor de aplicaciones Java, como Java Servlet, JavaServer Pages, Java Expression Language y Java WebSocket technologies.

Antes de instalar Tomcat en CentOS 7

Si tienes intención de seguir esta guía de instalación de Tomcat en CentOS 7 debes cumplir unos mínimos requisitos:

  • Un sistema CentOS 7 actualizado.
  • Entorno de Java como OpenJDK.
  • Paquetes instalados: wget.
  • Acceso a línea de comandos como root o un usuario con permisos de sudo.
  • Conexión a Internet.

Con todos estos requerimientos cumplidos, es momento de abrir una terminal y empezar el trabajo.

Cómo descargar Tomcat para CentOS 7

Debido a que la versión de Tomcat presente en los repositorios de la distribución es demasiado obsoleta (7.0.76), optaremos por descargar Tomcat para CentOS 7 en su versión más reciente, disponible desde la web oficial, que en el momento de escribir esta guía es la 9.0.24.

como descargar tomcat para centos 7

En la sección de descargas de la versión 9 encontraremos diversos enlaces, de los cuales el que buscamos es el núcleo o core de Tomcat, disponible en varios formatos:

descargar tomcat para centos 7

El paquete Core está disponible en formatos .zip y .tar.gz. Este último será el que descarguemos.

Si estás navegando sobre la máquina de instalación puedes descargar el paquete que te interese en la ubicación que quieras. En mi caso copiaré el enlace para descargarlo desde consola mediante el comando wget:

~$ wget http://apache.rediris.es/tomcat/tomcat-9/v9.0.24/bin/apache-tomcat-9.0.24.tar.gz

Cómo instalar Tomcat en CentOS 7

Para instalar Tomcat en CentOS 7 no basta con instalar un simple paquete, hay que hacer algunas tareas previas y posteriores. Vamos a verlas paso a paso.

Preparativos

Ejecutar Tomcat como root es un riesgo de seguridad, por lo que lo mejor es crear un usuario del sistema específico para Tomcat:

~$ sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat

Extraemos el contenido del paquete directamente en el directorio /opt/tomcat/, que acabamos de crear para el usuario tomcat:

~$ sudo tar xzf apache-tomcat-9.0.24.tar.gz -C /opt/tomcat/

Se creará la carpeta /opt/tomcat/apache-tomcat-9.0.24/. Si vas a instalar sucesivas revisiones de Tomcat sin eliminar las anteriores puede que te interese crear un enlace simbólico apache-tomcat a la versión que quieras tener activa:

~$ sudo ln -s /opt/tomcat/apache-tomcat-9.0.24 /opt/tomcat/apache-tomcat

Ahora vamos a cambiar el propietario del directorio de Tomcat y su conenido al usuario tomcat que creamos antes:

~$ sudo chown tomcat: /opt/tomcat/ -R

Hay una serie de scripts de shell (.sh) en el directorio bin/ de la instalación de Tomcat. Debemos hacer que puedan ser ejecutables:

~$ sudo sh -c 'chmod +x /opt/tomcat/apache-tomcat/bin/*.sh'

Creación del servicio tomcat.service

Vamos a crear el servicio tomcat.service añadiendo el archivo correspondiente en /etc/systemd/system/ con un editor de texto:

~$ sudo nano /etc/systemd/system/tomcat.service

Con este contenido:

[Unit]
Description=Tomcat 9.0 servlet container
After=network.target

[Service]
Type=forking

User=tomcat
Group=tomcat

Environment="JAVA_HOME=/usr/lib/jvm/jre"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom"

Environment="CATALINA_BASE=/opt/tomcat/apache-tomcat"
Environment="CATALINA_HOME=/opt/tomcat/apache-tomcat"
Environment="CATALINA_PID=/opt/tomcat/apache-tomcat/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"

ExecStart=/opt/tomcat/apache-tomcat/bin/startup.sh
ExecStop=/opt/tomcat/apache-tomcat/bin/shutdown.sh

[Install]
WantedBy=multi-user.target

Tenemos que advertir a systemd de la existencia del nuevo servicio:

~$ sudo systemctl daemon-reload

Finalmente es el momento de iniciar el nuevo servicio tomcat:

~$ sudo systemctl start tomcat

Podemos comprobar que todo funciona como queremos con la opción status de systemctl:

Si necesitas que el nuevo servicio Tomcat esté siempre disponible y arranque cada vez que inicie CentOS 7, actívalo con la opción enable de systemctl:

~$ sudo systemctl enable tomcat
Created symlink from /etc/systemd/system/multi-user.target.wants/tomcat.service to /etc/systemd/system/tomcat.service.

Cómo configurar el firewall para Tomcat en CentOS 7

Para acceder a la interfaz de Tomcat fuera de la máquina local, habrá que configurar el firewall para permitir el acceso al puerto 8080/TCP:

~$ sudo firewall-cmd --permanent --zone=public --add-port=8080/tcp
~$ sudo firewall-cmd --reload

Y por fin podemos comprobar el funcionamiento de Tomcat en CentOS 7 mediante un navegador. A la dirección del servidor hay que añadir el puerto 8080 para acceder. En este ejemplo el servidor es accesible en el dominio centos7.local, por lo que la URL sería http://centos7.local:8080/

como instalar tomcat en centos 7

Permitir acceso remoto a la interfaz de Tomcat

Por defecto sólo se puede acceder a la interfaz de administración de Tomcat desde la máquina que ejecuta el servicio. Si, por ejemplo, intentamos acceder a la sección «Server Status» un mensaje nos lo confirmará:

Es posible cambiar el acceso para poder acceder desde la red configurando los archivos context.xml de las rutas /opt/tomcat/apache-tomcat/webapps/manager/META-INF/ y /opt/tomcat/apache-tomcat/webapps/host-manager/META-INF/

Editamos:

~$ sudo nano /opt/tomcat/apache-tomcat/webapps/manager/META-INF/context.xml

Buscaremos el bloque Context:

...
<Context antiResourceLocking="false" privileged="true" >
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
  <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer$
</Context>

Comentaremos la sección Valve para no restringir el acceso a la máquina local:

...
<!--
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
-->
...

Haremos idéntico cambio en el archivo context.xml del directorio /opt/tomcat/apache-tomcat/webapps/host-manager/META-INF/.

Terminados los cambios, reiniciamos el servicio tomcat:

~$ sudo systemctl restart tomcat

Si intentamos acceder de nuevo comprobaremos que en esta ocasión se nos piden credenciales de usuario:

Pero aún no tenemos usuarios con los que acceder.

Crear usuarios de Tomcat

Aunque hemos accedido a la interfaz web de Tomcat, no podremos hacer gran cosa, ya que no hay usuarios en el sistema.

Para dar de alta usuarios de Tomcat debemos hacerlo manualmente editando el archivo tomcat-users.xml ubicado en el subidrectorio conf/ de la instalación de Tomcat.

Editaremos el archivo:

~$ sudo nano /opt/tomcat/apache-tomcat/conf/tomcat-users.xml

El contenido de este archivo por defecto es un bloque tomcat-users que sólo contiene comentarios.

Incluiremos dentro de este bloque la definición de los roles admin-gui y manager-gui, y un usuario admin que tenga ambos roles:

...
<tomcat-users xmlns="http://tomcat.apache.org/xml"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
              version="1.0">
...
        <role rolename="admin-gui"/>
        <role rolename="manager-gui"/>
        <user username="admin" password="XXXXXXXX" roles="admin-gui,manager-gui"/>
</tomcat-users>

Una vez añadido el usuario administrador ya podemos utilizarlo para acceder a las zonas de la interfaz de Tomcat que requieren autenticación de usuario.

Antes intentamos entrar en la sección «Server Status» sin éxito; sin embargo, si ahora introducimos el usuario y la contraseña de nuestro administrador accederemos a la página correspondiente:

Conclusión

Ahora ya sabes cómo instalar Tomcat en CentOS 7 y por qué es más interesante instalar la versión disponible en la web oficial que los paquetes disponibles en los repositorios de la distribución. El proceso es más laborioso, pero el resultado merece la pena y podrás desplegar aplicaciones Java con las últimas características que permite Apache Tomcat.

¡Apoya este sitio!

Si tenías problemas con la instalación de Tomcat en CentOS 7 y gracias a esta guía los has superado, quizás quieras agradecérnoslo contribuyendo al mantenimiento de este sitio. Cualquier mínima donación es útil y ayudará a la creación de más guías y tutoriales, ¡gracias!

Valora esta entrada

1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (1 votos, promedio: 5,00 de 5)
Cargando…

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *