Apache Tomcat es un paquete de software diseñado para ejecutar aplicaciones web en Java. Apache Tomcat es una implementación de tecnologías como Java Servlet, JavaServer Pages, Java Expression Language y Java WebSocket, por lo que a menudo se lo denomina contenedor de servlets.

La instalación debe realizarse en un servidor limpio, sin el panel ispmanager. Veamos el ejemplo de los sistemas operativos relevantes al momento de la publicación del artículo: Debian, Ubuntu, CentOS, Alma Linux / Rocky Linux.

Ajustes previos

Antes de instalar Tomcat, debe crear un usuario para su funcionamiento, así como instalar Java.

Crear un usuario:

# useradd tomcat -U -s /bin/false -d /opt/tomcat -m

Instalamos Java. Para hacer esto, use las instrucciones listas para usar.

Antes de instalar Tomcat, debe determinar su versión. En la página oficial de Apache Tomcat, hay una lista de versiones a la izquierda.: seleccione el deseado, por ejemplo Tomcat 10, luego copie el enlace para descargar el archivo. alquitrán.gz .

Apache Tomcat 10.1 solo funciona con la versión mínima de Java 1.11.0.

Verifique la versión de Java usando el comando:

# java -version

Si la salida contiene la versión 1.11 o superior (versión openjdk «11.0.18»), puede instalar Tomcat 10.1.

Si la salida contiene una versión anterior, por ejemplo, 1.8 (versión openjdk «1.8.0_362»), debe instalar Java 1.11 o instalar Tomcat 10.0.

Descargando el archivo:

# wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.18/bin/apache-tomcat-10.1.18.tar.gz

Desempaquetar el archivo en el directorio de usuario de tomcat creado previamente (asegúrese de tener un archivo Tomcat en el directorio actual; de lo contrario, en lugar de apache-tomcat-*.alquitrán.gz especifique el nombre completo del archivo):

# tar zxvf apache-tomcat-*.tar.gz -C /opt/tomcat --strip-components 1

Y cambiamos los permisos de archivo para el usuario tomcat.:

# chown -R tomcat:tomcat /opt/tomcat

Dado que Tomcat se está ejecutando actualmente en modo manual, no se iniciará después de reiniciar el servidor, y esto debe solucionarse. Para ello, configuraremos el archivo de servicio systemd, que ejecutará Tomcat y, si se bloquea, lo reiniciará.

Ubuntu/Debian

# update-java-alternatives -l 

La salida será algo como esto, los valores de la versión pueden variar:

java-1.11.0-openjdk-amd64  1111   /usr/lib/jvm/java-1.11.0-openjdk-amd64

Cree el /etc/systemd/system/tomcat.service de servicio y agregue lo siguiente:

[Unit]
Description=Apache Tomcat Server
After=network.target

[Service]
Type=forking
User=tomcat
Group=tomcat
Environment="JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom -Djava.awt.headless=true"
Environment="CATALINA_BASE=/opt/tomcat"
Environment="CATALINA_HOME=/opt/tomcat"
Environment="CATALINA_PID=/opt/tomcat/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target

Cambiando el valor de JAVA_HOME a /usr/lib/jvm/java-1.11.0-openjdk-amd64 (puede variar según la versión de Java).

CentOS/AlmaLinux/RockyLinux

Cree el /etc/systemd/system/tomcat.service de servicio y agregue lo siguiente:

[Unit]
Description=Apache Tomcat Server
After=syslog.target network.target

[Service]
Type=forking
User=tomcat
Group=tomcat
Environment=CATALINA_PID=/opt/tomcat/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
Restart=on-failure
RestartSec=10


[Install]
WantedBy=multi-user.target

Aplicar la configuración e iniciar el demonio Tomcat

Otras configuraciones son las mismas para todos los sistemas operativos.

Para aplicar la configuración, reinicie el demonio:

# systemctl daemon-reload

Lanzamiento de Tomcat:

# systemctl start tomcat

Verificamos que el servicio esté en funcionamiento:

