阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Linux下配置Apache与Tomcat连接

152次阅读
没有评论

共计 6276 个字符,预计需要花费 16 分钟才能阅读完成。

Apache http server 与 tomcat 同属于 apache 基金会,两者都可以提供 Web 服务,只不过两者的侧重点不同。http server 侧重用作 web 服务器,而 tomcat 则侧重于作为轻量级的应用服务器。同时,两者也可以结合 起来使用,即可以将动态请求通过 http server 转发至后端的 tomcat 来完成,http server 只处理静态请求。本文描述了如何配置 apache 与 tomcat 连接。

一、Tomcat 连接器架构及协议

1、Tomcat 连接器架构

基于 Apache 做为 Tomcat 前端的架构来讲,Apache 通过 mod_jk、mod_jk2 或 mod_proxy 模块与后端的 Tomcat 进行数据交换。而对 Tomcat 来说,每个 Web 容器实例都有一个 Java 语言开发的连接器模块组件,即 org.apache.catalina.Connector 这个类。这个类的构造器可以构造两种类别的连接器:HTTP/1.1 负责响应基于 HTTP/HTTPS 协议的请求,AJP/1.3 负责响应基于 AJP 的请求。但可以简单地通过在 server.xml 配置文件中实现连接器的创建,但创建时所使用的类根据系统是支持 APR(Apache Portable Runtime) 而有所不同。

APR 是附加在提供了通用和标准 API 的操作系统之上一个通讯层的本地库的集合,它能够为使用了 APR 的应用程序在与 Apache 通信时提供较好伸缩能力时带去平衡效用。同时,需要说明的是,mod_jk2 模块目前已经不再被支持了,mod_jk 模块目前还 apache 被支持,但其项目活跃度已经大大降低。因此,目前更常用的方式是使用 mod_proxy 模块。
如果支持 APR:
1、HTTP/1.1:org.apache.cotote.http11.Http11AprProtocol
2、AJP/1.3:org.apache.coyote.ajp.AjpAprProtocol
如果不支持 APR:
HTTP/1.1: org.apache.coyote.http11.Http11Protocol
AJP/1.3: org.apache.jk.server.JkCoyoteHandler

2、连接器协议

Tomcat 的 Web 服务器连接器支持两种协议:AJP 和 HTTP,它们均定义了以二进制格式在 Web 服务器和 Tomcat 之间进行数据传输,并提供相应的控制命令。
AJP(Apache JServ Protocol) 协议:
目前正在使用的 AJP 协议的版本是通过 JK 和 JK2 连接器提供支持的 AJP13,它基于二进制的格式在 Web 服务器和 Tomcat 之间传输数据,而此前的版本 AJP10 和 AJP11 则使用文本格式传输数据。

HTTP 协议:诚如其名称所表示,其是使用 HTTP 或 HTTPS 协议在 Web 服务器和 Tomcat 之间建立通信,此时,Tomcat 就是一个完全功能的 HTTP 服务器,它需要监听在某端口上以接收来自于商前服务器的请求。

二、本文环境介绍

os 版本:CentOS6.5 64bit
jdk 版本:1.7.0_80
tomcat 版本:8.0.29
apache 版本:2.4.9
apache 服务器 IP:192.168.21.10/24
tomcat 实例一 IP:192.168.21.31/24 (端口默认)

三、安装 apache 与 toamcat

参考:
Linux 下编译安装 Apache httpd 2.4
Linux 下安装 tomcat8

 验证 httpd 安装
    # /usr/local/apache/bin/httpd -v
    Server version: Apache/2.4.9 (Unix)
    Server built:   Nov 18 2015 17:38:27

