Instalación, configuración e despregamento de aplicacións web en Apache Tomcat 10
Sumario
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:
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:
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
- https://tecadmin.net/create-virtualhost-in-tomcat/
- https://tomcat.apache.org/tomcat-10.0-doc/virtual-hosting-howto.html
- https://openwebinars.net/academia/aprende/tomcat-aseguramiento
Configuración de certificado SSL
- https://tecadmin.net/configure-ssl-certificate-in-tomcat/
- https://openwebinars.net/academia/aprende/tomcat-aseguramiento/
- https://tomcat.apache.org/tomcat-10.0-doc/ssl-howto.html
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
- Analizando os diferentes métodos de despregamento de aplicacións hacia Tomcat
- Configurando varias instancias de Tomcat nun so servidor simulando contonar (desenvolvemeto, preprodución, formación, probas, produción)