Instalación, configuración e despregamento de aplicacións web en Apache Tomcat 10

De MediaWiki
Ir a la navegación Ir a la búsqueda

Introdución

O servidor Apache Tomcat é un contenedor de servlets de código aberto baseado en Java creado para executar aplicacións web con servlets e JavaServer Pages (JSP).

Servlet
Módulo escrito en Java que serve para extender as capacidades dun servidor web agregando funcionalidades a este.

E importante ter en conta que as versións de Apache Tomcat están asociadas a distintas tecnoloxías e versións das mesmas. Podes consultar esa relación.

No momento de elaborar este artigo, as dúas últimas versions de apache:

Versións de Tomcat e compatibilidade coas tecnoloxías
Tomcat version Java version Servlet spec JSP spec
10.1.X 11 e posterior 6.0 3.1
10.0.x 8 e posterior 5.0 3.0

Instalación

En Linux

Neste caso levarase a cabo a instalación en Debian 10 dun Tomcat 9 e OpenJDK 11.

Poderíase instalar JRE de non contar con el:

apt install default-jre

Para coñecer versión de Java instalada e ruta:

update-java-alternatives -l

E sempre será preciso abrir o porto 8080 (porto por defecto de tomcat) do firewall e recargar regras:

ufw allow 8080
ufw reload

Instalación con binarios

É aconsellable facer a instalación cun usuario propio e non o root por cuestions de seguridade. Podemos seguir estes pasos: groupadd tomcat useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat

Con el último parámetro ese usuario tomcat no podrá ejecutar consola con shell, estará en el grupo tomcat.

 mkdir /opt/tomcat
 cd /opt/tomcat
 wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.65/bin/apache-tomcat-9.0.65.tar.gz
 tar xzvf apache-tomcat-9.0.65.tar.gz -C /opt/tomcat --strip-components=1
 rm apache-tomcat-9.0.65.tar.gz
 cd /opt/tomcat
 chgrp -R tomcat /opt/tomcat
 chmod -R g+r conf
 chmod -R g+x conf 
 chown -R tomcat webapps/ temp/ work/ logs/

Arrancaremos el servicio al inicio

sudo nano /etc/systemd/system/tomcat.service
[Unit]
Description=Apache Tomcat Web Application Container
After=network.target

[Service]
Type=forking

Environment=JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'

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

User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always

[Install]
WantedBy=multi-user.target

Reiniciamos el demonio:

systemctl daemon-reload

Le indicamos que ya arranque tomcat:

systemctl start tomcat

Y comprobamos ha arrancado correctamente:

systemctl status tomcat

Instalación con apt install

Esta opción é menos recomendable, coma aquí se sinala:

These packages work fine and are easy to install for a normal single-instance case, but they make it more difficult for more specific use cases, and more difficult for people on the Tomcat User mailing list to help you. That is because each of these packages distributes the files of Tomcat in different places on the disk, sets different environment variables, sets different links from one directory to the other in the filesystem, etc.. Moreover, some of those packages are notably outdated.

So it would be better to install a "standard" tomcat downloaded from the website https://tomcat.apache.org/, to some directory like /opt/tomcat, and follow the instructions that are given in the "RUNNING.txt" file.

En todo caso, os pasos serían máis sinxelos. A instalación:

apt install tomcat9 tomcat9-admin tomcat9-docs tomcat9-user tomcat9-examples
  • tomcat9-docs: este paquete inclúe unha aplicación web que permite navegar na documentación de Tomcat 9
  • tomcat9-examples: este paquete inclúe unha aplicación web que permite acceder a exemplos de Tomcat 9 Servlet e JSP
  • tomcat9-admin: este paquete instala dúas aplicacións web que poden axudar a manexar a instancia de Tomcat.
    • o manager webapp
    • o host-manager webapp

Na miña instalación, feita nun VPS contratado por min:

Para acceder o manager webabb é o host-manager, debemos dar pemisos:

cd /opt/tomcat/conf
nano tomcat-users.xml

Nalgunhas distros esta ruta será outra:

cd /etc/tomcat9/
nano tomcat-users.xml

En calquera caso engadir esta liña o ficheiro, gardar, e reiniciar tomcat:

<user username="useradmin" password="useradmin" roles="admin-gui,manager-gui,manager-status"/>
Reiniciamos servizo:
systemctl restart tomcat

En Windows

É prerrequisito ter a JDK instalada (nuhna versión de JDK compatible coa de Tomcat).

E configurar a variable de entorno, por interfaz gráfica, facendo clic no botón dereito en sistema, e chegando a opción coma se ve na captura:

JAVA_HOME variable de entoron

Ou comando powershell:

[Environment]::SetEnvironmentVariable("JAVA_HOME", "C:\Program Files\Java\jdk-18.0.2", "Machine")

Neste caso levarase a cabo a instalación nun Windows 10 Home, con JDK 18.0.2 e Tomcat 10.0.23.

Por sinxelez descargarei e executarei o ficheiro de tomcat Windows Service Installer, porque así guiaranos un asistente.

Creación dun virtual host

Configuración de certificado SSL

Despregamento dunha aplicación web

Hai varios xeitos de despregar unha aplicacion web en Tomcat.

Colleremos un dos exemplos que facilita a documentación de tomcat, un Hello World:

E seguiremos algunha das alternativas:

Por exemplo, coma se ve na imaxe, facer deploy cargando o ficheiro a través do manager, e acceder a mesma:

Ampliación

Referencias

Instalación

Despregamento dunha app

Troubleshooting