Búsqueda de sitios web

Cómo ejecutar varias aplicaciones web en un servidor Apache Tomcat


Apache Tomcat es un contenedor web de código abierto que le permite implementar Java Servlets, JSP y Web Sockets para ejecutar un servidor web impulsado por código Java. También se puede identificar como un contenedor de servlets multiplataforma o un contenedor web.

Simplemente, Tomcat es muy popular entre muchos actores industriales debido a sus muchas ventajas sobre otros contenedores web en el mercado. Puede crear archivos web a partir de su proyecto Java y simplemente implementarlos dentro de un contenedor Tomcat para alojar un servidor web HTTP codificado por Java. Las industrias eligen Apache Tomcat sobre otros contenedores debido a las siguientes ventajas.

  1. Peso ligero.
  2. Ampliamente utilizado.
  3. Mucho más rápido que otros contenedores.
  4. Fácil de configurar.
  5. Muy flexible.

Por lo general, Apache Tomcat es un producto fácil de usar que brinda a los ingenieros espacio para implementar sus artefactos WAR (archivos web) con cambios mínimos de configuración.

Esta publicación está dirigida a una audiencia que ya usa Tomcat y sabe cómo iniciar y usar el motor Apache Tomcat.

En Apache Tomcat, los WAR deben colocarse en el directorio webapps donde el contenedor los implementa de forma predeterminada. Simplemente, el directorio webapps actúa como el contenedor principal del código Java para que Tomcat lo implemente como servidor web.

En un escenario en el que necesitamos alojar más de un servidor web desde un único contenedor Tomcat, puede utilizar esta publicación como guía para lograrlo. En este artículo, le mostraré cómo implementar múltiples aplicaciones web o dos servidores web dentro de un Tomcat.

Requisitos previos: Java debe estar instalado en el servidor. Preferiblemente 1.7.x o superior. En este tutorial tengo instalado Java 1.7 ya que uso la versión 8.0.37 de Tomcat.

Puede instalar Java usando su administrador de paquetes como yum o apt como se muestra:

yum install java              [On CentOS based Systems]
apt-get install default-jre   [On Debian based Systems]

Paso 1: Instale el servidor Apache Tomcat

1. Primero cree un usuario tomcat independiente utilizando una cuenta root.

useradd tomcat
passwd tomcat

Ahora inicie sesión como usuario de tomcat y descargue el último paquete de Apache Tomcat desde el sitio oficial aquí: https://tomcat.apache.org/ o, alternativamente, puede usar el siguiente comando wget para descargarlo directamente en la terminal. .

En este caso, descargué Apache Tomcat, 8.5.5, que es una de las últimas versiones estables lanzadas hasta el momento.

wget http://redrockdigimark.com/apachemirror/tomcat/tomcat-8/v8.5.5/bin/apache-tomcat-8.5.5.tar.gz

2. Una vez descargado el archivo, descomprima el contenido usando el comando tar y vea la estructura del directorio como se muestra:

tar -xvf apache-tomcat-8.5.5.tar.gz
cd apache-tomcat-8.5.5/
ls -l
total 112
drwxr-x---. 2 tomcat tomcat  4096 Sep 29 11:26 bin
drwx------. 2 tomcat tomcat  4096 Sep  1 01:23 conf
drwxr-x---. 2 tomcat tomcat  4096 Sep 29 11:26 lib
-rw-r-----. 1 tomcat tomcat 57092 Sep  1 01:23 LICENSE
drwxr-x---. 2 tomcat tomcat  4096 Sep  1 01:21 logs
-rw-r-----. 1 tomcat tomcat  1723 Sep  1 01:23 NOTICE
-rw-r-----. 1 tomcat tomcat  7063 Sep  1 01:23 RELEASE-NOTES
-rw-r-----. 1 tomcat tomcat 15946 Sep  1 01:23 RUNNING.txt
drwxr-x---. 2 tomcat tomcat  4096 Sep 29 11:26 temp
drwxr-x---. 7 tomcat tomcat  4096 Sep  1 01:22 webapps
drwxr-x---. 2 tomcat tomcat  4096 Sep  1 01:21 work

Paso 2: configurar el servidor Apache Tomcat

3. El cambio de configuración que estamos buscando se encuentra dentro del directorio conf y se utiliza para colocar todos los archivos de configuración que ayudan a Tomcat a iniciarse.

El contenido del directorio conf se parece a continuación.

cd conf/
ls -l
total 224
-rw-------. 1 tomcat tomcat  12502 Sep  1 01:23 catalina.policy
-rw-------. 1 tomcat tomcat   7203 Sep  1 01:23 catalina.properties
-rw-------. 1 tomcat tomcat   1338 Sep  1 01:23 context.xml
-rw-------. 1 tomcat tomcat   1149 Sep  1 01:23 jaspic-providers.xml
-rw-------. 1 tomcat tomcat   2358 Sep  1 01:23 jaspic-providers.xsd
-rw-------. 1 tomcat tomcat   3622 Sep  1 01:23 logging.properties
-rw-------. 1 tomcat tomcat   7283 Sep  1 01:23 server.xml
-rw-------. 1 tomcat tomcat   2164 Sep  1 01:23 tomcat-users.xml
-rw-------. 1 tomcat tomcat   2633 Sep  1 01:23 tomcat-users.xsd
-rw-------. 1 tomcat tomcat 168133 Sep  1 01:23 web.xml

