Page d'accueilFindIt !Contact Cahier Java

Cahier Java

 Forum Java

Ce forum est dédié à l'ouvrage Bien programmer en Java 7, ainsi qu'aux éditions précédentes des Cahiers du Programmeur Java.
Utilisez-le pour toute demande d'information supplémentaire ou pour toute suggestion au sujet de ces ouvrages.
Pour les informations relatives au Cahier du programmeur Swing, merci d'utiliser le forum qui lui est dédié.
Vous pouvez consulter ces forums librement. Pour y participer, inscrivez-vous tout d'abord.

Sujets Messages récents Identification Inscription
Messages du sujet mod_jk

Pierre

Ville : LE PECQ
Membre depuis : 31 janv. 2010
Messages : 5
 31 janv. 2010 à 10:35
Bonjour,

Je viens d'installer Apache, JRE, Tomcat, MySQL, PHP et phpMyAdmin sur un serveur dédié mais je n'arrive pas à faire fonctionner le mod_jk qui permet de coupler Apache et Tomcat sur le même port 80. J'ai pourtant vérifié plusieurs fois mon workers.properties et mon httpd.conf et tout semble OK... Le module est bien loadé, pas de message d'erreur. C'est la première fois que je fais cette installe sur Linux (tout via SSH) et je commence à être sérieusement bloqué ! Merci d'avance pour votre aide.
---
Ashley

Manu

Ville : Paris / France
Membre depuis : 29 avr. 2003
Messages : 394
 31 janv. 2010 à 15:46
Je me souviens avoir eu un peu de mal aussi pour installer ce mod_jk.
Je m'étais aidé des docs suivantes :
- http://apacheguide.org/jsp.php
- http://tomcat.apache.org/tomcat-5.5-doc/setup.html
- http://tomcat.apache.org/connectors-doc/webserver_howto/apache.html

Quelques trucs à vérifier :
- Est-ce que votre installation de Tomcat par défaut sur le port 8080 fonctionnait bien pour une au moins une page JSP de test de votre site ?
- Avez-vous redémarrer le serveur Apache et Tomcat ?
- Est-ce que votre fichier server.xml ressemble à quelque chose comme cela :
--------------------------
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
  <Service name="Catalina">
    <Connector port="8009"
        enableLookups="false" redirectPort="8443" protocol="AJP/1.3"
        emptySessionPath="true" />

    <Engine name="Catalina" defaultHost="localhost">
      <Listener className="org.apache.jk.config.ApacheConfig"
             modJk="/path/to/apache/modules/mod_jk.so" />

      <!-- Configuration de Tomcat pour xxxxxx.com
                dont les fichiers HTML et JSP sont dans /home/xxxxxx/www -->
      <Host name="xxxxxx.com" appBase="/home"
           unpackWARs="false" autoDeploy="false"
           xmlValidation="false" xmlNamespaceAware="false">
        <Context path="/" docBase="xxxxxx/www" />
      </Host>
    </Engine>
  </Service>
</Server>
--------------------------

- Est-ce que dans votre fichier httpd.conf, vous avez bien :
--------------------------
<IfModule !mod_jk.c>
  LoadModule jk_module "/path/to/apache/modules/mod_jk.so"
