En esta entrada voy a explicaros paso a paso como podéis instalar Tomcat 9 en CentOS 8.
Para aquellos que no lo conozcáis Apache Tomcat es un contenedor open-source de java Servlet, JavaServer Pages, Java Expression Language y Java WebSocket.
Prerequisitos
- Usuario con privilegios sudo para poder realizar la instalación de los distintos paquetes.
- Disponer de una conexión a Internet para poder descargar Apache Tomcat.
Instalación OpenJDK
Tomcat 9 requiere Jave SE 8 o superior. Para este ejemplo instalaremos OpenJDK, la implementación open-source de Java que incorpora por defecto Java development y el runtime.
Para realizar la instalación simplemente tendremos que ejecutar el siguiente comando:
sudo dnf install java-11-openjdk-devel
Creación usuario para Tomcat
No es una buena práctica de seguridad ejecutar Tomcat con el usuario root es por ello que vamos a crear un usuario específico para este fin.
El usuario se llamará tomcat y su directorio home estará ubicado en la ruta /opt/tomcat. Este usuario será el encargado de iniciar el servicio de Tomcat.
sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat
Descarga de Tomcat
Vamos a descargar la última versión disponible de Tomcat 9.0.x desde la web oficial del proveedor.
Nota: En el momento en el que estoy escribiendo esta entrada la última versión disponible es la 9.0.31 por lo que es recomendable que os vayáis a la página oficial de Tomcat para ver si hay alguna nueva versión disponible.
Nos descargaremos el fichero de instalación en la carpeta /tmp
cd /tmp wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.31/bin/apache-tomcat-9.0.31.tar.gz
Descomprimimos el fichero.
tar -xf apache-tomcat-9.0.31.tar.gz
Movemos los ficheros descomprimidos a la carpeta que creamos anteriormente en la ruta /opt/tomcat.
sudo mv apache-tomcat-9.0.31 /opt/tomcat/
Cambiamos los permisos de la carpeta /opt/tomcat y todas sus subcarpetas para que el propietario pase a ser el usuario tomcat.
sudo chown -R tomcat: /opt/tomcat/
Convertimos los scripts, que podemos encontrar dentro del subdirectorio bin, en ficheros ejecutables.
sudo sh -c 'chmod +x /opt/tomcat/apache-tomcat-9.0.31/bin/*.sh'
Creación servicio Tomcat
Para poder ejecutar Tomcat como un servicio tendremos que crear un fichero que llamaremos tomcat.service el cual ubicaremos en la ruta /etc/systemd/system
sudo nano /etc/systemd/system/tomcat.service
Copiamos lo siguiente en el fichero:
Nota: En el caso que os hayáis descargado una versión distinta a la que utilizo en este ejemplo deberéis cambiar las rutas por las que useis.
[Unit] Description=Tomcat 9 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-9.0.31" Environment="CATALINA_HOME=/opt/tomcat/apache-tomcat-9.0.31" Environment="CATALINA_PID=/opt/tomcat/apache-tomcat-9.0.31/temp/tomcat.pid" Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC" ExecStart=/opt/tomcat/apache-tomcat-9.0.31/bin/startup.sh ExecStop=/opt/tomcat/apache-tomcat-9.0.31/bin/shutdown.sh [Install] WantedBy=multi-user.target
Guardamos los cambios y cerramos el editor.
Informamos al sistema de la creación de un nuevo servicio, para ello ejecutaremos el siguiente comando:
sudo systemctl daemon-reload
Configuramos el servicio Tomcat para que se inicie automáticamente al arranque del servidor y a continuación lo iniciamos manualmente.
sudo systemctl enable tomcat sudo systemctl start tomcat
Comprobamos que el servicio se ha iniciado correctamente. Para ello ejecutaremos el siguiente comando y comprobaremos que el servicio se encuentra en el estado active (running).
sudo systemctl status tomcat
tomcat.service - Tomcat 9 servlet container Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: disabled) Active: active (running) since Tue 2020-02-25 15:39:37 CET; 29min ago Process: 15290 ExecStop=/opt/tomcat/apache-tomcat-9.0.31/bin/shutdown.sh (code=exited, status=0/SUCCESS) Process: 15323 ExecStart=/opt/tomcat/apache-tomcat-9.0.31/bin/startup.sh (code=exited, status=0/SUCCESS) Main PID: 15331 (java) Tasks: 33 (limit: 26213) Memory: 212.7M CGroup: /system.slice/tomcat.service └─15331 /usr/lib/jvm/jre/bin/java -Djava.util.logging.config.file=/opt/tomcat/apache-tomcat-9.0.31/conf/logging.properties -Djava.util.log>bamos que el servicio se ha ejecutado correctamente.
Nota: En el caso que no arranque el servicio por temas de permisos y después de haberle aplicado los permisos de ejecución tal y como indiqué anteriormente es posible que tengas que considerar deshabilitar SELinux.
setenforce 0
Configuración Firewall
Para acceder a la interfaz web de configuración de tomcat desde fuera del propio servidor tendremos que abrir el puerto 8080 en el Firewall de Linux. Utilizaremos los siguientes comandos:
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent sudo firewall-cmd --reload
Configuración de la Web de Administración de Tomcat
Para poder acceder a la consola de administración de Tomcat vía web tendremos que crear en primer lugar un usuario.
Los usuarios y los roles son definidos en el fichero tomcat-user.xml
Abriremos el fichero:
sudo nano /opt/tomcat/apache-tomcat-9.0.31/conf/tomcat-users.xml
Para añadir un usuario agregaremos en el fichero lo siguiente:
<tomcat-users> <role rolename="admin-gui"/> <role rolename="manager-gui"/> <user username="admin" password="contraseña que deseemos" roles="admin-gui,manager-gui"/> </tomcat-users>
Por defecto la web de administración de Tomcat está configurada para permitir el acceso sólo desde el propio localhost. Si queremos acceder desde por ejemplo otro PC tendremos que realizar las siguientes modificaciones en los 2 ficheros que os indico a continuación.
sudo nano /opt/tomcat/apache-tomcat-9.0.31/webapps/manager/META-INF/context.xml
Comentamos la siguiente porción de texto.
<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" /> --> </Context>
sudo nano /opt/tomcat/apache-tomcat-9.0.31/webapps/host-manager/META-INF/context.xml
Comentamos la siguiente porción de texto.
<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" /> --> </Context>
Reiniciamos el servicio de Tomcat para aplicar los últimos cambios que hemos realizado.
sudo systemctl restart tomcat
Y listo ya podremos abrir desde cualquier navegador la dirección http://<dominio o dirección IP>:8080 y nos deberá aparecer una pantalla similar a la siguiente:
Espero os haya servido de utilidad.
Entradas relacionadas
- Linux: Instalación Oracle 18c XE en CentOS 8 mediante consola
- Linux: Cambiar puerto SSH por defecto en CentOS
- Linux: Cambiar el hostname en CentOS 7
- Linux: Configuración de red en CentOS7 mediante consola
Me dedico a la Administración de Sistemas y he creado este blog para compartir mis conocimientos con toda la comunidad y así aportar mi granito de arena y ayudar a todo el que lo necesite.
Muy bueno!
Un grande, todo bien saludos, vaya bombazo estás pegando en el CEU!
Me alegro os guste y os sea de utilidad.
Saludos
De todos lo que estuve viendo y probando
esto fue el mejor, muy claro, conciso, preciso y efectivo
Gracias por publicarlo
Se agradecen tus palabras Jorge Luis.
Saludos.
una consula, con que comando logro que tomcat se inicie al cargar el sistema en centos7, estoy usando: sudo systemctl status tomcat , pero sale error : Failed to execute operation: Bad message
Gracias
Hola Milagros,
El comando para que Tomcat se inicie junto con el sistema es:
sudo systemctl enable tomcat
Saludos.