Cómo ejecutar múltiples aplicaciones web en un servidor Apache Tomcat


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

Simplemente, Tomcat es muy popular entre muchas partes interesadas de la industria debido a muchas ventajas sobre otros contenedores web en el mercado. Puede crear archivos web desde su proyecto Java y simplemente implementarlo 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. Light weight.
  2. Widely Used.
  3. Much faster than other containers.
  4. Easy to configure.
  5. Very flexible.

Por lo general, apache tomcat es un producto fácil de usar que les da 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 está utilizando Tomcat y sabe cómo iniciar y utilizar el motor Apache Tomcat.

En apache tomcat, WAR se debe colocar en el directorio webapps en el que 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 un servidor web.

En una situación en la que necesitamos alojar más de un servidor web desde un solo contenedor Tomcat, puede usar esta publicación como una guía para lograrlo. Le mostraré cómo implementar varias aplicaciones web o dos servidores web dentro de un tomcat de este artículo.

rojo

Puede instalar Java utilizando 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: Instalar el servidor de Apache Tomcat

1. Primero cree un usuario tomcat separado usando la cuenta root .

# useradd tomcat
# passwd tomcat

Ahora ingrese como usuario 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 descargar directamente en el terminal .

En este caso, descargo Apache Tomcat, 8.5.5 , que es una de las últimas versiones estables lanzadas hasta ahora.

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

2. Una vez que se haya descargado el archivo, descomprima el contenido con 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

Apache Tomcat - Listado de directorios

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 buscamos se encuentra en el directorio conf y se está utilizando para colocar todos los archivos de configuración que ayudan a Tomcat a iniciarse.

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

$ cd conf/
$ ls -l

conf - Directory Listing

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 . Por lo tanto, no voy a hacer una explicación detallada sobre otros archivos o directorios.

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

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

$ vim server.xml

Paso 3: Implementar aplicaciones web en Apache Tomcat

5. Ahora desplegaremos una nueva aplicación web en Apache tomcat, primero encontraremos el lugar donde está cerrada la etiqueta de servicio & lt;/service & gt; e insertaremos las siguientes líneas después de la primera Etiqueta de servicio cerrado.

Server.xml - Nueva entrada de aplicación web

<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 ve, he cambiado el puerto del conector a 7070 en la entrada recién insertada desde que el Tomcat predeterminado comienza con el puerto 8080 Después de configurar esto completamente, habrá dos servidores web ejecutándose bajo los puertos 8080 y 7070 .

6. Después de guardar el cambio realizado en server.xml , cree un directorio en el apache llamado webapps2 dentro de la página principal de apache.

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

Si observa la nueva entrada de server.xml que he proporcionado, debería ver que el nombre del servicio, la base de aplicaciones 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 cambios en la entrada cuando sea necesario.

7. Para asegurarse de que el segundo servidor web esté en funcionamiento, copié el contenido del directorio webapps en el 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 se encuentra en el directorio de registros.

$ cd bin/
$ ./startup.sh

startup.sh - Output

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 webapps y webapps2 se implementan y la aplicación se inicia sin problemas .

$ cd logs/
$ tail -25f catalina.out 

catalina.out - Verificación de los registros de Apache Tomcat

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 puedo iniciar dos servidores web dentro de un solo 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 contactarme para cualquier consulta relacionada con este artículo.