Com executar diverses aplicacions web en un servidor Apache Tomcat


Apache Tomcat és un contenidor web de codi obert que us permet desplegar Servlets Java, JSP i Web Sockets per executar un servidor web alimentat amb codi Java. També es pot identificar com un contenidor de servlet multiplataforma o un contenidor web.

Simplement, Tomcat és molt popular entre molts actors industrials a causa dels molts avantatges sobre altres contenidors web del mercat. Podeu crear arxius web des del vostre projecte Java i simplement desplegar-los dins d'un contenidor Tomcat per allotjar un servidor web HTTP codificat per Java. Les indústries trien apache tomcat per sobre d'un altre contenidor a causa dels següents avantatges.

  1. Pes lleuger.
  2. Ampliament utilitzat.
  3. Molt més ràpid que altres contenidors.
  4. Fàcil de configurar.
  5. Molt flexible.

Normalment, apache tomcat és un producte fàcil d'utilitzar que ofereix als enginyers espai per desplegar els seus artefactes WAR (Arxius web) amb canvis de configuració mínims.

Aquesta publicació s'adreça a un públic que ja està utilitzant Tomcat i sap com iniciar i utilitzar el motor Apache Tomcat.

A l'apache tomcat, els WAR s'han de posar al directori webapps on el contenidor els desplega per defecte. Simplement, el directori webapps actua com a contenidor principal del codi Java perquè Tomcat el desplegui com a servidor web.

En un escenari en què necessitem allotjar més d'un servidor web des d'un únic contenidor Tomcat, podeu utilitzar aquesta publicació com a guia per aconseguir-ho. Des d'aquest article us mostraré com implementar diverses aplicacions web o dos servidors web dins d'un tomcat.

Requisits previs: s'ha d'instal·lar Java al servidor. Preferiblement 1.7.x o superior. En aquest tutorial tinc Java 1.7 instal·lat ja que faig servir la versió 8.0.37 de tomcat.

Podeu instal·lar Java utilitzant el vostre gestor de paquets com yum o apt com es mostra:

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

Pas 1: instal·leu el servidor Apache Tomcat

1. Primer creeu un usuari tomcat independent amb el compte root.

# useradd tomcat
# passwd tomcat

Ara inicieu sessió com a usuari de Tomcat i descarregueu l'últim paquet d'Apache Tomcat des del lloc oficial aquí: comanda wget per descarregar directament al terminal.

En aquest cas, em descarrego Apache Tomcat, 8.5.5, que és una de les darreres versions estables publicades fins ara.

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

2. Un cop descarregat el fitxer, descomprimiu el contingut mitjançant l'ordre tar i visualitzeu l'estructura del directori tal com es mostra:

$ 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

Pas 2: configureu el servidor Apache Tomcat

3. El canvi de configuració que estem buscant es troba dins del directori conf, s'utilitza per col·locar tots els fitxers de configuració que ajuden a l'inici de Tomcat.

El contingut del directori conf és el següent.

$ 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 aquest cas, el que és important per a mi és el fitxer server.xml. Així que no faré una explicació en profunditat sobre altres fitxers o directoris.

El servidor.xml és el fitxer de configuració que indica a Tomcat quin port l'iniciarà, quin contingut del directori s'ha de desplegar i moltes més configuracions principals i bàsiques.

Bàsicament es veu com a continuació després d'obrir el fitxer.

$ vim server.xml

Pas 3: desplegament d'aplicacions web a Apache Tomcat

5. Ara desplegarem una nova aplicació web a l'Apache Tomcat, primer trobareu el lloc on es tanca l'etiqueta de servei i inserirem les línies a continuació després de la primera etiqueta de servei tancada.

<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>

Com veieu, he canviat el port del connector a 7070 a l'entrada recent inserida, ja que el tomcat predeterminat comença amb el port 8080. Després de configurar-ho completament, hi haurà dos servidors web executant-se als ports 8080 i 7070.

6. Després de desar el canvi fet a server.xml, creeu un directori a l'apache anomenat webapps2 dins de l'apache main.

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

Si observeu la nova entrada server.xml que he proporcionat, hauríeu de veure que el nom del servei, la base de l'aplicació i el motor s'anomenen webapps2. Aquesta és la raó per la qual vaig crear el directori anomenat webapps2. Podeu crear-ne un com vulgueu, però assegureu-vos que feu canvis a l'entrada segons sigui necessari.

7. Per assegurar-me que el segon servidor web està en funcionament, he copiat el contingut del directori webapps al directori webapps2.

$ cp -r webapps/* webapps2/

8. Ara la part emocionant. Iniciem el servidor i veurem si funciona. Aneu al directori bin i executeu l'script startup.sh. Podeu veure els registres al fitxer catalina.out que resideix al directori de registres.

$ 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 consulteu els registres, podreu veure que tant les webapps com les webapps2 estan desplegades i l'aplicació s'inicia sense cap 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 aquest escenari, la IP del servidor que he utilitzat és 172.16.1.39 i podeu veure que podria iniciar dos servidors web dins d'un únic contenidor Tomcat.

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

Espero que tots trobeu aquest article útil i agradable. Mantingueu-vos en contacte amb TecMint i no dubteu a posar-vos en contacte amb mi per a qualsevol consulta sobre aquest article.