Apache Tomcat es un servidor web y contenedor de servlets que se utiliza para presentar aplicaciones Java. Tomcat es una implementación de código abierto de las tecnologías Java Servlet y JavaServer Pages publicada por la Apache Software Foundation. En este tutorial se abordan la instalación básica y algunas configuraciones de la última versión de Tomcat 9 en su servidor Ubuntu 18.04.
Antes de comenzar con esta guía, debe disponer de un usuario no root con privilegios sudo
configurado en su servidor. Puede aprender a hacer esto completando nuestra guía de configuración inicial para servidores de Ubuntu 16.04.
Para que sea posible ejecutar cualquier código de aplicaciones web Java, es necesario que Tomcat esté instalado en el servidor. Podemos cumplir con ese requisito instalando OpenJDK con apt.
Primero, actualice su índice de paquetes de apt:
- sudo apt update
A continuación, instale el paquete del Kit de desarrollo Jave con apt:
- sudo apt install default-jdk
Ahora que Java está instalado, podremos crear un usuario tomcat
, que usaremos para ejecutar el servicio de Tomcat.
Por seguridad, Tomcat debería ejecutarse como un usuario sin privilegios (es decir, no root). Crearemos un nuevo usuario y grupo que ejecutarán el servicio de Tomcat.
Primero, cree un nuevo grupo tomcat
:
- sudo groupadd tomcat
A continuación, cree un nuevo usuario tomcat
. Haremos que este usuario sea miembro del grupo tomcat
, con un directorio de inicio /opt/tomcat
(donde instalaremos Tomcat) y un shell de /bin/false
(de modo que nadie pueda iniciar sesión en la cuenta):
- sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat
Ahora que nuestro usuario tomcat
está configurado, descargaremos e instalaremos Tomcat.
La mejor alternativa para instalar Tomcat 9 es descargar la última versión binaria y luego configurarla manualmente.
Busque la última versión de Tomcat 9 en la página de descargas de Tomcat 9. En el momento en que se redactó esta guía, la versión más reciente fue la 9.0.10, pero debería usar una versión estable posterior si se encuentra disponible. En la sección Binary Distributions, debajo de la lista de Core, copie el enlace a “tar.gz”. En la mayoría de los navegadores puede realizarlo haciendo clic con el botón secundario en el enlace y seleccionando Copiar la dirección del enlace o una opción similar.
A continuación, posiciónese en el directorio /tmp
en su servidor. Este es un buen directorio para descargar los elementos ephemeral como el tarball de Tomcat, que no necesitaremos tras extraer el contenido de Tomcat:
- cd /tmp
Utilice curl
para descargar el enlace que copió desde el sitio web de Tomcat:
- curl -O paste_the_copied_link_here
Instalaremos Tomcat en el directorio /opt/tomcat
. Cree el directorio y luego extraiga el archivo con estos comandos:
- sudo mkdir /opt/tomcat
- sudo tar xzvf apache-tomcat-*tar.gz -C /opt/tomcat --strip-components=1
A continuación, podremos configurar los permisos de usuario adecuados para nuestra instalación.
El usuario tomcat
que configuramos debe tener acceso a la instalación de Tomcat. Configuraremos esto ahora.
Posiciónese en el directorio en el que desempaquetamos la instalación de Tomcat:
- cd /opt/tomcat
Otorgue la propiedad sobre todo el directorio de instalación al grupo tomcat
:
- sudo chgrp -R tomcat /opt/tomcat
A continuación, proporcione al grupo tomcat
acceso de lectura al directorio conf
y a todos sus contenidos, y acceso de ejecución al directorio:
- sudo chmod -R g+r conf
- sudo chmod g+x conf
Asegúrese de que el usuario tomcat
sea el propietario de los directorios webapps
, work
, temp
y logs
:
- sudo chown -R tomcat webapps/ work/ temp/ logs/
Ahora que están configurados los permisos adecuados, podemos crear un archivo de servicio systemd para gestionar el proceso de Tomcat.
Nos convendrá poder ejecutar Tomcat como servicio; por ello, configuraremos el servicio systemd.
Tomcat necesita saber dónde está instalado Java. Esta ruta se denomina comúnmente “JAVA_HOME”. La alternativa más sencilla para revisar esa ubicación es ejecutar el siguiente comando:
- sudo update-java-alternatives -l
Outputjava-1.11.0-openjdk-amd64 1081 /usr/lib/jvm/java-1.11.0-openjdk-amd64
Su JAVA_HOME
es el resultado de la última columna (resaltada en rojo). Considerando el ejemplo anterior, el JAVA_HOME
correcto para este servidor sería el siguiente:
JAVA_HOME/usr/lib/jvm/java-1.11.0-openjdk-amd64
Es posible que su JAVA_HOME
sea diferente.
Con esta información, podemos crear el archivo de servicio systemd. Abra un archivo llamado tomcat.service
en el directorio /etc/systemd/system
escribiendo lo siguiente:
- sudo nano /etc/systemd/system/tomcat.service
Pegue el siguiente contenido en su archivo de servicio. Modifique el valor de JAVA_HOME
si es necesario para que coincida con el valor que encontró en su sistema. Es posible que también desee modificar los ajustes de asignación de memoria especificados en CATALINA_OPTS
:
[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
Cuando termine, guarde y cierre el archivo.
A continuación, vuelva a cargar el demonio systemd para que reciba información sobre nuestro archivo de servicio:
- sudo systemctl daemon-reload
Inicie el servicio Tomcat escribiendo lo siguiente:
- sudo systemctl start tomcat
Compruebe que se inició sin errores escribiendo lo siguiente:
- sudo systemctl status tomcat
Ahora que se inició el servicio de Tomcat, podemos probarlo para garantizar que la página predeterminada está disponible.
Antes de hacer esto, debemos realizar ajustes en el firewall para permitir que nuestras solicitudes lleguen al servicio. Si cumplió con los requisitos previos, en este momento dispondrá de un firewall ufw
habilitado.
Tomcat utiliza el puerto 8080
para aceptar solicitudes convencionales. Permita el tráfico hacia este puerto escribiendo lo siguiente:
- sudo ufw allow 8080
Una vez modificado firewall, podrá acceder a la página de presentación predeterminada agregando a su dominio o dirección IP la terminación :8080
y visitándolos en un navegador web:
Open in web browserhttp://server_domain_or_IP:8080
Verá la página de presentación de Tomcat predeterminada e información adicional. Sin embargo, si hace clic en los enlaces de de la aplicación de administración, por ejemplo, se denegará el acceso. Podemos configurar ese acceso a continuación.
Si pudo acceder correctamente a Tomcat, será un buen momento para habilitar el archivo de servicio a fin de que Tomcat se inicie automáticamente en el inicio:
- sudo systemctl enable tomcat
Para usar la aplicación de administración web que viene con Tomcat, debemos añadir un inicio de sesión a nuestro servidor de Tomcat. Haremos esto editando el archivo tomcat-users.xml
:
- sudo nano /opt/tomcat/conf/tomcat-users.xml
Le convendrá añadir un usuario que pueda acceder a manager-gui
y admin-gui
(aplicaciones web que vienen con Tomcat). Puede hacerlo definiendo un usuario, similar al ejemplo que se muestra a continuación, entre las etiquetas tomcat-users
. Asegúrese de cambiar el nombre de usuario y la contraseña por opciones seguras.
<tomcat-users . . .>
<user username="admin" password="password" roles="manager-gui,admin-gui"/>
</tomcat-users>
Guarde y cierre el archivo cuando termine.
Por defecto, las versiones más recientes de Tomcat impiden que las aplicaciones provenientes del propio servidor accedan a las aplicaciones Manager y Host Manager. Debido a que la instalación se realizará en una máquina remota, probablemente le convenga eliminar o alterar esta restricción. Para cambiar las restricciones de direcciones IP en estas, abra los archivos context.xml
correspondientes.
Para la aplicación Manager, escriba lo siguiente:
- sudo nano /opt/tomcat/webapps/manager/META-INF/context.xml
Para la aplicación Host Manager, escriba esto:
- sudo nano /opt/tomcat/webapps/host-manager/META-INF/context.xml
En el interior, elimine la restricción de direcciones IP para permitir las conexiones desde cualquier lugar. Además, si desea permitir el acceso únicamente a las conexiones que provienen de su propia dirección IP, puede añadir su dirección IP pública a la lista:
<Context antiResourceLocking="false" privileged="true" >
<!--<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />-->
</Context>
Guarde y cierre los archivos cuando termine.
Para implementar los cambios que realizamos, reinicie el servicio de Tomcat:
- sudo systemctl restart tomcat
Ahora que creamos un usuario, podremos acceder a la interfaz de administración web en un navegador web. De nuevo, puede acceder a la interfaz correcta introduciendo el nombre de dominio o la dirección IP de su servidor seguido del puerto 8080 en su navegador:
Open in web browserhttp://server_domain_or_IP:8080
La página que ve sería la misma que se cargó cuando realizó la prueba anteriormente:
Veamos Manager App. Se puede acceder a ella a través del enlace o con http://server_domain_or_IP:80/manager/html
. Deberá introducir las credenciales de la cuenta que agregó al archivo tomcat-users.xml
. Después de eso, debería ver una página similar a esta:
El Administrador de aplicaciones web se utiliza para gestionar sus aplicaciones Java. En él puede concretar inicios, detenciones, recargas e implementaciones y detener estas últimas. También puede ejecutar algunos diagnósticos en sus aplicaciones (es decir, encontrar fugas de memoria). Por último, la información sobre su servidor está disponible en la parte inferior de esta página.
Ahora veremos Host Manager, al que se puede acceder a través del enlace o con http://server_domain_or_IP:80/host-manager/html/
:
Desde la página de Virtual Host Manager, puede añadir hosts virtuales desde los cuales proporcionará sus aplicaciones.
¡Completó la instalación de Tomcat! Ahora puede implementar sus propias aplicaciones web Java.
En este momento, su instalación de Tomcat funciona, pero no está completamente cifrada. Esto significa que todos los datos, incluidos los elementos confidenciales como las contraseñas, se envían en texto sin formato, que otros pueden interceptar y leer en Internet. Para evitar que esto suceda, se le recomienda encarecidamente cifrar sus conexiones con SSL. Puede obtener información sobre cómo cifrar su conexión con Tomcat siguiendo esta guía (tenga en cuenta que en ella se abarca el cifrado de Tomcat 8 en Ubuntu 16.04).
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
Sign up for Infrastructure as a Newsletter.
Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.
Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.