Linux下配置apache與Tomcat串連

來源:互聯網
上載者:User

Linux下配置apache與Tomcat串連

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 64bitjdk版本:1.7.0_80tomcat版本:8.0.29apache版本:2.4.9apache伺服器IP:192.168.21.10/24tomcat執行個體一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反向 Proxy,注釋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 configtestSyntax OK[root@orasrv1 ~]# service httpd24 restartStopping 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-AliveContent-Length:366Content-Type:text/html;charset=ISO-8859-1Date:Sat, 19 Dec 2015 11:43:50 GMTKeep-Alive:timeout=5, max=96Server:Apache/2.4.9 (Unix) mod_jk/1.2.41  //mod_jk方式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.