Optimiser Tomcat : installation de Apache Tomcat Native

Le message suivant vous intrigue peut-être à chaque démarrage de tomcat :

INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: …

Je vais vous présenter la procédure à suivre pour installer cette fameuse librairie native tomcat. Cette librairie permet d'améliorer les performances globales du serveur WEB (meilleure génération des identifiants de session, entrées/sorties fichier …).

La procédure suivante a été réalisée et testée sur une Debian Lenny munie d'un tomcat 6.0.16 et d'un jdk 1.6.0_16. Le serveur WEB démarre en utilisant jsvc lancé par un script /etc/init.d/tomcat récupérable sur le web.
Il est tout à fait possible que cette procédure ne fonctionne pas sur une version antérieure ou plus récente des logiciels (J'attends vos retours).

Pré requis :

  • Disposer d'un serveur sous Debian Lenny ou au moins avoir la commande magique aptitude (Debian, Ubuntu …),
  • Avoir les outils nécessaires pour compiler en C/C++ (aptitude install build-essential),
  • Avoir un jdk 6 installé et la variable d'environnement JAVA_HOME configurée. Je déconseille l'utilisation des packages inclus dans les distributions Linux qui s'incrustent au plus profond de la machine hôte. A télécharger sur http://java.sun.com.
  • Avoir un tomcat 6 installé et la variable d'environnement CATALINA_HOME configurée. Même remarque que pour le JDK, à télécharger sur le site http://tomcat.apache.org.

Résumé des commandes (Mode fainéant) :

Pour ceux qui n'aiment pas lire, voici un résumé des commandes à taper qui sont décrites dans la procédure suivante.

cd $CATALINA_HOME/bin
tar -xvzf tomcat-native.tar.gz
cd tomcat-native-1.1.16-src/jni/native
aptitude install libapr1-dev libssl-dev
./configure --with-apr=/usr/bin/apr-1-config \r
	--with-java-home=$JAVA_HOME \r
	--with-ssl=yes \r
	--prefix=$CATALINA_HOME
make && make install

et enfin ajouter dans /etc/init.d/tomcat :

LD_LIBRARY_PATH=$CATALINA_HOME/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH

Procédure (Mode verbeux) :

  • Se placer dans le répertoire binaire de tomcat :

cd $CATALINA_HOME/bin

  • Décompresser les sources de tomcat-native :

tar -xvzf tomcat-native.tar.gz

  • Se placer dans le répertoire de compilation :

cd tomcat-native-1.1.16-src/jni/native

  • Installer les librairies nécessaires à la compilation du module :

aptitude install libapr1-dev libssl-dev

  • Configurer puis compiler l'application :

"/usr/bin/apr-1-config" est le chemin par défaut du binaire APR. Ce chemin peut changer suivant les versions des librairies APR

./configure --with-apr=/usr/bin/apr-1-config \r
	--with-java-home=$JAVA_HOME \r
	--with-ssl=yes \r
	--prefix=$CATALINA_HOME
make && make install

les librairies ont été installées dans $CATALINA_HOME/lib.

Un petit texte nous décrit la dernière étape à effectuer :

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,--rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to `/etc/ld.so.conf'
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
  • J'ai opté pour le premier choix en positionnant les lignes suivantes dans /etc/init.d/tomcat :

LD_LIBRARY_PATH=$CATALINA_HOME/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH

Ces lignes peuvent être placées dans le catalina.sh ou le startup.sh de votre tomcat si vous ne possédez pas de lanceur dans /etc/init.d (grosse erreur!)

Résultat :

Il suffit maintenant de lancer Tomcat et d'afficher le fichier de logs catalina.out pour voir apparaître les lignes suivantes :

INFO: Loaded APR based Apache Tomcat Native library 1.1.16. 
12 août 2009 12:39:26 org.apache.catalina.core.AprLifecycleListener init 
INFO: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].

8 commentaires

  1. Plugin SPIP – Versionning

    On est jamais tranquille. Mon petit frère devient contributeur à la communauté du logiciel libre ! Dans le cadre de son nouveau poste de chef de projet technique chez Netapsys il a été amené à réaliser, entre autre, un plugin spip de…

  2. Difficile en effet de ne pas aimer Glassfish. La version 3 sera très intéressante pour le développement car plus besoin d’arrêter et de redémarrer Tomcat toutes les 5 minutes.

    J’ai déjà testé le clustering sous Glassfish V2 et je dois dire que je n’ai rien vu de comparable concernant la simplicité de mise en œuvre.

    A noter aussi que le benchmark SpecJ2004 a montré en moyenne que Glassfish est plus performant que WebSphere ou WebLogic (entre +10% et +30%)

    Enfin, pour info, la partie Web Services de WebLogic est basée sur le code de Glassfish depuis fin 2007.

  3. Merci pour ces infos. Sur une Ubuntu server 8.04, j’ai rencontré un problème avec la librairie libapr1-dev. Le démarrage du serveur plante (ou est très très lent).
    J’ai installé la librairie APR 1.3.8 chargé directement depuis apr.apache.org et tout est rentré dans l’ordre.

  4. Super ! Ca faisait bien longtemps que je devais chercher qqch pour regler ce point : du coup c’est fait, merci !!!

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.