4. En este caso, lo que es importante para mí es el archivo server.xml. Así que no voy a hacer una explicación en profundidad sobre otros archivos o directorios.

El server.xml es el archivo de configuración que le indica a tomcat qué puerto iniciar, qué contenido del directorio implementar y muchas más configuraciones principales y básicas.

Básicamente se ve como se muestra a continuación después de abrir el archivo.

vim server.xml

Paso 3: Implementación de aplicaciones web en Apache Tomcat

5. Ahora implementaremos una nueva aplicación web en Apache Tomcat, primero busque el lugar donde está cerrada la etiqueta de servicio e inserte las líneas siguientes después de la primera etiqueta cerrada. Etiqueta de servicio.

<Service name="webapps2">
    <Connector port="7070" maxHttpHeaderSize="7192"
        maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
        enableLookups="false" redirectPort="7443" acceptCount="100"
        connectionTimeout="20000" disableUploadTimeout="true" />
        <Connector port="7072" 
        enableLookups="false" redirectPort="7043" protocol="AJP/1.3" />

    <Engine name="webapps2" defaultHost="localhost">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
            resourceName="UserDatabase"/>
            <Host name="localhost" appBase="webapps2"
                unpackWARs="true" autoDeploy="true"
                 xmlValidation="false" xmlNamespaceAware="false">
            </Host>
    </Engine>
</Service>

Como puede ver, cambié el puerto del conector a 7070 en la entrada recién insertada ya que el Tomcat predeterminado comienza con el puerto 8080. Después de configurar esto completamente, habrá dos servidores web ejecutándose en los puertos 8080 y 7070.

6. Después de guardar el cambio realizado en server.xml, cree un directorio en Apache llamado webapps2 dentro del archivo principal de Apache.

cd /home/tomcat/apache-tomcat-8.5.5/
mkdir webapps2

Si observa la nueva entrada server.xml que proporcioné, debería ver que el nombre del servicio, la base de la aplicación y el motor se denominan webapps2. Esa es la razón por la que creé el directorio llamado webapps2. Puede crear uno como desee, pero asegúrese de realizar los cambios necesarios en la entrada.

7. Para asegurarme de que el segundo servidor web esté funcionando, copié el contenido del directorio webapps al directorio webapps2.

cp -r webapps/* webapps2/

8. Ahora la parte emocionante. Vamos a iniciar el servidor y ver si está funcionando. Vaya al directorio bin y ejecute el script startup.sh. Puede ver los registros en el archivo catalina.out que reside en el directorio de registros.

cd bin/
./startup.sh
Using CATALINA_BASE:   /home/tomcat/apache-tomcat-8.5.5
Using CATALINA_HOME:   /home/tomcat/apache-tomcat-8.5.5
Using CATALINA_TMPDIR: /home/tomcat/apache-tomcat-8.5.5/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /home/tomcat/apache-tomcat-8.5.5/bin/bootstrap.jar:/home/tomcat/apache-tomcat-8.5.5/bin/tomcat-juli.jar
Tomcat started.

9. Si consulta los registros, podrá ver que tanto webapps como webapps2 están implementados y que la aplicación se inicia sin ningún problema. .

cd logs/
tail -25f catalina.out 
29-Sep-2016 12:13:51.210 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps/examples
29-Sep-2016 12:13:51.661 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps/examples has finished in 452 ms
29-Sep-2016 12:13:51.664 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps/docs
29-Sep-2016 12:13:51.703 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps/docs has finished in 39 ms
29-Sep-2016 12:13:51.704 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps/host-manager
29-Sep-2016 12:13:51.744 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps/host-manager has finished in 39 ms
29-Sep-2016 12:13:51.748 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler [http-nio-8080]
29-Sep-2016 12:13:51.767 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler [ajp-nio-8009]
29-Sep-2016 12:13:51.768 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service webapps2
29-Sep-2016 12:13:51.768 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/8.5.5
29-Sep-2016 12:13:51.777 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/manager
29-Sep-2016 12:13:51.879 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/manager has finished in 102 ms
29-Sep-2016 12:13:51.879 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/ROOT
29-Sep-2016 12:13:51.915 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/ROOT has finished in 35 ms
29-Sep-2016 12:13:51.927 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/examples
29-Sep-2016 12:13:52.323 INFO [localhost-startStop-1] org.apache.catalina.core.ApplicationContext.log ContextListener: contextInitialized()
29-Sep-2016 12:13:52.337 INFO [localhost-startStop-1] org.apache.catalina.core.ApplicationContext.log SessionListener: contextInitialized()
29-Sep-2016 12:13:52.341 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/examples has finished in 414 ms
29-Sep-2016 12:13:52.341 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/docs
29-Sep-2016 12:13:52.371 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/docs has finished in 29 ms
29-Sep-2016 12:13:52.371 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/host-manager
29-Sep-2016 12:13:52.417 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/host-manager has finished in 46 ms
...

10. En este escenario, la IP del servidor que utilicé es 172.16.1.39 y puede ver que podría iniciar dos servidores web dentro de un único contenedor Tomcat.

http://172.16.1.39:8080   [1st Web App]
http://172.16.1.39:7070   [2nd Web App]

Espero que todos encuentren este artículo útil y agradable. Manténgase en contacto con TecMint y no dude en comunicarse conmigo si tiene alguna consulta relacionada con este artículo.