Accueil / Articles PiApplications. / Configuration de logiciels courants.

Utiliser un serveur Tomcat derrière un serveur Apache sous OpenSuse.

Principe de l'interconnexion des serveurs.

Le fichier server.xml permet de doter le serveur Tomcat de "connecteurs". Un des connecteurs possibles est celui du protocole AJP (Apache Jakarta Protocol) en version 1.3 encore appelé connexion AJP13. Ce connecteur est déclaré par défaut sur le port 8009 :

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

Le principe de configuration de l'interaction entre les serveurs est assez simple :

Un point de montage est la racine du chemin de l'URL qui indique au serveur Apache qu'il doit rediriger les flux HTTP (requêtes et réponses) vers le serveur Tomcat. En présence d'une des racines déclarées, le serveur Apache se comporte comme un proxy vis-à-vis du serveur Tomcat.

Mise en œuvre sous OpenSuse.

Ce qui a été dit précédemment est commun n'importe quel système souhaitant faire interagir Apache et Tomcat. Toutefois, chaque distribution adapte la configuration du serveur Apache à ses propres conventions. Cela rend difficile le travail de configuration de la librairie mod_jk. Nous détaillons ci-après la procédure pour une distribution OpenSuse.

  1. Installer la librairie mod_jk (yast ou zypper).
  2. Dans le fichier /etc/sysconfig/apache2 ajouter jk à la liste des modules Apache à charger au lancement du serveur (variable APACHE-MODULES).
  3. Depuis le compte root, créer le répertoire /atc/apache2/mod_jk.
  4. Sur le répertoire /atc/apache2/mod_jk, créer le fichier mod_jk.conf et y ajouter les lignes :
    JkLogFile       /var/log/apache2/mod_jk.log
    JkWorkersFile   /etc/apache2/mod_jk/workers.properties
    JkShmFile       /etc/apache2/mod_jk/mod_jk.shm
    
    # Fixer le niveau des traces [debug, error ouinfo]
    JkLogLevel      info
    
    # Sélection du format des traces
    JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
    
    # Définition des points de montage
    JkMount /appli1 worker1
    JkMount /appli2/* worker1
  5. Sur le répertoire /atc/apache2/mod_jk, créer le fichier workers.prperties et y ajouter les lignes :
    worker.list=worker1
    worker.worker1.type=ajp13
    worker.worker1.host=127.0.0.1
    worker.worker1.port=8009
  6. Créer le fichier journal (ici touch /var/log/apache2/mod_jk.log)
  7. Ajouter la ligne Include /etc/apache2/mod_jk/mod_jk.conf au fichier /etc/apache2/httpd.conf.
  8. Relancer le serveur Apache via la commande systemctl restart apache2.

Si vous tapez un URL commençant par http://localhost/appli2/..., c'est le serveur Tomcat sur le port 8009 qui sera réellement invoqué par Apache.

Il s'agit ici d'un exemple basique que vous devrez adapter à vos besoins (ne serait-ce que les points de montage).

Enfin, si le serveur Apache est invoqué via HTTPS et que la liaison entre les serveurs est sécurisée (serveurs sur la même machine par exemple), les échanges avec le serveur Tomcat bénéficieront du chiffrement des flux d'Apache. Notez que la configuration SSL d'Apache sous OpenSuse est également particulière en comparaison d'autres distributions comme Debian.

(c) PiApplications 2016