# systemctl status tomcat
tomcat.service - Apache Tomcat Server
  Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: enabled)
  Active: active (running) since Fri 2023-02-03 13:04:30 MSK; 1min 4s ago

También será útil configurar la ejecución automática de Tomcat después de reiniciar el servidor.:

# systemctl enable tomcat

Para CentOS, Alma Linux y Rocky Linux, deberá abrir el puerto 8080 en el firewall.:

# firewall-cmd --permanent --add-port=8080/tcp
# firewall-cmd --reload

Vaya al navegador en el enlace: ip_server: 8080

Configuración del acceso a la interfaz web

Tomcat tiene una interfaz web para la administración, pero el acceso a ella aún debe configurarse, que es lo que vamos a hacer ahora.

Creando un usuario editando el archivo /opt/tomcat/conf/tomcat-users.xml, agregando las siguientes líneas a la sección tomcat-users:

<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<user username="USER_NAME" password="PASSWORD_USER" roles="admin-gui,manager-gui"/>

A continuación, debe permitir que una IP específica acceda a la interfaz web de administración. Para hacer esto, debe realizar cambios en el archivo /opt/tomcat/webapps/manager/META-INF/context.xml .

Encontramos la línea:

allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />

Agregamos una nueva IP a través de la línea recta » / » (especificamos nuestra IP en lugar de 127.0.0.1), por ejemplo:

allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|127.0.0.1" />

Hacemos lo mismo con el archivo /opt/tomcat/webapps/host-manager/META-INF/context.xml .

Después de todas las configuraciones, reinicie Tomcat.

# systemctl restart tomcat

A continuación, haga clic en uno de los tres puntos de control del sitio para iniciar sesión.:

Se le pedirá que ingrese su nombre de usuario y contraseña para su autorización. Especifique los datos creados previamente en el archivo /opt/tomcat/conf/tomcat-users.xml .

Changing the port

De forma predeterminada, Tomcat se ejecuta en el puerto 8080. Si es necesario, puede cambiarlo en el archivo / opt / tomcat / conf / server.»»xml encontrando la línea <Puerto conector = «8080» protocolo=»HTTP/1.1″. Cambiamos 8080 al puerto deseado y reiniciamos Tomcat.

Instalación del certificado

Colocamos la clave, el certificado y la cadena en el servidor.

A continuación, debe combinar el certificado y la cadena utilizando el comando:

# cat certificate file_chains > cert.pem

La clave está en el .formato pem:

# mv file_key.pem key

Generando el .archivo p12:

# openssl pkcs12 -export -out /tmp/cert_and_key.p12 -in cert.pem -inkey key.pem -name tomcat

Se le pedirá una contraseña, especifique una y recuérdela.

Generando un certificado para Tomcat:

# keytool -importkeystore -deststorepass 'PASSWORD_MIN_6_SIGNS' -destkeypass'PASSWORD_MIN_6_SIGNS' -destkeystore /tmp/domain.jks -srckeystore /tmp/cert_and_key.p12 -srcstoretype PKCS12 -srcstorepass 'PASSWORD_IS_PREVIOUS_STEP' -alias tomcat

Mover el archivo terminado:

# mv /tmp/domain.jks /opt/tomcat/conf/domain.jks

En el archivo /opt/tomcat/conf/server.xml encontramos el bloque:

<!--
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
...

</Connector>
-->

Retire los bordes del bloque para descomentarlo y hacer que se vea como:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
            maxThreads="150" SSLEnabled="true">
     <SSLHostConfig>
         <Certificate certificateKeystoreFile="conf/domain.jks"
certificateKeystorePassword="PASSWORD_MIN_6_SIGNS"
type="RSA" />
</SSLHostConfig>
</Connector>

En certificateKeystoreFile, especifique el archivo conf/domain.jks es un certificado creado previamente que hemos movido.

En certificateKeystorePassword, especifique la contraseña del certificado.

Reiniciando Tomcat:

# systemctl restart tomcat