验证 tomcat 安装  
    # catalina.sh version
    Using CATALINA_BASE:   /usr/local/tomcat
    Using CATALINA_HOME:   /usr/local/tomcat
    Using CATALINA_TMPDIR: /usr/local/tomcat/temp
    Using JRE_HOME:        /usr
    Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
    Server version: Apache Tomcat/8.0.29
    Server built:   Nov 20 2015 09:18:00 UTC
    Server number:  8.0.29.0
    OS Name:        Linux
    OS Version:     2.6.32-431.el6.x86_64
    Architecture:   amd64
    JVM Version:    1.7.0_80-b15
    JVM Vendor:     Oracle Corporation

四、配置 tomcat

 添加以下内容
    # vi /usr/local/tomcat/conf/server.xml
     <Engine name="Catalina" defaultHost="www.ycdata.net" jvmRoute="TomcatA"> // 注,添加前注释原来的 engine

      <Host name="www.ycdata.net"  appBase="/website"
            unpackWARs="true" autoDeploy="true">
         <Context path="" docBase="webapps" reloadable="true" /> 
      </Host> 

创建应用目录及测试页面,此处测试使用非缺省目录
    # mkdir /website/webapps 
    # vim /website/webapps/index.jsp
        <%@ page language="java" %>
        <html>
          <head><title>TomcatA</title></head>
          <body>
            <h1><font color="red">TomcatA </font></h1>
            <table align="centre" border="1">
              <tr>
                <td>Session ID</td>
            <% session.setAttribute("abc","abc"); %>
                <td><%= session.getId() %></td>
              </tr>
              <tr>
                <td>Created on</td>
                <td><%= session.getCreationTime() %></td>
             </tr>
            </table>
          </body>
        </html>

五、配置 apache 通过与 Tomcat 连接

1、基于 mod_proxy 模块 (http 协议)

 确保装载以下模块
    # /usr/local/apache/bin/httpd -D DUMP_MODULES | grep  proxy
     proxy_module (shared)
     proxy_connect_module (shared)
     proxy_ftp_module (shared)
     proxy_http_module (shared)
     proxy_fcgi_module (shared)
     proxy_scgi_module (shared)
     proxy_ajp_module (shared)
     proxy_balancer_module (shared)
     proxy_express_module (shared)

确保装载以下模块
    # /usr/local/apache/bin/httpd -M |grep slot
     slotmem_shm_module (shared)

配置 apache 反向代理,注释 DocumentRoot,添加 Include 部分,如下
    # vi /etc/http24/httpd.conf
    #DocumentRoot "/usr/local/apache/htdocs"
    Include /etc/httpd24/extra/httpd-proxy.conf

编辑 httpd-proxy.conf 文件 (此处使用虚拟主机方式),增加以下内容
    # vim /etc/httpd24/extra/httpd-proxy.conf
    <VirtualHost *:80>
      ProxyVia On 
      ProxyRequests Off
      ProxyPass  /  http://192.168.21.31:8080/
      ProxyPassReverse  /  http://192.168.21.31:8080/

      <Proxy *>
        Require all granted
      </Proxy>
    <Location  / >
      Require all granted
    </Location>
    </VirtualHost>

重启 apache    
    # service httpd24 configtest
    # service httpd24 restart

2、基于 ajp_proxy 模块 (ajp 协议)

ajp_proxy 连接方式其实跟 http_proxy 方式一样,都是由 mod_proxy 所提供的功能。配置也是一样,只需要把 http:// 换成 ajp://,同时连接的是 Tomcat 的 AJP Connector 所在的端口 
    # vim /etc/httpd24/extra/ajp-proxy.conf
    <VirtualHost *:80>
      ProxyVia On 
      ProxyRequests Off
      ProxyPass  /  ajp://192.168.21.31:8009/
      ProxyPassReverse  /  ajp://192.168.21.31:8009/

        <Proxy *>
          Require all granted
        </Proxy>
        <Location  / >
          Require all granted
        </Location>
    </VirtualHost>

3、验证

# curl http://192.168.21.10

