En este tutorial, aprenderemos cómo instalar el contenedor de la aplicación Apache Tomcat 8 en RHEL 8 / CentOS 8. Usaremos el paquete zip disponible para descargar desde el sitio web de Apache Tomcat. Como este paquete no se encargará de configurar el entorno, lo crearemos desde la línea de comandos.
En este tutorial aprenderás:
- Cómo instalar Apache Tomcat desde un archivo zip
- Cómo crear el entorno para el servidor Tomcat desde la línea de comandos
- Cómo agregar un archivo de servicio básico a systemd
- Cómo habilitar el inicio automático, iniciar y detener el servidor Tomcat
- Cómo verificar que se pueda acceder a Tomcat
Página de ejemplos servida por Apache Tomcat.
Requisitos de software y convenciones utilizadas
Requisitos de software y convenciones de la línea de comandos de Linux Categoría | Requisitos, convenciones o versión de software utilizada |
Sistema | RHEL 8 / CentOS 8 |
Software | Apache Tomcat 8 |
Otro | Acceso privilegiado a su sistema Linux como root o a través de sudo comando. |
Convenciones | # – requiere que los comandos de Linux dados se ejecuten con privilegios de root, ya sea directamente como usuario root o mediante el uso de sudo comando $ – requiere que los comandos de Linux dados se ejecuten como un usuario normal sin privilegios |
Cómo instalar apache tomcat en Linux Redhat 8 instrucciones paso a paso
Instalaremos un servidor Tomcat no desde un rpm
paquete, pero un zip
archivo que descargaremos del sitio oficial. Por lo tanto, el usuario que ejecutará el servidor, las rutas del sistema de archivos y los derechos deben configurarse a mano. Durante la instalación desde rpm
es una forma mucho más conveniente, puede haber situaciones en las que no sea una opción.
El ejemplo más trivial sería que el rpm
el paquete no está disponible, otra podría ser que la aplicación que se ejecutará en el contenedor Tomcat requiera una versión exacta de Tomcat, y al dejar el administrador de paquetes fuera de la instalación, se asegura que las actualizaciones del sistema dejarán intacto el servidor Tomcat. Por supuesto, esto puede no ser óptimo desde la perspectiva de la seguridad.
Para que esta instalación funcione, debe tener instalado Java 1.8 en el sistema de destino.
- Primero, descargaremos y extraeremos el
zip
paquete. Al navegar por el sitio de descarga de Tomcat 8, podemos copiar el enlace que necesitamos y usar wget
en el sistema de destino. Usaremos /opt
como la ruta base de la instalación, ya que es un lugar común para el software instalado a mano. Pasemos a este directorio:# cd /opt
Y descargue el paquete directamente a esta ruta:
# wget https://www-us.apache.org/dist/tomcat/tomcat-8/v8.5.37/bin/apache-tomcat-8.5.37.zip
--2019-01-02 18:06:00-- https://www-us.apache.org/dist/tomcat/tomcat-8/v8.5.37/bin/apache-tomcat-8.5.37.zip
Resolving www-us.apache.org (www-us.apache.org)... 40.79.78.1
Connecting to www-us.apache.org (www-us.apache.org)|40.79.78.1|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 10246390 (9.8M) [application/zip]
Saving to: 'apache-tomcat-8.5.37.zip'
apache-tomcat-8.5.37.zip 100%[================================================================================================================>] 9.77M 280KB/s in 23s
2019-01-02 18:06:24 (444 KB/s) - 'apache-tomcat-8.5.37.zip' saved [10246390/10246390]
El espejo puede variar según la ubicación, para un rendimiento óptimo, use el espejo más cercano a su ubicación.
- Luego extraemos el paquete con
unzip
en el lugar:# unzip apache-tomcat-8.5.37.zip
- Creamos un enlace simbólico
/opt/tomcat
apuntando a /opt/apache-tomcat-8.5.37
:# ln -s /opt/apache-tomcat-8.5.37 /opt/tomcat
De esta manera, instalar otra versión y cambiar a ella es una cuestión de cambiar el lugar al que apunta el enlace simbólico.
- Eliminamos el
/opt/tomcat/logs
original y reemplácelo con un enlace simbólico que apunte a /var/log/tomcat
:# mkdir /var/log/tomcat
# rmdir /opt/tomcat/logs
# ln -s /var/log/tomcat /opt/tomcat/logs
La razón detrás de esto es almacenar todos los registros en /var/log
donde el almacenamiento se maneja con la carga del sistema y, por lo tanto, teniendo en cuenta los tamaños de los archivos de registro. Es una buena práctica almacenar datos del mismo tipo en un solo lugar y /var/log
ya es el lugar de los archivos de registro del sistema.
- Creamos el usuario que ejecutará el servidor y lo configuramos como propietario de los directorios requeridos:
# useradd tomcat
# chown -R tomcat:tomcat /opt/apache-tomcat-8.5.37
# chown -R tomcat:tomcat /var/log/tomcat
- Añadimos derechos de ejecución a los scripts ubicados en el
bin
directorio:# chmod +x /opt/tomcat/bin/*.sh
- Creamos un archivo de servicio básico
/etc/systemd/system/tomcat.service
para systemd
con nuestro editor de texto favorito, como vi
o nano
con el siguiente contenido:[Unit]
Description=Tomcat
After=syslog.target network.target
[Service]
Type=forking
User=tomcat
Group=tomcat
ExecStart=/opt/tomcat/bin/catalina.sh start
ExecStop=/opt/tomcat/bin/catalina.sh stop
[Install]
WantedBy=multi-user.target
- Recargamos el
systemd
configuración, entonces systemd
notará el nuevo archivo de servicio:# systemctl daemon-reload
- Accederemos a Tomcat en el puerto
8080
. Abrimos el puerto en el firewall
: # firewall-cmd --zone=public --add-port=8080/tcp --permanent
Y recarga el cortafuegos:
# firewall-cmd --reload
- Le preguntamos a
systemd
sobre el nuevo servicio:# systemctl status tomcatenable systemd service
tomcat.service - Tomcat
Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: disabled)
Active: inactive (dead)
- Como
systemd
ahora sabe sobre el servicio, podemos iniciarlo:# systemctl start tomcat
- Finalmente, verificamos nuestro servidor en ejecución con systemd:
# systemctl status tomcat
tomcat.service - Tomcat
Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: disabled)
Active: active (running) since Wed 2019-01-02 18:40:00 CET; 4s ago
Process: 4854 ExecStop=/opt/tomcat/bin/catalina.sh stop (code=exited, status=0/SUCCESS)
Process: 5529 ExecStart=/opt/tomcat/bin/catalina.sh start (code=exited, status=0/SUCCESS)
Main PID: 5543 (java)
Tasks: 47 (limit: 12544)
Memory: 85.2M
CGroup: /system.slice/tomcat.service
˪5543 /usr/bin/java -Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties [...]
Si abrimos un navegador y escribimos http://<name-or-ip-address-of-the-server>:8080/examples/
a la barra de direcciones, deberíamos ver los ejemplos oficiales enviados con el paquete que se sirven desde nuestro servidor Tomcat instalado correctamente.
- Si es necesario, podemos habilitar el servicio systemd para iniciar automáticamente nuestro servidor al arrancar:
# systemctl enable tomcat