GNU/Linux >> Tutoriales Linux >  >> Rocky Linux

Cómo instalar Apache Tomcat 10 con Nginx en Rocky Linux 8

Tomcat es un servidor web de código abierto para aplicaciones basadas en Java. Se utiliza para implementar aplicaciones Java Servlet y JSP. Los servlets de Java son pequeños programas que definen cómo un servidor maneja las solicitudes y las respuestas. Tomcat actúa como una implementación de código abierto de las tecnologías Java Servlet, JavaServer Pages, Java Expression Language y Java WebSocket.

Hay varias versiones de Tomcat disponibles. Discutiremos la instalación de Tomcat 10 para nuestro tutorial. Si desea instalar Tomcat 9, las instrucciones serán las mismas. Si hay cambios, se especificarán en el tutorial.

Para nuestro tutorial, instalaremos Tomcat 10 junto con el servidor Nginx para que actúe como un proxy inverso y lo protegeremos mediante SSL. Hay una versión de Tomcat 10.1.x que es la última versión alfa de Tomcat, pero no la instalaremos.

Requisitos

  • Un servidor que ejecuta Rocky Linux 8.5

  • Un usuario que no sea Sudo con privilegios de superusuario.

  • Asegúrate de que todo esté actualizado.

    $ sudo dnf update
    
  • Paquetes necesarios para la instalación.

    $ sudo dnf install wget tar
    

Paso 1:instalar Java

Tomcat 9 y 10 requieren Java 8 y versiones posteriores. Instalaremos OpenJDK 11, la implementación de código abierto de la plataforma Java.

Ejecute el siguiente comando para instalar OpenJDK.

$ sudo dnf install java-11-openjdk-devel

Verifique la instalación.

$ java -version
openjdk version "11.0.13" 2021-10-19 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.13+8-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.13+8-LTS, mixed mode, sharing)

Paso 2:crear un usuario del sistema

Crearemos un nuevo usuario del sistema para minimizar cualquier riesgo de seguridad ejecutando Tomcat como usuario raíz. Para el nuevo usuario, configuraremos /opt/tomcat como el directorio de inicio.

Ejecute el siguiente comando para crear un nuevo usuario del sistema para Tomcat.

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

Paso 3 - Descargar Tomcat

La última versión de Tomcat v10 se puede descargar desde su página de descarga. Al momento de escribir este tutorial, v10.0.14 es la última versión disponible. Compruebe la última versión antes de descargar Tomcat.

Usa wget para descargar Tomcat.

$ VERSION=10.0.14
$ wget https://dlcdn.apache.org/tomcat/tomcat-10/v${VERSION}/bin/apache-tomcat-${VERSION}.tar.gz

Extraiga el archivo a /opt/tomcat directorio.

$ sudo tar -xf apache-tomcat-${VERSION}.tar.gz -C /opt/tomcat/

Cree un enlace simbólico a la última versión de Tomcat que apunte al directorio de instalación de Tomcat.

$ sudo ln -s /opt/tomcat/apache-tomcat-${VERSION} /opt/tomcat/latest

Cambie la propiedad del directorio al usuario creado anteriormente.

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

Paso 4:crear un archivo de unidad Systemd

El siguiente paso es crear un archivo de servicio para el servidor Tomcat para que pueda iniciarse automáticamente.

Cree y abra el archivo /etc/systemd/system/tomcat.service para editar.

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

Pegue el siguiente código.

[Unit]
Description=Apache Tomcat 10 Servlet container
Wants=network.target
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/latest"
Environment="CATALINA_HOME=/opt/tomcat/latest"
Environment="CATALINA_PID=/opt/tomcat/latest/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"

ExecStart=/opt/tomcat/latest/bin/startup.sh
ExecStop=/opt/tomcat/latest/bin/shutdown.sh
Restart=always

[Install]
WantedBy=multi-user.target

Guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite guardar.

Paso 5:Iniciar y habilitar el servicio Tomcat

Vuelva a cargar el demonio de servicio para habilitar el servicio Tomcat.

