# DPL - Instalación Tomcat

<div style="text-align: right;">
<p><i>Jerobel Rodríguez</i></p>
</div>
<hr>
## Requisitos
* Sistema Linux con adaptador red en brigde.
* Servidor Apache [(Ver tutorial)](https://hackmd.io/@Jerorguez/ByL-50Izj)
---
## Instalación JDK
JDK es un Kit de Desarrollo Java, incluye todo lo necesario para desarrollar, depurar y ejecutar aplicaciones Java.
```bash
sudo apt install default-jdk
```

---
## Creación de grupo para Tomcat
Creamos un grupo llamado `tomcat` y un usuario `tomcat` para unirlo al grupo.
```bash
sudo groupadd tomcat
sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat
```

---
## Instalación Tomcat 9
1. Ejecutaremos la isntalación mediante curl (necesario tenerlo instalado). Para ello nos dirigimos al siguiente enlace [Download Tomcat](https://tomcat.apache.org/download-90.cgi). Y copiamos el link de instalación del archivo con extensión `tar.gz`.

2. Ejecutamos en nuestra terminal el siguiente comando
```bash
cd /tmp
curl -O https://downloads.apache.org/tomcat/tomcat-9/v9.0.72/bin/apache-tomcat-9.0.72.tar.gz
```

3. Ahora crearemos una carpeta para tomcat en `/opt/` y extraemos el fichero `.tar` que acabamos de descargar.
```bash
tar xzvf apache-tomcat-9*tar.gz -C /opt/tomcat --strip-components=1
```

4. Nos movemos al directorio que acabamos de crear `/opt/tomcat` y le otorgamos todos los permisos del directorio a los usuarios del grupo `tomcat`. También le daremos permisos de lectura al directorio `conf/` y de ejecución. Asignaremos al usuario `tomcat` como propietario de los directorios `webapps/`, `work/`, `temp/` y `logs/`.
```bash
cd /opt/tomcat/
chgrp -R tomcat /opt/tomcat
chmod -R g+r conf
chmod g+x conf
chown -R tomcat webapps/ work/ temp/ logs/
```

5. Al no haber instalado tomcat mediante un ejecutable, es necesario crear un fichero de configuración del servicio cuya extensión es `.service`.
```bash
nano /etc/systemd/system/tomcat.service
```
Y le añadimos el siguiente contenido:
```bash
[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
```
**Nota**: La ruta de la variable de entorno `JAVA_HOME` debe ser aquella donde tengamos instalado `java` (default: `/usr/lib/jvm`).

6. Para aplicar los cambios habrá que recargar el daemon de `systemd` y luego iniciaremos y comprobaremos el estado de tomcat.
```bash
systemctl daemon-reload
systemctl start tomcat
systemctl status tomcat
```

---
## Tomcat con Apache
Necesitamos que nuestro servidor `apache` redirija todas las peticiones que tengan que ver con `tomcat` desde el puerto `80` al `8080`.
1. Establecemos la carpeta que contiene las aplicaciones `java`. En el fichero `/opt/tomcat/conf/server.xml` podemos comprobar que hay una línea en la que se configura el `host virtual localhost` y la carpeta de la base de aplicaciones.

2. Tomcat posee una interfaz gráfica para administrar las aplicaciones, entonces es necesario configurar un usuario que tenga acceso. Para ello modificamos el fichero `/opt/tomcat/conf/tomcat-users.xml`.

---
## Despliegue de APP Java en Apache-Tomcat
Nuestras apps de `Java` se guardan en la carpeta `webapps`.

Para este tutorial vamos a desplegar un proyecto de ejemplo que hemos descargado previamente. Para ello deberemos mover nuestro proyecto al directorio `webapps/`.
```bash
mv ejemplop.war /opt/tomcat/webapps/
```


1. Si accedemos a la siguiente dirección [localhost:8080](http://localhost:8080) nos aparecerá el GUI de Tomcat.

2. Para iniciar sesión habrá que usar el nombre de usuario y la contraseña que configuramos anteriormente en el fichero `tomcat-users.xml`. Y para poder desplegar nuestra app (descargada previamente) es necesario seleccionar su fichero `.war`.

**Nota**: Puede ser que no sea posible desplazarte hasta el directorio `webapps` para seleccionar el archivo `.war` del proyecto. Si es así, podemos mover el archivo a una carpeta donde tengamos acceso desde la interfaz gráfica.



3. Accedemos a nuestra app para comprobar que ha sido correctamente desplegada.
