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 Web Sockets 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 nombreux avantages par rapport aux autres conteneurs web sur le 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 que d’autres conteneurs en raison des avantages suivants.
- Poids léger.
- Largement utilisé.
- Beaucoup plus rapide que les autres conteneurs.
- Facile à configurer.
- Très flexible.
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 qui sait comment démarrer et utiliser le moteur Apache tomcat.
Dans Apache Tomcat, les WARs doivent être placés dans le répertoire webapps où le conteneur les déploie par défaut. Simplement, le répertoire webapps agit comme le conteneur principal du code Java pour que tomcat puisse le déployer en tant que serveur web.
Dans un scénario où nous devons héberger plus d’un serveur 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 même tomcat à partir de cet article.
Prerequisites : Java doit être installé sur le serveur. De préférence 1.7.x ou supérieur. Dans ce tutoriel, j’ai installé Java 1.7 puisque j’utilise la version 8.0.37 de tomcat.
Vous pouvez installer Java à l’aide de votre gestionnaire de paquets, 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 Apache Tomcat Server
1. Créez d’abord un utilisateur tomcat distinct à l’aide du compte root.
# useradd tomcat
passwd tomcat
Connectez-vous maintenant en tant qu’utilisateur tomcat et téléchargez le dernier pack Apache Tomcat depuis le site officiel ici : https://tomcat.apache.org/ ou alternativement, vous pouvez 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 à ce jour.
$ 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, est utilisé pour placer tous les fichiers de configuration qui aident tomcat à démarrer.
Le contenu du répertoire conf ressemble à ce qui suit.
$ 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.
Il ressemble essentiellement à ce qui suit après avoir ouvert le fichier.
$ vim server.xml
Étape 3 : Déploiement d’applications Web dans Apache Tomcat
5. Nous allons maintenant déployer une nouvelle application Web dans Apache tomcat, trouver d’abord l’endroit où le numéro de série est fermé </service> et insérer les lignes ci-dessous après le premier numéro de série fermé.
<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 avec le port 8080. Après l’avoir complètement configuré, 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 l’Apache appelé webapps2 dans l’Apache Main.
$ 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 d’applications 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 comme vous le souhaitez, mais assurez-vous d’apporter des modifications à l’entrée si nécessaire.
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. Maintenant, la partie excitante. Nous allons démarrer le serveur et voir s’il fonctionne. Allez dans le répertoire bin et exécutez le script startup.sh. Vous pouvez afficher les journaux dans le fichier catalina.out qui se trouve dans le répertoire logs.
$ 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 vous référez aux journaux, vous pourrez voir que les applications web et les applications web2 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.