$ sudo systemctl daemon-reload

Habilite e inicie el servicio Tomcat.

$ sudo systemctl enable tomcat --now

Consulta el estado del servicio.

$ sudo systemctl status tomcat
? tomcat.service - Apache Tomcat 10 Servlet container
   Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: disabled)
   Active: active (running) since Fri 2021-12-17 15:54:28 UTC; 24s ago
  Process: 86219 ExecStart=/opt/tomcat/latest/bin/startup.sh (code=exited, status=0/SUCCESS)
 Main PID: 86226 (java)
    Tasks: 19 (limit: 11411)
   Memory: 132.7M
   CGroup: /system.slice/tomcat.service
           ??86226 /usr/lib/jvm/jre/bin/java -Djava.util.logging.config.file=/opt/tomcat/latest/conf/logging.properties>

Dec 17 15:54:27 howtoforge systemd[1]: Starting Apache Tomcat 10 Servlet container...
Dec 17 15:54:28 howtoforge systemd[1]: Started Apache Tomcat 10 Servlet container.

Paso 6:configurar el cortafuegos

Rocky Linux usa Firewalld Firewall. Compruebe el estado del cortafuegos.

$ sudo firewall-cmd --state
running

Permitir puertos HTTP y HTTPS.

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https

Vuelva a cargar el cortafuegos para habilitar los cambios.

$ sudo firewall-cmd --reload

Paso 7:configurar la interfaz de administración web de Tomcat

Solo se podrá acceder a la interfaz de administración web una vez que hayamos creado una credencial de usuario para ella.

Los usuarios y roles de Tomcat se definen en /opt/tomcat/latest/conf/tomcat-users.xml expediente. Abra el archivo para editarlo.

$ sudo nano /opt/tomcat/latest/conf/tomcat-users.xml

Agregue las siguientes líneas antes de </tomcat-users línea. Reemplace el nombre de usuario y la contraseña con sus credenciales.

Elija diferentes credenciales para los portales Manager y Administrator Tomcat.

<tomcat-users>
<!--
    Comments
-->
<role rolename="manager-gui"/>
    <user username="manager" password="managerpassword" roles="manager-gui" />
<role rolename="admin-gui"/>
	<user username="admin" password="adminpassword" roles="admin-gui"/>
</tomcat-users>

Guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite guardar.

De forma predeterminada, solo se puede acceder a la interfaz de Tomcat desde el servidor local. Si necesita acceder desde cualquier lugar, debe configurarlo.

Abra el /opt/tomcat/latest/webapps/manager/META-INF/context.xml para editar.

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

Elimine las siguientes líneas o coméntelas como se especifica a continuación encerrándolas en <!-- y --> .

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

Permitir el acceso desde cualquier dirección IP es un riesgo de seguridad. Puede restringirlo permitiendo el acceso solo desde su dirección IP pública. Si su dirección IP pública es 22.22.22.22 , luego cambie la línea de la siguiente manera.

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

La lista de direcciones IP permitidas está separada por una barra vertical (| ). Puede agregar direcciones IP individuales o usar una expresión regular.

Guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite guardar.

Realice los mismos cambios en el archivo /opt/tomcat/latest/webapps/host-manager/META-INF/context.xml también.

Una vez terminado, reinicie el servidor Tomcat.

$ sudo systemctl restart tomcat

Paso 8:instalar SSL

Para instalar un certificado SSL usando Let's Encrypt, necesitamos instalar la herramienta Certbot.

En primer lugar, debe descargar e instalar el repositorio de EPEL.

$ sudo dnf install epel-release

Ejecute los siguientes comandos para instalar Certbot.

$ sudo dnf install certbot

Genere el certificado SSL.

$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d tomcat.example.com

El comando anterior descargará un certificado en /etc/letsencrypt/live/tomcat.example.com directorio en su servidor.

Generar un grupo Diffie-Hellman certificado.

$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Cree un directorio webroot de desafío para la renovación automática de Let's Encrypt.

$ sudo mkdir -p /var/lib/letsencrypt