<html>
  <head><title>TomcatA</title></head>
  <body>
    <h1><font color="red">TomcatA </font></h1>
    <table align="centre" border="1">
      <tr>
        <td>Session ID</td>

        <td>47841C4CFB4755ED89056AE4D48F93AB.TomcatA</td>
      </tr>
      <tr>
        <td>Created on</td>
        <td>1449023138420</td>
     </tr>
    </table>
  </body>
</html>   

4、通过 mod_jk 模块与 Tomcat 连接

 安装 tomcat 连接器
# cd /usr/local/src
# tar xf tomcat-connectors-1.2.41-src.tar.gz
# cd tomcat-connectors-1.2.41-src/native/
# ./configure --with-apxs=/usr/local/apache/bin/apxs
# make && make install
# ls -hltr /usr/local/apache/modules/*jk*
-rwxr-xr-x 1 root root 1.1M Dec  2 13:49 /usr/local/apache/modules/mod_jk.so

修改配置文件
    如果先前定义了 proxy 代理方式,禁用后再添加如下条目
    # vim /etc/httpd24/httpd.conf        
    Include /etc/httpd24/extra/httpd-jk.conf

    # vim /etc/httpd24/extra/httpd-jk.conf
    LoadModule  jk_module  modules/mod_jk.so
    JkWorkersFile  /etc/httpd24/extra/workers.properties
    JkLogFile  logs/mod_jk.log
    JkLogLevel  debug
    JkMount  /*  TomcatA
    JkMount  /status/  stat1

    # vim /etc/httpd24/extra/workers.properties
    worker.list=TomcatA,stat1
    worker.TomcatA.port=8009
    worker.TomcatA.host=192.168.21.31
    worker.TomcatA.type=ajp13
    worker.TomcatA.lbfactor=1
    worker.stat1.type = status

[root@orasrv1 ~]# service httpd24 configtest
Syntax OK
[root@orasrv1 ~]# service httpd24 restart
Stopping httpd24:                                          [OK]
Starting httpd24:                                          [OK]

# /usr/local/apache/bin/httpd -M |grep jk
 jk_module (shared)

[root@orasrv1 ~]# curl http://192.168.21.10

<html>
  <head><title>TomcatA</title></head>
  <body>
    <h1><font color="red">TomcatA </font></h1>
    <table align="centre" border="1">
      <tr>
        <td>Session ID</td>   --Author : Leshami  --Blog : http://blog.csdn.net/leshami

        <td>F6C954BBBEE5B7874F4829AFEF762E41.TomcatA</td>
      </tr>
      <tr>
        <td>Created on</td>
        <td>1449038089862</td>
     </tr>
    </table>
  </body>
</html> 

Response Headers 头部如下:Connection:Keep-Alive
Content-Length:366
Content-Type:text/html;charset=ISO-8859-1
Date:Sat, 19 Dec 2015 11:43:50 GMT
Keep-Alive:timeout=5, max=96
Server:Apache/2.4.9 (Unix) mod_jk/1.2.41  //mod_jk 方式 

Ubuntu Server 14.04 安装 Web 服务器 (Linux+Apache+MySQL+PHP)  http://www.linuxidc.com/Linux/2015-06/119061.htm

Linux 下安装配置 PHP 环境 (Apache2)  http://www.linuxidc.com/Linux/2015-05/118062.htm

Ubuntu 13.04 安装 LAMP\Vsftpd\Webmin\phpMyAdmin 服务及设置 http://www.linuxidc.com/Linux/2013-06/86250.htm

CentOS 5.9 下编译安装 LAMP(Apache 2.2.44+MySQL 5.6.10+PHP 5.4.12) http://www.linuxidc.com/Linux/2013-03/80333p3.htm

RedHat 5.4 下 Web 服务器架构之源码构建 LAMP 环境及应用 PHPWind http://www.linuxidc.com/Linux/2012-10/72484p2.htm

Apache 的详细介绍 :请点这里
Apache 的下载地址 :请点这里

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2016-04/130292.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计6276字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中