Je veux accéder à Tomcat via le serveur Web Apache à l'aide de connecteurs. J'ai collé à la documentation: http://tomcat.apache.org/connectors-doc/generic_howto/Quick.html I Je n'ai qu'un peu pour correspondre à la structure de répertoire utilisée sur mon debian presser )-Système.
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 d'emballage (Libapache2-Mod-JK).
Mes ouvriers.Properties 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 d'archive d'Apache, car il ne s'agit pas d'un package de presser. Tomcat 7 est en cours d'exécution et accessible sous son propre port (8180, pour ne pas entrer en collision avec Tomcat6 du système d'emballage). Pour autant que je sache, je devrais voir maintenant le site Tomcat avec --- (http: // hôte/tomcat7 / . Mais je reçois un 404 à la place. Qu'est-ce qui ne va pas?
Après que Quanta a indiqué pour définir le niveau de journal à déboguer (merci), j'ai fait cela et j'ai trouvé le message d'erreur suivant dans mod_jk.log: 'jk_map_to_storage :: mod_jk.c (3585): carte URI manquante pour 176.9.9.55:/TOMCAT7/'. J'ai googlé pour ça et trouvé http://old.nnlambabil.com/mod_jk%2c-missing-uri-map-td23984359.html
Les options définies dans httpd.conf n'étaient donc utilisées pas dans VirtualHosts. J'ai ajouté 'jkmountcopy sur' à mon virtualhost - et j'ai eu d'abord 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 sous forme de montage et tout va bien pour moi.
Sois sûr que:
vous avez un connecteur AJP 1.3 Écouter sur le port 8009 dans server.xml
:
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
Si cela ne fonctionne toujours pas, je vous suggère d'allumer le débogage et de regarder mod_jk.log
.
Edit:
Si tu utilises:
JkMount /Tomcat7/* worker1
et accès via http: // hôte/tomcat7 , je suis sûr que vous obtiendrez l'erreur Apache 404.
Vous pouvez spécifier JkMount
dans une section hôte virtuelle que vous souhaitez:
<VirtualHost *:80>
ServerName xx
ServerAdmin xx
JkMount /Tomcat7 worker1
JkMount /Tomcat7/* worker1
</VirtualHost>
J'ai eu le même problème. La solution consiste à changer JkMount /Tomcat7* worker1
à JkMount /your-servlet-app* worker1
. Vous pouvez avoir autant de JkMount
comme vous le souhaitez.
Par exemple, après avoir ajouté JkMount /manager* worker1
, vous pourrez accéder à http://Host/manager/html
J'ai compris 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
10.215.22.132 - - [04/Mar/2016:13:14:39 +0800] "GET /Tomcat-demo/manager/ HTTP/1.1" 404 1009
10.215.22.132 - - [04/Mar/2016:13:26:05 +0800] "GET /Tomcat-demo/manager/http/ HTTP/1.1" 404 1019
10.215.22.132 - - [04/Mar/2016:13:40:33 +0800] "GET /manager/ HTTP/1.1" 302 -
10.215.22.132 - - [04/Mar/2016:13:40:33 +0800] "GET /manager/html?org.Apache.catalina.filters.CSRF_NONCE=E68B5F7E6E96D09C75A8D6854ECE9092 HTTP/1.1" 401 2474
10.215.22.132 - yz [04/Mar/2016:13:40:35 +0800] "GET /manager/html?org.Apache.catalina.filters.CSRF_NONCE=E68B5F7E6E96D09C75A8D6854ECE9092 HTTP/1.1" 200 12405
Les deux premières lignes de journalisation ont été générées pendant que j'utilise AJP. Les trois derniers ont été générés pendant que j'utilise HTTP pour accéder directement à Tomcat. Donc, Apache passe toute l'URL à Tomcat, au lieu de supprimer le préfixe Jkmount.
Utilisez plutôt mod_proxy_ajp ou mod_proxy_http à la place si vous pouvez: http://httpd.apache.org/docs/2.2/mod/mod_proxy_ajp.htmlhttp://httpd.apache.org/docs /2.2/mod/mod_proxy_http.html