Recherche de site Web

Comment exécuter plusieurs applications Web sur un seul serveur Apache Tomcat


Apache Tomcat est un conteneur Web open source qui vous permet de déployer des Servlets Java, JSP et des Sockets Web pour exécuter un serveur Web alimenté par du code Java. Il peut également être identifié comme un conteneur de servlet multiplateforme ou un conteneur Web.

Simplement, Tomcat est très populaire parmi de nombreux acteurs industriels en raison de ses nombreux avantages par rapport aux autres conteneurs Web du marché. Vous pouvez créer des archives Web à partir de votre projet Java et les déployer simplement dans un conteneur Tomcat pour héberger un serveur Web HTTP codé par Java. Les industries choisissent Apache Tomcat plutôt qu’un autre conteneur en raison des avantages suivants.

  1. Poids léger.
  2. Largement utilisé.
  3. Beaucoup plus rapide que les autres conteneurs.
  4. Facile à configurer.
  5. Très souple.

Habituellement, Apache Tomcat est un produit convivial qui donne aux ingénieurs l'espace nécessaire pour déployer leurs artefacts WAR (Web ARchives) avec un minimum de modifications de configuration.

Cet article s'adresse à un public qui utilise déjà Tomcat et sait comment démarrer et utiliser le moteur Apache Tomcat.

Dans Apache Tomcat, les WAR doivent être placés dans le répertoire webapps dans lequel le conteneur les déploie par défaut. Simplement, le répertoire webapps agit comme le conteneur principal du code Java permettant à Tomcat de le déployer en tant que serveur Web.

Dans un scénario dans lequel nous devons héberger plusieurs serveurs Web à partir d'un seul conteneur Tomcat, vous pouvez utiliser cet article comme guide pour y parvenir. Je vais vous montrer comment déployer plusieurs applications Web ou deux serveurs Web au sein d'un seul Tomcat à partir de cet article.

Prérequis : Java doit être installé sur le serveur. De préférence 1.7.x ou supérieur. Dans ce tutoriel, j'ai Java 1.7 installé puisque j'utilise la version 8.0.37 de Tomcat.

Vous pouvez installer Java à l'aide de votre gestionnaire de packages tel que yum ou apt comme indiqué :

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

Étape 1 : Installer le serveur Apache Tomcat

1. Créez d'abord un utilisateur tomcat distinct en utilisant le compte root.

useradd tomcat
passwd tomcat

Connectez-vous maintenant en tant qu'utilisateur tomcat et téléchargez le dernier bundle Apache Tomcat depuis le site officiel ici : https://tomcat.apache.org/ ou vous pouvez également utiliser la commande wget suivante pour télécharger directement dans le terminal. .

Dans ce cas, je télécharge Apache Tomcat, 8.5.5, qui est l'une des dernières versions stables publiées actuellement.

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

2. Une fois le fichier téléchargé, décompressez le contenu à l'aide de la commande tar et affichez la structure des répertoires comme indiqué :

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

Étape 2 : configurer le serveur Apache Tomcat

3. Le changement de configuration que nous recherchons se trouve dans le répertoire conf et est utilisé pour placer tous les fichiers de configuration qui aident Tomcat à démarrer.

Le contenu du répertoire conf ressemble à ci-dessous.

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. Dans ce cas, ce qui est important pour moi, c'est le fichier server.xml. Je ne vais donc pas faire une explication approfondie sur d’autres fichiers ou répertoires.

Le server.xml est le fichier de configuration qui indique à tomcat quel port démarrer, quel contenu de répertoire déployer et bien d'autres configurations principales et de base.

Cela ressemble essentiellement à ci-dessous après avoir ouvert le fichier.

vim server.xml

Étape 3 : Déployer des applications Web dans Apache Tomcat

5. Nous allons maintenant déployer une nouvelle application Web dans Apache Tomcat, trouver d'abord l'endroit où la balise de service est fermée et insérer les lignes ci-dessous après la première fermeture numéro de service.

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

Comme vous le voyez, j'ai changé le port du connecteur en 7070 dans l'entrée nouvellement insérée puisque le Tomcat par défaut commence par le port 8080. Une fois cette configuration complète, deux serveurs Web fonctionneront sous les ports 8080 et 7070.

6. Après avoir enregistré la modification apportée à server.xml, créez un répertoire dans Apache appelé webapps2 dans le fichier principal d'Apache.

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

Si vous observez la nouvelle entrée server.xml que j'ai fournie, vous devriez voir que le nom du service, la base de l'application et le moteur sont nommés webapps2. C'est la raison pour laquelle j'ai créé le répertoire nommé webapps2. Vous pouvez en créer un à votre guise, mais assurez-vous d'apporter les modifications nécessaires à l'entrée.

7. Pour m'assurer que le deuxième serveur Web est opérationnel, j'ai copié le contenu du répertoire webapps dans le répertoire webapps2.

cp -r webapps/* webapps2/

8. Passons maintenant à la partie passionnante. Nous allons démarrer le serveur et voir s'il fonctionne. Accédez au répertoire bin et exécutez le script startup.sh. Vous pouvez afficher les journaux dans le fichier catalina.out qui réside dans le répertoire des journaux.

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 vous consultez les journaux, vous pourrez voir que les webapps et les webapps2 sont déployées et que l'application est démarrée sans aucun problème. .

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. Dans ce scénario, l'adresse IP du serveur que j'ai utilisé est 172.16.1.39 et vous pouvez voir que je pourrais démarrer deux serveurs Web dans un seul conteneur Tomcat.

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

J'espère que vous trouverez tous cet article utile et agréable. Restez en contact avec TecMint et n'hésitez pas à me contacter pour toute question concernant cet article.