Назад | Перейти на главную страницу

Настройка Apache mod_jk для Tomcat - worker.properties

Я пытаюсь направлять файлы с помощью .jsp расширения для tomcat. В противном случае я хочу, чтобы apache обслуживал файл напрямую (без tomcat). В настоящее время у меня есть test.jsp который должен создать HTML-страницу с текущей датой в теле. Вместо этого, когда я иду к этому .jsp Я вижу JK Status Manager. В mod_jk.logs показывать только, init_jk::mod_jk.c (3365): mod_jk/1.2.35 initialized.

На моем сервере установлены tomcat и apache. Apache работает на 80, а tomcat - на 8080. localhost: 8080 показывает страницу приветствия tomcat. Я загрузил tomcat-connectors-1.2.35-windows-i386-httpd-2.2.x и скопировал mod_jk.so к C:\apache\modules.

Затем я добавил LoadModule jk_module modules/mod_jk.so к моему httpd.conf. Я перезапускаю apache, и модуль загружается нормально.

Затем я загрузил исходный код mod_jk, чтобы получить workers.properties файл. Я копирую workers.properties к C:\apache\confg. Затем я добавил этого пользователя,

workers.tomcat_home="C:/Program Files/Apache Software Foundation/Tomcat 7.0"
workers.java_home="C:/Program Files/Java/jdk1.7.0_03"

worker.list=ajp13
worker.ajp13.port=8080
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
worker.ajp13.socket_timeout=10

Когда я пытаюсь использовать пользователя ajp13 в своем httpd.conf, я получаю следующую ошибку в моем mod_jk.log,

[Wed Mar 28 13:08:51 2012] [2196:4100] [info] ajp_connection_tcp_get_message::jk_ajp_common.c (1258): (ajp13) can't receive the response header message from tomcat, network problems or tomcat (127.0.0.1:8080) is down (errno=60)
[Wed Mar 28 13:08:51 2012] [2196:4100] [error] ajp_get_reply::jk_ajp_common.c (2117): (ajp13) Tomcat is down or refused connection. No response has been sent to the client (yet)
[Wed Mar 28 13:08:51 2012] [2196:4100] [info] ajp_service::jk_ajp_common.c (2614): (ajp13) sending request to tomcat failed (recoverable),  (attempt=1)

Затем я обновляю свой httpd.conf с помощью,

JkWorkersFile C:/apache/conf/workers.properties
JkLogFile C:/apache/logs/mod_jk.log
JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "

Также я добавил JkMount /*.jsp jk-status к моему виртуальному хосту вот так,

<VirtualHost 192.168.5.250:80>
   JkMount /*.jsp jk-status
   #JkMount /*.jsp ajp13
   ServerName bgsisson.com
   ServerAlias www.bgsisson.com
   DocumentRoot C:/www/resume
</VirtualHost>

Я думаю, мне нужно добавить uriworkermap.properties файл, но здесь я застрял.

Я разместил тестовый файл .jsp на bgsisson.com/test.jsp Он показывает JK Status Manager, когда я использую JkMount /*.jsp jk-status и 502 Bad Gateway, когда я использую JkMount /*.jsp ajp13

test.jsp

<%-- use the 'taglib' directive to make the JSTL 1.0 core tags available; use the uri
"http://java.sun.com/jsp/jstl/core" for JSTL 1.1 --%>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>

<%-- use the 'jsp:useBean' standard action to create the Date object;  the object is set
as an attribute in page scope
--%>
<jsp:useBean id="date" class="java.util.Date" />

<html>
<head><title>First JSP</title></head>
<body>
<h2>Here is today's date</h2>

<c:out value="${date}" />

</body>
</html>

Вы довольно близко подошли к своей конфигурации, есть всего несколько вещей, которые не работают.

Во-первых, AJP не работает через порт 8080, по умолчанию он работает через порт 8009. Это другой соединитель. Вы можете проверить, для какого порта настроен AJP, посмотрев на свой server.xml файл для строки, которая выглядит так:

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

Итак, вы захотите изменить свой worker.ajp13.port=8080 директива к worker.ajp13.port=8009

Во-вторых, ваш httpd.conf немного не работает:

JkAutoAlias <path_to_tomcat>/webapps
JkMount /<your_webapp>/*.jsp ajp13

В Документы по соединителю Tomcat очень хорошо объясните JKAutoAlias:

Автоматически добавляет каталоги контекста webapp в пространство документов Apache. Следует позаботиться о том, чтобы в результате использования этой директивы через httpd передавался только статический контент. Любой статический контент, обслуживаемый httpd, будет обходить любые ограничения безопасности, определенные в файле web.xml приложения. Для получения информации о правилах наследования см .: JkMountCopy. Там нет значения по умолчанию.