Vous êtes ici : Installer et exploiter → Installation → Serveur applicatif → Tomcat
Installation de Tomcat
Procédure d'installation du serveur Tomcat
Cette page décrit les étapes d'installation et de configuration de Tomcat, à installer sur le serveur applicatif.
Pré-requis
- Le dernier JDK 11 est installé (voir Installation de java)
Installation
NoteL'installation via les dépôts fournis par votre distribution est recommandée. Toutefois, si votre distribution n'intègre pas dans ses dépôts la dernière version de Tomcat requise, la procédure ci-dessous vous permet d'installer Tomcat manuellement.
- La procédure ci-dessous décrit une installation manuelle du serveur Tomcat. Vous pouvez modifier les répertoires d'installation si besoin. Il faudra dans ce cas reporter ces chemins dans les étapes suivantes d'installation (voir ci-après).
#Créer un groupe tomcat groupadd tomcat #Créer un user tomcat useradd -g tomcat -d /opt/tomcat -s /usr/sbin/nologin tomcat #Télécharger la dernière version de tomcat 9 cd /tmp export CURRENT_VERSION="$(wget -qO- https://downloads.apache.org/tomcat/tomcat-9/ | grep -o "href=\"v9\.[^/]*/" | grep -oP "9.[^/]*" | tail -1)" wget https://downloads.apache.org/tomcat/tomcat-9/v${CURRENT_VERSION}/bin/apache-tomcat-${CURRENT_VERSION}.tar.gz #Télécharger le md5 correspondant wget --no-check-certificate https://downloads.apache.org/tomcat/tomcat-9/v${CURRENT_VERSION}/bin/apache-tomcat-${CURRENT_VERSION}.tar.gz.sha512 #Calculer le sha512sum du targz téléchargé sha512sum apache-tomcat-${CURRENT_VERSION}.tar.gz #Le comparer à celui attendu: cat apache-tomcat-${CURRENT_VERSION}.tar.gz.sha512 #Installer le targz tar -zxvf apache-tomcat-${CURRENT_VERSION}.tar.gz mkdir /opt/tomcat/ mv apache-tomcat-${CURRENT_VERSION}/* /opt/tomcat/ #Déplacer le répertoire des logs dans /var/log mkdir /var/log/tomcat rmdir /opt/tomcat/logs ln -s /var/log/tomcat /opt/tomcat/logs #Positionner les droits chown -R tomcat:tomcat /var/log/tomcat/ chown -R tomcat:tomcat /opt/tomcat/ #Nettoyer les fichiers temporaires et la variable d'env rm -Rf /tmp/apache-tomcat-${CURRENT_VERSION} unset ${CURRENT_VERSION}
Configuration du contrôle des ressources
Le fonctionnement du logiciel nécessite l'utilisation de ressources, notamment des fichiers. La limite du nombre de fichiers ouverts par l'utilisateur tomcat doit être augmentée.
Si possible, passer la limite à "unlimited", sinon passer la limite à 1048576.
Pour cela, sur Debian 10, ajouter les lignes suivantes dans le fichier /etc/default/tomcat9 :
ulimit -Hn 1048576
ulimit -Sn 1048576
Dans les autres cas, éditer le fichier /etc/security/limits.conf :
...
#<domain> <type> <item> <value>
...
tomcat - nofile unlimited
...
Script de lancement
Avec systemd
Dans le répertoire, /etc/systemd/system, créer un fichier tomcat.service (vérifiez les chemins indiqués dans le fichier exemple, et modifiez-les si besoin, pour qu'ils correspondent à votre environnement).Le lancement s'effectue alors avec la commande
systemctl start|stop|restart|status|enable|disable tomcat
Avec un script de démarrage
Dans le dossier /etc/init.d, créer un fichier tomcat avec les droits d'exécution (vérifiez les chemins indiqués dans le fichier exemple, et modifiez-les si besoin, pour qu'ils correspondent à votre environnement).Le lancement s'effectue alors avec la commande
/etc/init.d/tomcat stop|start|restart|status|kill
Déclaration de l'application
Le fichier à éditer est /opt/tomcat/conf/server.xmlPar défaut, le connecteur HTTP est activé et écoute sur le port 8080.
Si vous souhaitez utiliser le connecteur AJP, suivez les étapes décrites dans cette page.
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener"/>
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on"/>
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener"/>
<Service name="Catalina">
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="60000" maxThreads="150" URIEncoding="UTF-8" redirectPort="8443"/>
<Engine name="Catalina" defaultHost="localhost">
<Host name="localhost" autoDeploy="false" unpackWARs="false" deployOnStartup="false">
<Context docBase="/web/ksup/webapp" path="" crossContext="true" allowLinking="false"/>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t '%r' %s %D %b"/>
</Host>
</Engine>
</Service>
</Server>
En fonction de votre environnement et des usages de votre application, il peut être nécessaire d'adapter les paramètres suivants :
- port : port d'écoute du connecteur HTTP de Tomcat, par défaut 8080. Cette valeur est utilisée dans la déclaration du proxypass apache.
- connectionTimeout : temps durant lequel une connexion acceptée par Tomcat peut être mise en attente (milliseconde)
- maxThreads : nombre maximum de "thread" Java que pourra exécuter Tomcat en même temps
En fonction de votre environnement il peut être nécessaire d'adapter le paramètre allowLinking :
- allowLinking : changer la valeur à "true" si vous utilisez des liens symboliques pour certains dossiers de l'application
Options de démarrage
Le fonctionnement et l'exploitation des sites gérés par ksup nécessitent l'ajout de différents paramètres dans la chaîne de démarrage de la JVM.Ces options peuvent être renseignées dans un fichier setenv.sh situé dans le répertoire d'installation du tomcat /opt/tomcat/bin.
chown tomcat: setenv.sh
- Créer un fichier setenv.sh
cd /opt/tomcat/bin vi setenv.sh
- Ajouter le contenu suivant:
#Positionnement du répertoire de configuration externe JAVA_OPTS="${JAVA_OPTS} -Dconf.dir=/web/ksup/storage/conf" #Gestion de la mémoire de la JVM JAVA_OPTS="${JAVA_OPTS} -Xms4G -Xmx4G" #Gestion du mode de libération de la mémoire JAVA_OPTS="${JAVA_OPTS} -XX:+UseG1GC" #Activation de la journalisation des libération mémoire JAVA_OPTS="${JAVA_OPTS} -Xlog:gc*:file=/web/ksup/storage/logs/$(hostname)_$(date +%s)-gc.log:time,uptime,tags" #Désactivation de la tentative de rattachement à un display JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true" #Configuration de la locale par défaut JAVA_OPTS="$JAVA_OPTS -Duser.language=fr -Duser.country=FR" #Configuration en IPV4 JAVA_OPTS="${JAVA_OPTS} -Djava.net.preferIPv4Stack=true"
- Positionner les droits
chown tomcat: setenv.sh
Configuration d'une session multi-domaine
Si les urls des sites virtuels sont construits suivant la même forme, par exemple, *.mon-site.fr, il est recommandé d'utiliser une configuration de cookie de session multi-domaine.Cette configuration présente l'avantage de n'utiliser qu'une seule session tomcat pour gérer l'authentification sur tout un ensemble de domaines, et réduit donc les ressources utilisées.
La mise en oeuvre de cette configuration s'appuie sur l'utilisation de 2 attributs de la balise <Context /> du fichier server.xml de tomcat.
L'attribut sessionCookieName permet de modifier le nom du cookie de session. Par défaut, cet attribut prend la valeur "JSESSIONID".
L'attribut sessionCookieDomain permet d'indiquer la portée du cookie de session. Par défaut, le cookie de session n'est valable que pour le domaine sur lequel il a été créé.
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
...
<Host name="localhost" autoDeploy="false" unpackWARs="false" deployOnStartup="false" sessionCookieName="JSESSIONID" sessionCookieDomain="mon-site.fr">
<Context docBase="/web/ksup/webapp" path="" crossContext="true" allowLinking="false"/>
<Valve className="org.apache...
...
</Server>
Avec cette configuration, il arrive que le cookie de session utilisé pour l'environnement de production interfère avec le cookie utilisé pour l'environnement de préproduction.C'est le cas lorsque le domaine de préproduction, par exemple "preprod.mon-site.fr" est lui-même un sous-domaine de la production, par exemple "mon-site.fr"
Pour configurer un environnement de préproduction pour lequel le domaine est un sous domaine de la production, il suffit de spécifier un nom de cookie de session différent :
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
...
<Host name="localhost" autoDeploy="false" unpackWARs="false" deployOnStartup="false" sessionCookieName="JSESSIONIDPP" sessionCookieDomain="preprod.mon-site.fr">
<Context docBase="/web/ksup/webapp" path="" crossContext="true" allowLinking="false"/>
<Valve className="org.apache...
...
</Server>
Configuration en mode cluster
L'application peut être configurée pour fonctionner en mode cluster.Merci de vous référer à la documentation détaillant la configuration de ce mode : Configuration du mode cluster
Mis à jour le 15 septembre 2023
Connectez-vous (avec vos identifiants Communauté) pour suggérer une correction ou un complément :