Comment déployer un fichier WAR sur Tomcat

Comment déployer un fichier WAR sur Tomcat

1. Vue d'ensemble

Apache Tomcat est l'un des serveurs Web les plus populaires de la communauté Java. Il est livré en tant queservlet container capable de servir des archives Web avec l'extension WAR.

It provides a management dashboard à partir de laquelle vous pouvez déployer une nouvelle application Web ou annuler le déploiement d'une application existante sans avoir à redémarrer le conteneur. Ceci est particulièrement utile dans les environnements de production.

Dans cet article, nous allons faire un bref aperçu de Tomcat, puis nous aborderons diverses approches du déploiement d’un fichier WAR.

Lectures complémentaires:

Introduction à Apache Tomcat

Un guide court et pratique sur l'installation et la configuration d'Apache Tomcat.

Read more

Déployer un WAR de démarrage du printemps sur un serveur Tomcat

Apprenez à configurer une application Spring Boot pour qu'elle soit déployée sur un serveur Tomcat.

Read more

Changer le port HTTP de Tomcat en 80

Découvrez comment configurer un serveur HTTP Apache Tomcat pour qu'il s'exécute sur le port 80.

Read more

2. Structure de Tomcat

Avant de commencer, nous devrions nous familiariser avec certaines variables de terminologie et d’environnement.

2.1. Variables d'environnement

Si vous avez déjà travaillé avec Tomcat auparavant, ces informations vous seront très familières:

$CATALINA_HOME

Cette variable pointe vers le répertoire où notre serveur est installé.

$CATALINA_BASE

Cette variable pointe vers le répertoire d'une instance particulière de Tomcat. Plusieurs instances peuvent être installées. Si cette variable n'est pas définie explicitement, la même valeur lui sera attribuée que$CATALINA_HOME.

Les applications Web sont déployées sous le répertoire$CATALINA_HOME\webapps.

2.2. Terminologie

Document root. Fait référence au répertoire de niveau supérieur d'une application Web, où toutes les ressources de l'application se trouvent comme des fichiers JSP, des pages HTML, des classes Java et des images.

Context path. Désigne l’emplacement relatif à l’adresse du serveur et représentant le nom de l’application Web.

Par exemple, si notre application Web est placée sous le répertoire$CATALINA_HOME\webapps\myapp, elle sera accessible par l'URLhttp://localhost/myapp, et son chemin de contexte sera/myapp.

WAR. Extension d'un fichier contenant une hiérarchie de répertoires d'applications Web au format ZIP. Il s'agit de l'abréviation de Web Archive. Les applications Web Java sont généralement regroupées sous forme de fichiers WAR pour le déploiement. Ces fichiers peuvent être créés sur la ligne de commande ou avec un IDE tel qu'Eclipse.

Après avoir déployé notre fichier WAR, Tomcat le décompresse et stocke tous les fichiers de projet dans le répertoirewebapps dans un nouveau répertoire nommé d'après le projet.

3. Configuration de Tomcat

Le serveur Web Tomcat Apache est un logiciel gratuit qui peut êtredownloaded from their website. Il est nécessaire qu’un JDK soit disponible sur la machine de l’utilisateur et que la variable d’environnementJAVA_HOME soit correctement définie.

3.1. Démarrer Tomcat

Nous pouvons démarrer le serveur Tomcat en exécutant simplement le scriptstartup situé à$CATALINA_HOMEin\startup. Il y a un.bat et un.sh dans chaque installation.

Choisissez l'option appropriée selon que vous utilisez un système d'exploitation Windows ou Unix.

3.2. Configurer les rôles

Pendant la phase de déploiement, nous aurons quelques options, dont l’une consiste à utiliser le tableau de bord de gestion de Tomcat. Pour accéder à ce tableau de bord, vous devez avoir un utilisateur administrateur configuré avec les rôles appropriés.

Pour avoir accès au tableau de bord, l'utilisateur admin a besoin du rôlemanager-gui. Plus tard, nous devrons déployer un fichier WAR en utilisant Maven, pour cela, nous avons également besoin du rôlemanager-script.

Apportons ces modifications dans$CATALINA_HOME\conf omcat-users:



Vous trouverez plus de détails sur les différents rôles Tomcat en suivantthis official link.

3.3. Définir les autorisations de répertoire

Enfin, assurez-vous qu'il existe une autorisation de lecture / écriture sur le répertoire d'installation de Tomcat.

3.4. Installation de test

Pour tester que Tomcat est correctement configuré, exécutez le script de démarrage (startup.bat /startup.sh), si aucune erreur n'est affichée sur la console, nous pouvons vérifier en visitanthttp://localhost:8080.

Si vous voyez la page de destination de Tomcat, le serveur est correctement installé.

3.5. Résoudre les conflits de ports