Cree un trabajo cron para renovar el SSL. Se ejecutará todos los días para verificar el certificado y renovarlo si es necesario. Para eso, primero crea el archivo /etc/cron.daily/certbot-renew y ábralo para editarlo.

$ sudo nano /etc/cron.daily/certbot-renew

Pegue el siguiente código.

#!/bin/sh
certbot renew --cert-name tomcat.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"

Guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite.

Cambie los permisos en el archivo de tareas para que sea ejecutable.

$ sudo chmod +x /etc/cron.daily/certbot-renew

Paso 9:instalar Nginx

Rocky Linux 8.5 viene con la última versión estable de Nginx. Instálalo usando el siguiente comando.

$ sudo dnf module install nginx:1.20

Verifique la instalación.

$ nginx -v
nginx version: nginx/1.20.1

Habilite e inicie el servicio Nginx.

$ sudo systemctl enable nginx --now

Cree y abra el archivo /etc/nginx/conf.d/tomcat.conf para editar.

$ sudo nano /etc/nginx/conf.d/tomcat.conf

Pegue el siguiente código en él.

server {
    listen       443 ssl http2;
    listen       [::]:443 ssl http2;
    server_name  tomcat.example.com;

    access_log  /var/log/nginx/tomcat.access.log;
    error_log   /var/log/nginx/tomcat.error.log;
    
    # SSL
    ssl_certificate      /etc/letsencrypt/live/tomcat.example.com/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/tomcat.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/tomcat.example.com/chain.pem;
    ssl_session_timeout  5m;
    ssl_session_cache shared:MozSSL:10m;
    ssl_session_tickets off;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;
    resolver 8.8.8.8;

    location / {
      proxy_pass http://127.0.0.1:8080;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-Host $host;
      proxy_set_header X-Forwarded-Server $host;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}
# enforce HTTPS
server {
    listen       80;
    listen       [::]:80;
    server_name  tomcat.example.com;
    return 301   https://$host$request_uri;
}

Guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite una vez terminado.

Abra el archivo /etc/nginx/nginx.conf para editar.

$ sudo nano /etc/nginx/nginx.conf

Agregue la siguiente línea antes de la línea include /etc/nginx/conf.d/*.conf; .

server_names_hash_bucket_size  64;

Guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite.

Verifique la sintaxis del archivo de configuración de Nginx.

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Reinicie el servicio Nginx para habilitar la nueva configuración.

$ sudo systemctl restart nginx

Paso 10 - Ejecutar TomCat

Inicie https://tomcat.example.com en su navegador, y se abrirá la siguiente pantalla.

Ahora puede acceder a las páginas Estado del servidor, Aplicación de administrador y Administrador de host utilizando las credenciales de inicio de sesión que configuramos en el paso 7.

Conclusión

Esto concluye nuestro tutorial sobre la instalación y configuración del servidor Tomcat en un servidor basado en Rocky Linux 8.5 y su servicio a través del proxy inverso Nginx y el uso de SSL para protegerlo. Si tiene alguna pregunta, publíquela en los comentarios a continuación.


Rocky Linux
  1. Cómo instalar Apache Tomcat 9 con Nginx Proxy en Debian 10

  2. ¿Cómo instalar WordPress con LEMP (Nginx, MariaDB y PHP) en Rocky Linux 8?

  3. Cómo instalar Apache Maven en Rocky Linux/Alma Linux 8

  4. Cómo instalar ModSecurity con Nginx en Rocky Linux 8

  5. Cómo instalar Apache Kafka en Rocky Linux 8

Cómo instalar Apache Tomcat en Rocky Linux 8

Cómo instalar el marco Sails.js con Nginx en Rocky Linux 8

Cómo instalar Apache Tomcat 10 en Ubuntu 20.04 con Nginx

Cómo instalar Apache Tomcat 10 en Ubuntu 22.04 con Nginx

Cómo instalar Nginx en Rocky Linux 8

Cómo instalar Nginx en Rocky Linux 9