Я хочу получить доступ к Tomcat через веб-сервер Apache, используя коннекторы. Я придерживался документации: http://tomcat.apache.org/connectors-doc/generic_howto/quick.html Я лишь немного изменил ее, чтобы она соответствовала структуре каталогов, используемой в моей системе Debian (Squeeze).
Поэтому я добавил следующее в /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
Я прокомментировал загрузку модуля, потому что это уже происходит после того, как я установил mod_jk через систему пакетов (libapache2-mod-jk).
Мои работники.свойства выглядят так:
# 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 устанавливается непосредственно из архива от Apache, потому что это не пакет в Squeeze. Tomcat 7 работает и доступен через собственный порт (8180, чтобы не столкнуться с tomcat6 из системы пакетов). Насколько я понимаю, теперь я должен увидеть tomcat-site с http: // host / tomcat7 / . Но вместо этого я получаю 404. Что не так?
После того, как кванты намекнули установить уровень журнала для отладки (спасибо), я сделал это и обнаружил следующее сообщение об ошибке в mod_jk.log: 'jk_map_to_storage :: mod_jk.c (3585): отсутствует карта uri для 176.9.9.55:/tomcat7 /». Я гуглил и нашел http://old.nabble.com/mod_jk%2C-missing-uri-map-td23984359.html
Поэтому параметры, установленные в httpd.conf, не использовались в VirtualHosts. Я добавил 'JkMountCopy On' в мой VirtualHost - и получил сначала Tomcat 404 (вместо httpd 404). Проблема здесь в том, что он пытается получить доступ к тому же монтированному URI, поэтому в моем случае / tomcat7. Вместо имени я использовал название веб-приложения, и все в порядке.
источник
JkLogLevel
кdebug
и перезагружать / перезапустить Apache? Попробуйте это:http://host/tomcat7/xx
. Опубликовать весь контентserver.xml
.У меня такая же проблема. Решение состоит в том, чтобы изменить
JkMount /tomcat7* worker1
наJkMount /your-servlet-app* worker1
. Вы можете иметь столько,JkMount
сколько хотите.Например, после добавления
JkMount /manager* worker1
вы сможете получить доступhttp://host/manager/html
Я понял эту проблему после того, как попробовал AJP и http. У меня был следующий журнал доступа в моем
/var/log/tomcat7/localhost_access_log.txt
Первые две строки журнала были сгенерированы, пока я использую AJP. Последние три были сгенерированы, пока я использую http для прямого доступа к tomcat. Таким образом, apache передает весь URL-адрес tomcat вместо удаления префикса jkmount.
источник
Вместо этого используйте mod_proxy_ajp или mod_proxy_http, если можете: http://httpd.apache.org/docs/2.2/mod/mod_proxy_ajp.html http://httpd.apache.org/docs/2.2/mod/mod_proxy_http.html
источник