Par défaut, Tomcat est configuré pour écouter les connexions sur le port8080. Si une autre application est déjà liée à ce port, la console de démarrage nous le fera savoir.

Pour changer de port, nous pouvons éditer le fichier de configuration du serveurserver.xml situé à$CATALINA_HOME\conf\server.xml. Par défaut, la configuration du connecteur est la suivante:

Par exemple, si nous voulons changer notre port en8081, alors nous devrons changer l'attribut de port du connecteur comme ceci:

Parfois, le port que nous avons choisi n’est pas ouvert par défaut. Dans ce cas, nous devrons ouvrir ce port avec les commandes appropriées dans le noyau Unix ou créer les règles de pare-feu appropriées dans Windows. Cet article.

4. Déployer depuis Maven

Si nous voulons utiliser Maven pour déployer nos archives Web, nous devons configurer Tomcat en tant que serveur dans le fichiersettings.xmlde Maven.

Il existe deux emplacements où le fichiersettings.xml peut être trouvé:

  • L'installation de Maven:$\{maven.home}/conf/settings.xml

  • Installation d'un utilisateur:$\{user.home}/.m2/settings.xml

Une fois que vous l'avez trouvé, ajoutez Tomcat comme suit:


    TomcatServer
    admin
    password

Nous allons maintenant devoir créer une application Web de base à partir de Maven pour tester le déploiement. Navigons vers l'endroit où nous souhaitons créer l'application.

Exécutez cette commande sur la console pour créer une nouvelle application Web Java:

mvn archetype:generate -DgroupId=com.example -DartifactId=tomcat-war-deployment
  -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false

Cela créera une application Web complète dans le répertoiretomcat-war-deployment qui, si nous déployons maintenant et accédons via le navigateur, imprimehello world!.

Mais avant cela, nous devons apporter un changement pour permettre le déploiement de Maven. Rendez-vous donc sur lespom.xml et ajoutez ce plugin:


    org.apache.tomcat.maven
    tomcat7-maven-plugin
    2.2
    
        http://localhost:8080/manager/text
        TomcatServer
        /myapp
    

Notez que nous utilisons le plug-in Tomcat 7 car il fonctionne pour les versions 7 et 8 sans aucune modification particulière.

La configurationurl est l'url à laquelle nous envoyons notre déploiement, Tomcat saura quoi en faire. L'élémentserver est le nom de l'instance de serveur que Maven reconnaît. Enfin, l'élémentpath définit lescontext path de notre déploiement.

Cela signifie que si notre déploiement réussit, nous accèderons à l'application Web en appuyant surhttp://localhost:8080/myapp.

Nous pouvons maintenant exécuter les commandes suivantes à partir de Maven.

Pour déployer l'application Web:

mvn tomcat7:deploy

Pour annuler le déploiement:

mvn tomcat7:undeploy

Pour redéployer après avoir apporté des modifications:

mvn tomcat7:redeploy

5. Déployer avec le plug-in Cargo

Cargo est une bibliothèque polyvalente qui nous permet de manipuler les différents types de conteneurs d'application de manière standard.

5.1. Configuration du déploiement du fret

Dans cette section, nous verrons comment utiliser le plugin Maven de Cargo pour déployer un WAR sur Tomcat, dans ce cas, nous le déploierons sur une instance de la version 7.

Pour bien maîtriser l’ensemble du processus, nous allons commencer par créer une nouvelle application Web Java à partir de la ligne de commande:

mvn archetype:generate -DgroupId=com.example -DartifactId=cargo-deploy
  -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false

Cela créera une application Web Java complète dans le répertoirecargo-deploy. Si nous construisons, déployons et chargeons cette application telle quelle, elle imprimeraHello World! dans le navigateur.

Contrairement au plug-in Tomcat7 Maven, le plug-in Cargo Maven requiert la présence de ce fichier.

Puisque notre application Web ne contient pas de servlets, notre fichierweb.xml sera très basique. Naviguez donc vers le dossierWEB-INF de notre projet nouvellement créé et créez un fichierweb.xml avec le contenu suivant:




    cargo-deploy
    
        index.jsp
    

Pour permettre à Maven de reconnaître les commandes de Cargo sans saisir le nom complet, nous devons ajouter le plugin Cargo Maven à un groupe de plugins dans lessettings.xml. de Maven

En tant qu'enfant immédiat de l'élément racine<settings></settings>, ajoutez ceci:


    org.codehaus.cargo

5.2. Déploiement local

Dans cette sous-section, nous modifierons nospom.xml en fonction de nos nouvelles exigences de déploiement.

Ajoutez le plugin comme suit:


    
        
            org.codehaus.cargo
            cargo-maven2-plugin
            1.5.0
            
                
                    tomcat7x
                    installed
                    Insert absolute path to tomcat 7 installation
                
                
                    existing
                    Insert absolute path to tomcat 7 installation
                
            
       
    

