{Benjamin PREVOT}

Utiliser Apache en frontal de Tomcat

TomcatCet article va vous expliquer comment connecter le serveur HTTP de Apache avec Tomcat.

Cela permettra :

  • de répartir les charges entre les 2 serveurs
  • d'utiliser les fonctionnalités du serveur Apache comme l'url rewriting
  • de gérer le SSL
  • ...

Environnement

L'article a été réalisé sous l'environnement suivant :

  • Windows XP
  • Apache HTTP 2.0.59
  • Apache Tomcat 5.5.20

Pour faire le lien entre les 2 serveurs, il vous faudra télécharger sur le site Tomcat Connector le module mod_jk pour Apache : http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/. Dans notre cas, vous devez choisir le fichier situé dans le répertoire win32/jk-x.y.zz nommé mod_jk-apache-2.0.xx.so.

Configuration de mod_jk

Pour configurer le module de Apache, nous allons créer un fichier dans le répertoire conf du serveur Apache. Dans notre cas, nous allons l'appeler workers.properties.

Dans ce fichier, nous allons ajouter les lignes suivantes :

workers.properties
worker.list=default
worker.default.type=ajp13
worker.default.host=127.0.0.1
worker.default.port=8009

Un peu d'explication sur les parmètres que nous venons de saisir :

  • worker.list : définit le nom de la liste de paramètres qui sera utilisée. Comme vous pouvez le remarquer, le nom de la liste spécifiée fait partie des noms de paramètres suivants
  • worker.default.type : le type de worker utilisé pour faire le lien entre Apache et Tomcat ; la valeur de ce paramètre doit être l'une des suivantes : ajp13, ajp14, jni, lb ou status ; par défaut, il s'agit de ajp13
  • worker.default.host : le nom ou l'adresse IP du serveur Tomcat
  • worker.default.port : indique le port

Installation de mod_jk

La mise en place du module mod_jk est très simple :

  • Copiez le fichier mod_jk-apache-2.0.xx.so que vous avez téléchargé dans le répertoire modules de votre distribution du serveur Apache
  • Éditez le fichier conf.httpd du répertoire conf
  • Recherchez le groupe de ligne commençant par LoadModule
  • Ajoutez à la fin de ce groupe de lignes l'instruction suivante LoadModule jk_module modules/mod_jk-apache-2.0.xx.so
  • Ajoutez à la fin du fichier les lignes suivantes
JkWorkersFile "W:/Apache2/conf/worker.properties"
JkLogFile "W:/Apache2/logs/mod_jk.log"
JkLogLevel warning
JkMount /monApplication default
JkMount /monApplication/* default

Arrêtons nous un instant sur les dernières lignes que nous venons d'ajouter :

  • JkWorkersFile : indique le chemin vers le fichier de configuration, workers.properties, que nous avons créé (n'oubliez pas de préciser votre chemin)
  • JkLogFile : le chemin vers le fichier de log (idem que précédemment, il faut utiliser vos propres paramètres)
  • JkLogLevel : le niveau de log à partir duquel les informations seront enregistrées dans votre fichier de log
  • JkMount : indique le lien entre votre application J2EE installée dans le Tomcat (monApplication) et le worker que vous avez défini

Démarrage des serveurs

Vous pouvez maintenant démarrer votre serveur Tomcat puis votre serveur Apache. Pour tester le bon fonctionnement de votre configuration, après le démarrage de vos serveur, il vous suffit de démarrer votre navigateur Web préféré et de saisir l'adresse http://localhost/monApplication ; vous devriez alors avoir accès à votre application J2EE.

  • 19 avril 2012 à 01h04

    Bonjour. Je souhaite m’initier à Java d’ici 3 mois. Je suis sous win xp sp3, Easyphp 5.2.17 (mysql + apache). J’ai installé Java, tomcat. j’accède bien à mon serveur apache, et serveur tomcat. Je souhaite donc créer le lien entre Apache et tomcat, en suivant la fiche (https://cwiki.apache.org/GMOxDOC11/configure-apache-httpd-with-jakarta-tomcat-connector-modjk.html), la fiche (http://zekey.developpez.com/tutoriel/apache/tomcat/) puis la votre, mais systématiquement, j’ai une erreur cannot load mod_jk.dll. J’ai trouvé 2 fichiers (mod_jk_1.2.6_2.0.50.dll / mod_jk-1.2.33) que j’ai renommé respectivement mod_jk.dll / mod_jk.so). Chaque fichier génère le message d’erreur. Voici ce que contient le worker.properties (apache/conf)
    ————
    workers.java_home= »F:\Program Files\Java\jdk1.7.0_03\ »
    # Sets the JAVA_HOME

    ps=/
    # For Windows systems use back slash « \ » , for Unix systems use forward slash « / »
    worker.list=default

    worker.default.type=ajp13

    worker.ajp13.port=8009
    # Use default 8009 for Apache Tomcat
    # Change this value to 8019 for Jetty

    worker.ajp13.host=localhost
    # Specifies the location of the Geronimo server. Use default localhost for single-tier scenarios. Specify the hostname of the Geronimo server for multi-tier environments.

    worker.ajp13.type=ajp13
    # Sets the version of AJP used. The AJP listeners defined in Geronimo are AJP v13.
    ————-
    ce que contient le fichier httpd.conf
    ————-
    LoadModule jk_module modules\mod_jk.dll
    # Mod_jk settings
    JkWorkersFile « F:\Program Files\EasyPHP5.2.10\apache\conf\worker.properties »
    # Tells the module the location of the workers.properties file
    JkLogFile « F:\Program File\EasyPHP5.2.10\apache\logs\mod_jk.log »
    # Specifies the location for this module’s specific log file
    JkLogLevel info
    # Sets the module’s log level to info
    JkLogStampFormat « [%a %b %d %H:%M:%S %Y]  »
    # Sets the module’s log time stamp format
    JkAutoAlias « F:\Program File\EasyPHP5.2.10\config-store »
    # Automatically Alias webapp context directories into the Apache document space.
    JkMount /console default
    JkMount /console/* ajp13
    ———————
    Note : idem en / ou en \
    je n’ai pas compris le but de /console

    Merci de votre aide car j’ai besoin de développer en php + jsp

    Tarek

  • 21 avril 2012 à 11h43

    Bonjour Tarek,

    Avez-vous bien placé la librairie dans le répertoire modules du serveur Apache ?

Les avatars utilisés proviennent du site Gravatar. Pour créer un compte, vous pouvez vous inscrire.
* Champs obligatoires