Je souhaite accéder à Tomcat via le serveur Web Apache à l'aide de connecteurs. Je m'en suis tenu à la documentation: http://tomcat.apache.org/connectors-doc/generic_howto/quick.html Je ne l'ai que légèrement modifiée pour correspondre à la structure de répertoires utilisée sur mon système Debian- (Squeeze) -System.
J'ai donc ajouté ce qui suit à /etc/apache2/httpd.conf:
# Load mod_jk module
# Update this path to match your modules location
#LoadModule jk_module libexec/mod_jk.so
# Declare the module for <IfModule directive> (remove this line on Apache 2.x)
#AddModule mod_jk.c
# Where to find workers.properties
# Update this path to match your conf directory location (put workers.properties next to httpd.conf)
JkWorkersFile /etc/apache2/workers.properties
# Where to put jk shared memory
# Update this path to match your local state directory or logs directory
JkShmFile /var/log/apache2/mod_jk.shm
# Where to put jk logs
# Update this path to match your logs directory location (put mod_jk.log next to access_log)
JkLogFile /var/log/apache2/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel info
# Select the timestamp log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
# Send everything for context /examples to worker named worker1 (ajp13)
JkMount /tomcat7/* worker1
J'ai commenté le chargement du module, car cela se produit déjà, après avoir installé mod_jk via le système de package (libapache2-mod-jk).
Mes travailleurs.propriétés ressemblent à ceci:
# Define 1 real worker using ajp13
worker.list=worker1
# Set properties for worker1 (ajp13)
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009
Tomcat 7 est installé directement à partir des archives d'Apache, car il ne s'agit pas d'un package dans Squeeze. Tomcat 7 est en cours d'exécution et accessible sous son propre port (8180, pour ne pas entrer en collision avec tomcat6 à partir du système de package). Pour autant que je comprends, je devrais voir maintenant le site tomcat avec http: // host / tomcat7 / . Mais je reçois un 404 à la place. Qu'est-ce qui ne va pas?
Après que quanta ait suggéré de définir le niveau de journalisation sur le débogage (merci), je l'ai fait et j'ai trouvé le message d'erreur suivant dans mod_jk.log: 'jk_map_to_storage :: mod_jk.c (3585): carte d'URI manquante pour 176.9.9.55:/tomcat7 / '. J'ai googlé pour cela et trouvé http://old.nabble.com/mod_jk%2C-missing-uri-map-td23984359.html
Les options définies dans httpd.conf n'étaient donc pas utilisées dans VirtualHosts. J'ai ajouté «JkMountCopy On» à mon VirtualHost - et j'ai d'abord obtenu un Tomcat 404 (au lieu du httpd 404). Problème ici, qu'il essaie d'accéder exactement au même URI monté, donc dans mon cas / tomcat7. J'ai utilisé à la place le nom de la webapp comme monture et tout va bien pour moi.
la source
JkLogLevel
àdebug
et reload / redémarrer Apache? Essayez ceci:http://host/tomcat7/xx
. Postez l'intégralité du contenu deserver.xml
.J'ai eu le même problème. La solution est de passer
JkMount /tomcat7* worker1
àJkMount /your-servlet-app* worker1
. Vous pouvez en avoir autantJkMount
que vous le souhaitez.Par exemple, après l'ajout
JkMount /manager* worker1
, vous pourrez accéder àhttp://host/manager/html
J'ai découvert ce problème après avoir essayé AJP et http. J'ai eu le journal d'accès suivant dans mon
/var/log/tomcat7/localhost_access_log.txt
Les deux premières lignes de journal ont été générées lorsque j'utilise AJP. Les trois derniers ont été générés lorsque j'utilise http pour accéder directement à Tomcat. Apache transmet donc l'URL entière à tomcat, au lieu de supprimer le préfixe jkmount.
la source
Utilisez plutôt mod_proxy_ajp ou mod_proxy_http si vous le pouvez: http://httpd.apache.org/docs/2.2/mod/mod_proxy_ajp.html http://httpd.apache.org/docs/2.2/mod/mod_proxy_http.html
la source