La dernière version, au moment de l'écriture, est1.5.0. Cependant, la dernière version peut toujours être trouvéehere.

Notez que nous définissons explicitement l'emballage en tant que fichier WAR. Sans cela, notre génération échouera. Dans la section plugins, nous ajoutons ensuite le plugin cargo maven2. De plus,we add a configuration section where we tell Maven that we are using a Tomcat container and also an existing installation.

En définissant le type de conteneur surinstalled, nous indiquons à Maven que nous avons une instance installée sur la machine et nous fournissons l'URL absolue de cette installation.

En définissant le type de configuration surexisting, nous indiquons à Tomcat que nous avons une configuration existante que nous utilisons et qu'aucune configuration supplémentaire n'est requise.

L’autre solution consisterait à indiquer à cargo de télécharger et d’installer la version spécifiée en fournissant une URL. Cependant, nous nous concentrons sur le déploiement de WAR.

Il convient de noter que, que nous utilisions Maven 2.x ou Maven 3.x, le plugin cargo maven2 fonctionne pour les deux.

Nous pouvons maintenant installer notre application en exécutant:

mvn install

et le déployer en faisant:

mvn cargo:deploy

Si tout se passe bien, nous devrions pouvoir exécuter notre application Web en chargeanthttp://localhost:8080/cargo-deploy.

5.3. Déploiement à distance

Pour effectuer un déploiement à distance, il suffit de modifier la section de configuration de nospom.xml. Le déploiement à distance signifie que nous n'avons pas d'installation locale de Tomcat, mais que nous avons accès au tableau de bord du gestionnaire sur un serveur distant.

Modifions donc lespom.xml pour que la section de configuration ressemble à ceci:


    
        tomcat8x
        remote
    
    
        runtime
        
            admin
            admin
            http://localhost:8080/manager/text
              
        
    

Cette fois, nous changeons le type de conteneur deinstalled àremote et le type de configuration deexisting àruntime. Enfin, nous ajoutons des propriétés d'authentification et d'URL distantes à la configuration.

Assurez-vous que les rôles et les utilisateurs sont déjà présents dans$CATALINA_HOME/conf/tomcat-users.xml comme auparavant.

Si vous modifiez le même projet pour le déploiement deremote, commencez par annuler le déploiement du WAR existant:

mvn cargo:undeploy

nettoyer le projet:

mvn clean

Installez-le:

mvn install

enfin, déployez-le:

mvn cargo:deploy

C'est ça.

6. Déployer depuis Eclipse

Eclipse nous permet d’incorporer des serveurs afin d’ajouter le déploiement de projets Web dans le flux de travail normal sans quitter l’EDI.

6.1. Incorporer Tomcat dans Eclipse

Nous pouvons intégrer une installation dans eclipse en sélectionnant l'élément de menuwindow dans la barre des tâches, puispreferences dans la liste déroulante.

Nous trouverons une grille d'arborescence d'éléments de préférence dans le panneau de gauche de la fenêtre qui apparaît. Nous pouvons ensuite naviguer verseclipse → servers ou simplement taperservers dans la barre de recherche.

Nous sélectionnons ensuite le répertoire d'installation, s'il n'est pas déjà ouvert pour nous, et choisissons la version de Tomcat que nous avons téléchargée.

Sur le côté droit du panneau, une page de configuration apparaît dans laquelle nous sélectionnons l'option Activer pour activer cette version du serveur et accéder au dossier d'installation.

image

Nous appliquons les modifications, et la prochaine fois que nous ouvrirons la vue des serveurs à partir du sous-menuwindows → show view d'Eclipse, le serveur nouvellement configuré sera présent et nous pourrons y démarrer, arrêter et déployer des applications.

6.2. Déployer une application Web dans Tomcat intégré

Pour déployer une application Web sur Tomcat, elle doit exister dans notre espace de travail.

Ouvrez la vueservers dewindow → show view et recherchez les serveurs. Lorsqu'il est ouvert, nous pouvons simplement faire un clic droit sur le serveur que nous avons configuré et sélectionneradd deployment dans le menu contextuel qui apparaît.

 

image

Dans la boîte de dialogueNew Deployment qui apparaît, ouvrez le menu déroulantproject et sélectionnez le projet Web.

Il y a une sectionDeploy Type sous la liste déroulanteProject lorsque nous sélectionnonsExploded Archive(development mode),our changes in the application will be synced live without having to redeploy, c'est la meilleure option pendant le développement car elle est très efficace.

image

 

La sélection dePackaged Archive(production mode) nous obligera à redéployer chaque fois que nous apportons des modifications et les visualisons dans le navigateur. Ceci n’est préférable que pour la production, mais Eclipse le rend tout aussi facile.

