> Tomcat es un servidor web o contenedor web donde los desarrolladores pueden implementar aplicaciones web Java. > Apache Tomcat es un contenedor de servlets que permite ejecutar aplicaciones web basadas en Java, facilitando la implementación y gestión de servicios web. > Apache Tomcat es un contenedor de servlets de código abierto que se utiliza principalmente para compilar y ejecutar aplicaciones web basadas en Java, soportando tecnologías como JavaServer Pages (JSP), Java Servlet y WebSocket, lo que lo convierte en una opción popular para el desarrollo y despliegue de aplicaciones web dinámicas. Además, Tomcat puede funcionar de manera autónoma o en combinación con otros servidores web, como Apache HTTP, para mejorar su rendimiento y funcionalidad. > Un servlet es un componente de software en Java que se ejecuta en un servidor web y gestiona solicitudes HTTP, permitiendo la creación de contenido web dinámico y la interacción con aplicaciones empresariales, actuando como intermediario entre el cliente y el servidor para procesar datos y generar respuestas adecuadas. > Have an XWiki installation on Tomcat 9 and CPU Usage is through the roof and it is causing the web server to shut down and 504 people. Looking for some expertise on solving the issue. It is a virtual machine with 2 vCPUs and 8GB of RAM which is more than what should be needed. > Tengo una instalación de XWiki en Tomcat 9 y el uso de la CPU está por las nubes y está provocando que el servidor web se apague y 504 personas. Buscando experiencia para resolver el problema. Es una máquina virtual con 2 vCPU y 8 GB de RAM, que es más de lo que debería necesitarse. https://www.upwork.com/jobs/Tomcat-optimization-Ubuntu_~021839009814137104906/?referrer_url_path=find_work_home #### Como instalar Tomcat https://www.youtube.com/watch?v=TNZuqEglH9Y https://www.youtube.com/watch?v=7i0wj2QYo4M https://www.youtube.com/watch?v=lvl9MdkwiW4 https://www.youtube.com/watch?v=GOFIEnT8E7E https://www.youtube.com/watch?v=rd6Owel1dIg https://www.youtube.com/watch?v=1bnla8eYcaI https://www.youtube.com/watch?v=Feui5F42bII https://www.youtube.com/watch?v=oma_zXH2a0s https://www.youtube.com/watch?v=Vvm7cY7P9JE https://www.youtube.com/watch?v=FZ7Mn2jUyDI https://www.youtube.com/watch?v=m_9QNRHnL0E https://www.youtube.com/watch?v=oZZYD50y2w8 https://www.youtube.com/watch?v=aL8_tFNnQ_A https://www.youtube.com/watch?v=CptBO6wAiEQ https://www.youtube.com/watch?v=j-sNUzZLuUM https://www.youtube.com/watch?v=aL8_tFNnQ_A https://www.youtube.com/watch?v=oZZYD50y2w8 https://www.youtube.com/watch?v=UTAMrGCZi2I ### Instalación Instrucciones https://www.youtube.com/watch?v=FZ7Mn2jUyDI ```bash sudo apt update sudo apt-cache search tomcat sudo apt install -y tomcat9 tomcat9-admin ss -ltn sudo systemctl enable tomcat9 sudo ufw allow from any to any port 8080 proto tcp ``` #### Instalación (el mejor) https://tomcat.apache.org/download-10.cgi https://www.youtube.com/watch?v=Vvm7cY7P9JE ```bash sudo apt update ### Instalamos openjdk sudo apt install -y default-jre java --version ### Comando interesante: sudo update-java-alternatives -l cd /usr/lib/jvm ls -ltr cd java-11-openjdk-amd64 cd groupadd tomcat useradd -g tomcat -d /opt/tomcat -s /bin/false false id tomcat sudo su - tomcat mkdir -p /opt/tomcat cd /opt ls -ltr chown -R tomcat:tomcat tomcat/ cd /opt Ingresá a https://tomcat.apache.org/download-10.cgi copiá el link y descargá con wget Binary Distributions: Core: .tar.gz wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.30/bin/apache-tomcat-10.1.30.tar.gz tar xvf apache-tomcat-10.1.30.tar.gz -C /opt/tomcat --strip-components=1 cd tomcat chown -R tomcat:tomcat * ./startup.sh Ahora podés ingresar a localhost:8020 ./shutdown.sh ``` ### Creando un servicio en systemd Creá un archivo llamado `tomcat.service`: ```bash [Unit] Description=Tomcat Webserver After=network.target [Service] Type=forking # Restart=always Environment="JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64" # Adaptalo al directorio que create anteriormente Environment="CATALINA_HOME=/opt/tomcat" Environment="CATALINA_BASE=/opt/tomcat" ExecStart=/opt/tomcat/bin/startup.sh ExecStop=/opt/tomcat/bin/shutdown.sh User=tomcat Group=tomcat [Install] WantedBy=multi-user.target ``` ### Seguimos con la instalación: ```bash cp tomcat.service /etc/systemd/system systemd daemon-reload systemctl start tomcat ### Ejecutá status para ver si hay algún error, en este caso saltó error de permisos en la carpeta logs systemctl status tomcat cd /opt/tomcat chown -R tomcat:tomcat * systemctl start tomcat systemctl status tomcat Ahora podés ingresar a: http://localhost:8020 y tu servidor estará funcionando systemctl stop tomcat systemctl status tomcat systemctl enable tomcat ``` Ahora descargá una aplicación de ejemplo para probar: En google buscá: `download sample war file for tomcat` https://tomcat.apache.org/tomcat-7.0-doc/appdev/sample/ Descargá la aplicación con **wget** : https://tomcat.apache.org/tomcat-7.0-doc/appdev/sample/sample.war ```bash cd /tmp wget https://tomcat.apache.org/tomcat-7.0-doc/appdev/sample/sample.war cp sample.war /opt/tomcat/webapps/ cd /opt/tomcat/webapps/ chown tomcat:tomcat sample.war systemctl start tomcat ### Ahora se creará una carpeta llamada sample Podés ingresar a localhost:8020/sample ``` Eso es todo. # Otro método de instalación con AWS https://www.coachdevops.com/2020/04/install-tomcat9-on-ubuntu-1804-setup.html ### Conectarse a una instancia y dale a SSH cliente. https://www.youtube.com/watch?v=rd6Owel1dIg ### Requisitos previos: Primero cree una nueva instancia EC2 en AWS para configurar Tomcat. Abra también el puerto 8080 en las reglas de firewall de seguridad para la instancia EC2 en AWS. ### Instalación de Tomcat > Tomcat es un servidor web o contenedor web donde los desarrolladores pueden implementar aplicaciones web Java. Puede obtener más información haciendo clic en esta URL. Tomcat se puede instalar ejecutando los siguientes comandos: Cambiar el nombre del host a Tomcat ```bash sudo hostnamectl set-hostname Tomcat ``` ### Actualizar a los paquetes más recientes ```bash sudo apt update ``` #### Install Tomcat9 ```bash sudo apt install tomcat9 tomcat9-docs tomcat9-admin -y ``` #### Ejecutá el siguiente comando para configurar la aplicación tomcat admin app ```bash sudo cp -r /usr/share/tomcat9-admin/* /var/lib/tomcat9/webapps/ -v ``` #### Configurá un usuario en tomcat Abrí el archivo `tomcat-users.xml` ejecutando el siguiente comando: ```bash sudo vi /var/lib/tomcat9/conf/tomcat-users.xml ``` Necesitamos agregar el usuario de Tomcat y asignarlo al rol de administrador de script. Desplácese hacia abajo hasta el final del archivo, Agregue las siguientes líneas en la penúltima línea arriba (arriba de ) Esto sale de cuando le das a Manage app y ponés una clave incorrecta, en el tomcat: localhost:8080 ##### sustituí password por tu contraseña ```html ``` #### Ahora reinicie Tomcat para que los cambios surtan efecto. ```bash sudo systemctl restart tomcat9 ``` #### Verifique si Tomcat9 está funcionando bien ```bash sudo systemctl status tomcat9 ``` Ahora abra el navegador para acceder a Tomcat, ingrese ```bash http://cambiar_a_Ec2_public_dns_name:8080 ``` La ip está en el aws > ssh client ### Debería salir este mensaje ![tomcat works](/tomcat.png) ### Otro método de instalación https://www.youtube.com/watch?v=oma_zXH2a0s ```bash sudo apt update sudo apt install -y openjdk-11-jdk ``` ### Buscá tomcat 9 archive y bajate 9.0.65/bin/apache-tomcat.tar.gz ```bash java --version cd /opt wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.8.65/bin/apache-tomcat.tar.gz sudo tar xvf apache-tomcat.tar.gz rm -rf apache-tomcat.tar.gz cd /opt/apache-tomcat-9.8.65/conf sudo vim tomcat-users.xml Agregá lo mismo que expliqué arriba. sudo vi /opt/apache-tomcat-9.8.65/webapps/manager/META-INF/content.xml Comentá con `` la etiqueta Valve dejá Manager sin comentar sudo vi /opt/apache-tomcat-9.8.65/webapps/host-manager/META-INF/content.xml hacé lo mismo sudo /opt/apache-tomcat-9.8.65/bin/startup.sh sudo /opt/apache-tomcat-9.8.65/bin/shutdown.sh ``` ### Cambiá el puerto ```bash cd /opt/apache-tomcat-9.8.65/conf vi server.xml y ahí buscá port y cambiá ese. sudo /opt/apache-tomcat-9.8.65/bin/shutdown.sh sudo /opt/apache-tomcat-9.8.65/bin/startup.sh ``` ### Otra instalación https://www.youtube.com/watch?v=lvl9MdkwiW4 ```bash sudo apt update sudo apt install -y openjdk-11-jdk java --version sudo apt install -y tomcat9 tomcat9-admin ss -ltn netstat -tulpn | grep 8080 sudo ufw allow from any to any port 8080 proto tcp sudo vim /etc/tomcat9/tomcat-users.xml Agregá lo que agregamos antes. sudo systemctl restart tomcat9 ahora ingresá a localhost:8080/manager/html ``` ### Another one ```bash sudo apt update sudo apt install -y default-jdk chmod -R 777 /opt mkdir /opt/tomcat ### Descargá el targz de core de binary packages googleando tomcat download con wget y como expliqué antes sudo tar xvf apache-tomcat-10.0.2.tar.gz -C /opt/tomcat --strip-components=1 sudo /opt/tomcat/bin/startup.sh Abrí el servidor: localhost:8080 y dale a examples ``` El video https://www.youtube.com/watch?v=7i0wj2QYo4M pone otra configuración en `tomcat-users.xml` agrega uno que es manager-gui y otro admin-gui creo. Así: ```html ``` ### Para probar ```bash cd /opt/tomcat/bin/ ./startup.sh cd /opt/tomcat/webapps/ cd ROOT/ vim index.jsp <% out.println("Your IP address is "+ request.getRemoteAddr()); %> ``` Y ahora accedé a `localhost:8080/test.jsp` ## Otro método https://m.youtube.com/watch?v=j-sNUzZLuUM ```bash $ javac If it results in error, it means that there is no JDK installed. If JDK is not installed on your system then you can install it by using the following command in terminal: $ sudo apt-get install openjdk-12-jdk Make sure you watch complete video because command and data given won’t make sense without watching entire video. All the commands and data used in the video is given below: $ sudo groupadd tomcat $ sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat $ sudo mkdir /opt/tomcat $ wget https://www-us.apache.... $ sudo tar xzvf apache-tomcat-8*tar.gz -C /opt/tomcat --strip-components=1 $ cd /opt/tomcat $ sudo chgrp -R tomcat /opt/tomcat $ sudo chmod -R g+r conf $ sudo chmod g+x conf $ sudo chown -R tomcat logs $ sudo update-java-alternatives -l $ sudo nano /etc/systemd/system/tomcat.service [Unit] Description=Apache Tomcat Web Application Container After=network.target [Service] Type=forking Environment=JAVA_HOME=paste the copied path 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 Exe cStop=/opt/tomcat/bin/shutdown.sh User=tomcat Group=tomcat UMask=0007 RestartSec=10 Restart=always [Install] WantedBy=multi-user.target $ sudo systemctl daemon-reload $ sudo systemctl start tomcat $ sudo systemctl status tomcat $ sudo ufw allow 8080 $ sudo nano /opt/tomcat/conf/tomcat-users.xml $ sudo chown tomcat work $ sudo systemctl restart tomcat ``` Ahora ingresá a localhost:8080/ ### En otro video usan ```bash sudo useradd -m -d /opt/tomcat -U -s /bin/false tomcat sudo apt update sudo apt install -y default-jdk cd /tmp Descargá en quick navigation la versión más nueva. wget apache-tomcat-10.1.13.tar.gz sudo tar xvf apache-tomcat-10.1.13.tar.gz -C /opt/tomcat --strip-components=1 sudo chown -R tomcat:tomcat /opt/tomcat sudo vi /opt/tomcat/conf/tomcat-users.xml ``` ##### Agregá en ese archivo arriba de la etiqueta final ```html ``` Ahora abrí ```bash sudo su vi /opt/tomcat/webapps/manager/META-INF/context.xml y comentá como habíamos dicho antes sudo update-java-alternatives -l ``` ### Another one https://m.youtube.com/watch?v=aL8_tFNnQ_A ```bash apt install default-jdk mkdir /opt/tomcat groupadd tomcat useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat wget http://apachemirror.wu... tar xzvf apache-tomcat-*tar.gz -C /opt/tomcat cd /opt/tomcat chgrp -R tomcat /opt/tomcat chmod -R g+r conf chmod g+x conf chown -R tomcat webapps/ work/ temp/ logs/ update-java-alternatives -l 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 systemctl daemon-reload systemctl start tomcat nano /opt/tomcat/conf/tomcat-users.xml tomcat-users . . . user username="admin" password="password" roles="manager-gui,admin-gui"/ /tomcat-users nano /opt/tomcat/webapps/manager/META-INF/context.xml nano /opt/tomcat/webapps/host-manager/META-INF/context.xml systemctl restart tomcat ``` ### AWS EC2 https://github.com/jaswanthnasa/Jaswanth-DevOps-Documentations/blob/master/tomcat.md https://github.com/jaswanthnasa/Jaswanth-DevOps-Documentations/blob/master/jenkins.txt https://www.youtube.com/watch?v=CptBO6wAiEQ