</IfModule>
--------------------------
et aussi une section VirtualHost qui ressemble à ça :
--------------------------
<VirtualHost ipAddress:80>
    ServerAdmin webmaster@xxxxxx.com
    DocumentRoot /home/xxxxxx/www
    SuexecUserGroup xxxxxx users
    ServerName www.xxxxxx.com
    ServerAlias xxxxxx.com

    DirectoryIndex index.html index.jsp
    JkMount /*.jsp ajp13
    JkMount /servlet/* ajp13
</VirtualHost>
--------------------------

- Avez-vous bien ajouté un fichier workers2.properties dans le sous-dossier conf d'apache qui ressemble à ça :
--------------------------
[logger]
level=INFO
file=/path/to/apache/logs/jk2.log

[config]
file=/path/to/apache/conf/workers.properties
debug=0
debugEnv=0

[shm]
file=/path/to/apache/logs/jk2.shm
size=1048576

# socket channel
[channel.socket:xxxxxxhost:8009]
port=8009
host=xxxxxxhost

# worker for the connector
[ajp13:xxxxxxhost:8009]
channel=channel.socket:xxxxxxhost:8009

[status:status]

[uri:/status/*]
worker=status:status

# Requests for JSP files
[uri:/*.jsp]
worker=ajp13:xxxxxxhost:8009

# Requests for servlets
[uri:/*/servlet/*]
worker=ajp13:xxxxxxhost:8009
--------------------------

Bonne chance...
---
Manu (moderator/modérateur)

Pierre

Ville : LE PECQ
Membre depuis : 31 janv. 2010
Messages : 5
 31 janv. 2010 à 18:33
Bonsoir Manu,

Merci beaucoup pour votre réponse.
J'avais oublié la partie VirtualHost. Cela fonctionne maintenant.
Si je veux gérer un autre site avec un autre nom de domaine, je dois rajouter un VirtualHost + déclarer un nouveau worker? Mon VirtualHost est défini dans un fichier nommé 000-default dans /etc/apache2/sites-enabled/, je peux ajouter le nouveau VirtualHost dans le même fichier ou faut-il en créer un nouveau?

Merci
---
Ashley

Manu

Ville : Paris / France
Membre depuis : 29 avr. 2003
Messages : 394
 31 janv. 2010 à 19:14
Vous avez de la chance, comme j'ai les deux domaines eteks.com et sweethome3d.eu hébergés sur la même machine je peux vous répondre facilement ;-)

Pour un second domaine yyyyyy.com dont les fichiers HTML et JSP sont dans /home/yyyyyy/www, il faut ajouter dans le fichier server.xml un élément Host juste après le premier :
--------------------------
  <Host name="yyyyyy.com" appBase="/home"
     unpackWARs="false" autoDeploy="false"
      xmlValidation="false" xmlNamespaceAware="false">
    <Context path="/" docBase="yyyyyy/www" />
  </Host>
--------------------------
et dans le fichier httpd.conf une autre section VirtualHost :
--------------------------
<VirtualHost ipAddress:80>
    ServerAdmin webmaster@yyyyyy.com
    DocumentRoot /home/yyyyyy/www
    SuexecUserGroup yyyyyy users
    ServerName www.yyyyyy.com
    ServerAlias yyyyyy.com

    DirectoryIndex index.html index.jsp
    JkMount /*.jsp ajp13
</VirtualHost>
--------------------------

Je vous conseille aussi d'ajouter dans httpd.conf une section qui interdise l'accès au dossier WEB-INF comme le fait Tomcat :
--------------------------
<Location "/WEB-INF">
  Deny from all
</Location>
--------------------------

Je ne sais s'il faut faire autre chose à part associer le domaine yyyyyy.com à votre machine (OVH fournit des outils qui aident à créer un nouveau utilisateur/serveur virtuel, mais il est bien possible que cela suffise).
---
Manu (moderator/modérateur)

Manu

Ville : Paris / France
Membre depuis : 29 avr. 2003
Messages : 394
 31 janv. 2010 à 19:17
Au passage, si vous voulez utiliser phpMyAdmin sur votre serveur, il faut ajouter aussi la ligne
AddHandler x-httpd-php5 .php
dans la section VirtualHost.
---
Manu (moderator/modérateur)

Pierre

Ville : LE PECQ
Membre depuis : 31 janv. 2010
Messages : 5
 31 janv. 2010 à 20:13
Super, je garde ça sous le coude pour mon autre domaine.
Pas évident ce mod_jk, pourtant il y a plein de tutoriaux sur le sujet. Je n'ai toujours pas compris cette histoire de workers2.properties. Pourquoi est-ce que je ne peux pas le nommer travailleur.properties puisqu'il faut l'indiquer explicitement dans le JkWorkersFile dans httpd.conf ? Je n'ai pas encore tout lu mais d'après ce doc http://tomcat.apache.org/connectors-doc-archive/jk2/jk2/confighowto.html il y a un JK2 qui fonctionne un peu comme le mod_jk mais dont la config est différente et nécessite un workers2.properties et un autre fichier jk2.properties.
En tout cas merci beaucoup pour votre aide.

Salutations,
---
Ashley

Pierre

Ville : LE PECQ
Membre depuis : 31 janv. 2010
Messages : 5
 7 févr. 2010 à 19:37
Bonsoir Manu,

J'ai encore quelques soucis avec mes JkMounts.
Pour tester le bon fonctionnement, j'ai copié les Tomcat Examples dans mon site. Les JSP fonctionnent mais pas les Servlets. Je reçois le messge suivant : The requested resource (/examples/servlets/servlet/HelloWorldExample) is not available. Est-ce qu'il y a quelque chose en particulier à faire pour les servlets?

Merci d'avance

Ashley
---
Ashley

Manu

Ville : Paris / France
Membre depuis : 29 avr. 2003
Messages : 394
 12 avr. 2010 à 13:59
Les servlets doivent être décrites dans le fichier WEB-INF/web.xml
---
Manu (moderator/modérateur)


Page d'accueilFindIt !ContactDébut de la page

© Copyrights 1997-2014 eTeks - Tous droits réservés

Cahier Java