6.3. Déployer une application Web dans un emplacement externe

Nous choisissons généralement de déployer un fichier WAR via Eclipse pour faciliter le débogage. Il peut arriver un moment où nous souhaitons le déployer vers un emplacement autre que ceux utilisés par les serveurs embarqués d’Eclipse. L'instance la plus courante est celle où notre serveur de production est en ligne et nous souhaitons mettre à jour l'application Web.

Nous pouvons contourner cette procédure en déployant en mode production et en notant lesDeploy Location dans la boîte de dialogueNew Deployment et en choisissant le WAR à partir de là.

Lors du déploiement, au lieu de sélectionner un serveur intégré, nous pouvons sélectionner l'option<Externally Launched> dans la vueservers à côté de la liste des serveurs embarqués. Nous naviguons vers le répertoirewebapps d'une installation Tomcat externe.

7. Déployer à partir d'IntelliJ IDEA

Pour déployer une application Web sur Tomcat, elle doit exister et avoir déjà été téléchargée et installée.

7.1. Configuration locale

Ouvrez le menuRun et cliquez sur les optionsEdit Configurations.

 

image

Dans le panneau de gauche, recherchezTomcat Server, s'il ne s'y trouve pas, cliquez sur le signe + dans le menu, recherchezTomcat et sélectionnezLocal. Dans le champ de nom, mettezTomcat 7/8 (selon votre version).

image

 

Cliquez sur le boutonConfigure… et dans le champTomcat Home, accédez à l'emplacement d'origine de votre installation et sélectionnez-le.

 

image

Si vous le souhaitez, définissez la pageStartup surhttp://localhost:8080/ etHTTP port: 8080, modifiez le port le cas échéant.

Allez dans l'ongletDeployment et cliquez sur le symbole +, sélectionnez l'artefact que vous souhaitez ajouter au serveur et cliquez sur OK

 

image

 

7.2. Configuration à distance

Suivez les mêmes instructions que pour les configurations Tomcat locales, mais dans l'onglet Serveur, vous devez entrer l'emplacement distant de l'installation.

8. Déployer en copiant l'archive

Nous avons vu comment exporter un fichier WAR d’Eclipse. Une des choses que nous pouvons faire est de le déployer en le déposant simplement dans le répertoire$CATALINA_HOME\webapps de n'importe quelle instance Tomcat. Si l'instance est en cours d'exécution, le déploiement démarre instantanément lorsque Tomcat décompresse l'archive et configure son chemin de contexte.

Si l'instance n'est pas en cours d'exécution, le serveur déploiera le projet lors de son prochain démarrage.

9. Déployer depuis Tomcat Manager

En supposant que nous ayons déjà notre fichier WAR sous la main et que nous souhaitons le déployer à l'aide du tableau de bord de gestion. Vous pouvez accéder au tableau de bord du gestionnaire en visitant:http://localhost:8080/manager.

Le tableau de bord comporte cinq sections différentes:Manager,Applications,Deploy,Diagnostics etServer Information. Si vous accédez à la sectionDeploy, vous trouvera deux sous-sections.

9.1. Déployer le répertoire ou le fichier WAR situé sur le serveur

Si le fichier WAR est situé sur le serveur sur lequel l'instance Tomcat est en cours d'exécution, nous pouvons remplir le champContext Path requis précédé d'une barre oblique «/».

Supposons que nous souhaitons que notre application Web soit accessible à partir du navigateur avec l'URLhttp://localhost:8080/myapp, alors notre champ de chemin de contexte aura/myapp.

Nous sautons le champXML Configuration file URL et passons au champWAR or Directory URL. Ici, nous entrons l'URL absolue du fichier Web ARchive tel qu'il apparaît sur notre serveur. Supposons que l'emplacement de notre fichier soitC:/apps/myapp.war, puis nous saisissons cet emplacement. N'oubliez pas l'extension WAR.

Après cela, nous pouvons cliquer sur le boutondeploy. La page se rechargera et nous devrions voir le message:

OK - Deployed application at context path /myapp

en haut de la page.

De plus, notre application devrait également apparaître dans la sectionApplications de la page.

9.2. Fichier WAR à déployer

Cliquez simplement sur le boutonchoose file, accédez à l'emplacement du fichier WAR et sélectionnez-le, puis cliquez sur le boutondeploy.

Dans les deux cas, si tout se passe bien, la console Tomcat nous informera que le déploiement a abouti avec le message suivant:

INFO: Deployment of web application archive \path\to\deployed_war has finished in 4,833 ms

10. Conclusion

Dans cet article, nous nous sommes concentrés sur le déploiement d'un fichier WAR sur un serveur Tomcat.