将tomcat6连接到apache2

拒绝:不是服务器pipe理员

我已经把这个问题困扰了好几个星期了(不是一直在意你,因为那样会很疯狂)。 我一直在试图将我的apache2服务器连接到我的tomcat服务器,如果有人在浏览我的web目录时遇到* .jsp或者servelet,它会被移交给tomcat。

我同时在Debian lenny上运行Apache2.0 (port 9099)Tomcat6 (9089)

目前, mod_jk$apacheHOME/mods-enabled/ with content中启用了mod_jk.conf

  # Where to find workers.properties JkWorkersFile /etc/apache2/workers.properties # Where to put jk shared memory JkShmFile /var/log/at_jk/mod_jk.shm # Where to put jk logs JkLogFile /var/log/at_jk/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 servlet for context /examples to worker named worker1 JkMount /*/servlet/* worker1 # Send JSPs for context /examples to worker named worker1 JkMount /*.jsp worker1 

我的workers.properties位于$apacheHOME/内容:

 workers.tomcat_home=/var/lib/tomcat6 workers.java_home=/usr/lib/jdk1.6.0_23/db/ worker.list=worker1 ps=/ worker.worker1.port=9081 worker.worker1.host=localhost worker.worker1.type=ajp13 

$tomcatHOME/conf中的web.xml启用了以下servlet

 <servlet> <servlet-name>default</servlet-name> <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-cla$ <init-param> <param-name>debug</param-name> <param-value>0</param-value> </init-param> <init-param> <param-name>listings</param-name> <param-value>false</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet> <servlet-name>jsp</servlet-name> <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> <init-param> <param-name>fork</param-name> <param-value>false</param-value> </init-param> <init-param> <param-name>xpoweredBy</param-name> <param-value>false</param-value> </init-param> <load-on-startup>3</load-on-startup> </servlet> <servlet-mapping> <servlet-name>jsp</servlet-name> <url-pattern>*.jsp</url-pattern> </servlet-mapping> <session-config> <session-timeout>30</session-timeout> </session-config> 

server.xml:

– > – >

 <!-- Define an AJP 1.3 Connector on port 8009 --> <Connector port="9081" protocol="AJP/1.3" redirectPort="9088" /> 

mod_jk.log:

 [Mon Feb 21 13:49:35 2011] [2921:3075307264] [info] jk_open_socket::jk_connect.c (566): connect to 127.0.0.1:9081 failed (errno=111) [Mon Feb 21 13:49:35 2011] [2921:3075307264] [info] ajp_connect_to_endpoint::jk_ajp_common.c (869): Failed opening socket to (127.0.0.1:9081) (errno=111) [Mon Feb 21 13:49:35 2011] [2921:3075307264] [error] ajp_send_request::jk_ajp_common.c (1359): (worker1) connecting to backend failed. Tomcat is probably not started or is listening on the wrong port (errno=111) [Mon Feb 21 13:49:35 2011] [2921:3075307264] [info] ajp_service::jk_ajp_common.c (2194): (worker1) sending request to tomcat failed (recoverable), because of error during request sending (attempt=1) [Mon Feb 21 13:49:35 2011] [2921:3075307264] [info] jk_open_socket::jk_connect.c (566): connect to 127.0.0.1:9081 failed (errno=111) [Mon Feb 21 13:49:35 2011] [2921:3075307264] [info] ajp_connect_to_endpoint::jk_ajp_common.c (869): Failed opening socket to (127.0.0.1:9081) (errno=111) [Mon Feb 21 13:49:35 2011] [2921:3075307264] [error] ajp_send_request::jk_ajp_common.c (1359): (worker1) connecting to backend failed. Tomcat is probably not started or is listening on the wrong port (errno=111) [Mon Feb 21 13:49:35 2011] [2921:3075307264] [info] ajp_service::jk_ajp_common.c (2194): (worker1) sending request to tomcat failed (recoverable), because of error during request sending (attempt=2) [Mon Feb 21 13:49:35 2011] [2921:3075307264] [error] ajp_service::jk_ajp_common.c (2212): (worker1) Connecting to tomcat failed. Tomcat is probably not started or is listening on the wrong port [Mon Feb 21 13:49:35 2011] [2921:3075307264] [info] jk_handler::mod_jk.c (2364): Service error=-3 for worker=worker1 

端口9081似乎有问题,没有进程正在使用它,所以我会认为它的configuration不正确。 虽然我的tomcat端口工作正常。

  ickronia:/var/log/at_jk# telnet localhost 9081 Trying ::1... Trying 127.0.0.1... telnet: Unable to connect to remote host: Connection refused ickronia:/var/log/at_jk# 

从我可以告诉的是,没有有趣的buisness,因为apache2,tomcat和mod_jk日志显示绿色; 但是每当我导航到一个jsp,它只是显示JavaScript。

我不确定是什么问题,尽pipe浇注在日志和文件的援助。 我在servlet世界里是个新手。

回答二,因为太多的编辑正在发生。 这是我的工作设置:

MOD-jk.conf: –

 JkWorkersFile /etc/libapache2-mod-jk/workers.properties JkLogFile /var/log/apache2/mod_jk.log JkLogLevel info JkMount /portal worker1 JkMount /portal/* worker1 

在启用网站中: –

 <VirtualHost _default_:443> JkMountCopy On blah blah </VirtualHost> 

worker.properties(通常通过loadbalancer,但在这里简化): –

 worker.list=worker1 worker.worker1.port=9009 worker.worker1.host=host_name worker.worker1.type=ajp13 

tomcat server.xml: –

  <?xml version='1.0' encoding='utf-8'?> <Server port="9005" shutdown="SHUTDOWN"> <!-- cut --> <Service name="Catalina"> <Connector port="9080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="9443" /> <Connector port="9443" protocol="HTTP/1.1" SSLEnabled="true" keystoreFile="<path_to_keystore>.ks" kestorePass="<password for keystore>" maxThreads="200" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" /> <Connector port="9009" protocol="AJP/1.3" redirectPort="9443" /> <Engine name="Catalina" defaultHost="localhost" jvmRoute="worker1"> <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> </Host> </Engine> </Service> </Server> 

所以Tomcat正在监听9080上的http,9443上的https和9009上的ajp。

Apache正在侦听https端口443.任何发送到该服务器上的/ portal上下文的东西都被发送到mod_jk worker1,该mod_jk worker1将通过ajp被转发到tomcat上。

希望这可以帮助!

我的猜测是tomcat中的server.xml没有使用端口9089的CoyoteConnector,这是谈论ajp协议。 我怀疑你有这个说话,而且如果你点击http:// server:9089 /它会加载。

您将需要让workers.properties使用CoyoteConnector端口。

您不会说如果您在虚拟主机中执行了JKMountCopy。

在/ etc / apache2 / sites-enabled / 000-default-ssl中的我的Ubuntu机器上

 <VitualHost _default_:443> JkMountCopy On blah blah </VirtualHost> 

http://tomcat.apache.org/connectors-doc/reference/apache.html如果你findJkMount的指令描述你会看到全局指&#x4EE4;不会被VirtualHostsinheritance。 你需要重新指定,或者如果你想拉你需要的一切使用JkMountCopy的。

还要确保你连接的端口在server.xml中有一个AJP连接器。 redirect端口是指ssl端口。

从Tomcat包含的示例…

 <!-- Define an AJP 1.3 Connector on port 8009 --> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />