107-tomcat

一.編程語言基礎

 1.1 編程語言:

硬件級:微碼編程,匯編語言
系統級:C,C++,…
應用級:Java, PHP, Python, Ruby, Perl, C#, …
Python: PVM
Standard Library
Web Framework:Django, Flask, …
Java:JVM,JDK
bash:bash explainer


1.2 程序簡要概念

           程序:指令+數據
過程式編程:以指令為中心,數據服務于代碼;
對象式編程:以數據為中心,指令服務于數據;
對象,方法(method)


二.java基礎概念

2.1 Java 歷史:

Sun, Green Project, Oak,  James Gosling;
1995:Java 1.0, Write once, Run Anywhere;
1996:JDK(Java Development Kit),包含類庫、開發工具(javac)、JVM(SUN Classic VM)
JDK 1.0,  Applet, AWT
1997:JDK 1.1
1998: JDK  1.2
Sun分拆Java技術為三個方向:
J2SE:Standard Edition
J2EE:Enterprise Edition
J2ME:Mobile Edition

代表性技術:EJB,java plugin, Swing, JIT(Just In Time,即時編譯)

2000:JDK 1.3
HotSpot VM
2002:JDK 1.4

2006:Sun開源了Java技術,GPL,建立一個稱為OpenJDK組織;
Java 2 SE, Java 2 EE, Java 2 ME

2011:JDK 1.7
2014:JDK 1.8
2016:JDK 1.9

2.2  Java代碼的運行流程:

   *.java(source code源代碼) –> javac(編譯工具) –> *.class(bytecode,字節碼,類文件)
   jvm:class loader,加載程序的類文件,及程序的類文件依賴到的其它的類文件而后運行; 

                     整個運行表現為一個jvm進程;

            threads;
#備注: 目前,單jvm進程運行內存超過32G時候,會導致內存泄露等錯誤

2.3  java技術體系:

Java編程語言
Java Class文件格式
Java API 
Java VM 
class loader
執行引擎

2.4 JVM運行時的內存區域:

                     107-tomcat

 

                  class loader: 負責將代碼加載到指定內存空間

                 GC: 垃圾清理器,用于清理堆中的垃圾

                 方法區:線程; 用于存儲被JVM加載的class信息、常量、靜態變量、方法等;
堆:是jvm所管理的內存中占用空間最大的一部分;也是GC管理的主要區域;用于存儲對象;

                       每個對象有對應的引用計數器,當計數器值為0,則會被GC認為是垃圾而清出
Java棧:線程私有,存儲 線程自己的局部變量;存放上下文
PC寄存器:線程私有的內存空間,程序的指令指針;
本地方法棧:調用本地的C庫或者命令等本地資源時,本地資源的臨時存放位置

總結:
Java 2 SE: JDK 
Java 2 EE: (添加了多個類庫,組件)
JDK + Servlet, JSP, EJB, JMS, JMX, JavaMail, …

商業實現:
BEA(oracle):WebLogic
IBM:WebSphere
Oracle: oc4j

2.5  java – JDK

2.5.1 JDK

          
           組成架構:
                     107-tomcat 

                         JVM : 包含即時編譯器
                        JRE:   包含JVM以及編譯依賴的各種庫
                        JDK:   包含編譯工具,編譯環境以及以上全部組件

2.5.2 安裝JDK

     1.  先有兩種JDK ,一種為ORICLE官方的JDK,另一種為開源OPENJDK,兩者都可以使用,

               自行選擇其中一個即可  

              2.  oricle官方版JDK安裝:

 準備好JDK包,直接使用RPM命令安裝即可:
                           [root@node74 ~]# rpm -ivh jdk-8u25-linux-x64.rpm 
   安裝路徑:

[root@node74 ~]# cd /usr/java/

[root@node74 java]# ls

default  jdk1.8.0_25  latest
                       版本指定方式:
                            當多個版本都安裝時候,latest軟鏈接到的需要使用的版本,再通過在/etc/profile.d/下定義
                            jdk.sh:
                            export JAVA_HOME=/usr/java/latest
                            export PATH=$JAVA_HOME/sbin:$PATH 

       

               3. openJDK安裝:

                             1)  base倉庫中已經默認包含有,直接使用YUM安裝即可

                                  通常需要安裝如下幾個:

                                   java-###-openjdk   java-###-openjdk-devel  java-##-openjdk-headless

                    

                     2 )  安裝相應版本的rpm包;

jdk-VERSION-OS-ARCH.rpm
例如:jdk-1.8.0_25-linux-x64.rpm 

           了解當前的java環境:
 ~]# java  -version

2.5.3   OpenJDK 

java-VERSION-openjdk:
The OpenJDK runtime environment.
java-VERSION-openjdk-headless:
The OpenJDK runtime environment without audio and video support.
java-VERSION-openjdk-devel:
The OpenJDK development tools.

注意:多版本并存時,可使用 alternatives命令設定默認使用的版本;



注意:安裝完成后,要配置JAVA_HOME環境變量,指向java的安裝路徑;
OpenJDK:
JAVA_HOME=/usr
Oracle JDK:
JAVA_HOME=/usr/java/jdk_VERSION



2.5.3  Java 2 EE:

CGI: Common Gateway Interface

Servlet:

                        成為Servlet container(容器), Servlet Engine
                        #包含了JDK環境,兩者合稱為servlet engine,也是java代碼的實際執行者

                        #遵循CGI規范,自身可以識別并接受HTTP請求,
                    類庫;web app;


JSP: Java Server Page
                    #一種將java代碼內嵌在的html中的java文件
        
<html>
<title>TITLE</title>
<body>
<h1>…</h1>
<%
… java code…
%>
</body>
</html>
                  一個Jsp網頁文件的執行流程:
       jsp –>jasper–> .java –> javac –> .class 
當請求一個jsp網頁文件的時候,先由jasper翻譯為一個java代碼文件,后交給servlet(javac編譯器)
                 配置內置的JDK執行代碼,并返回給前端.
               注意:基于jasper將靜態輸出的數據轉為java代碼進行輸出;

Web Container:
Servlet Container

Java Web Server:JWS
ASF:JServ

Tomcat 3.x
Tomcat 4.x
Catalina

http://tomcat.apache.org/

商業實現:
WebSphere, WebLogic, Oc4j, Glassfish, Geronimo, JOnAS, JBoss, …
開源實現:
Tomcat, Jetty, Resin, …

Tomcat: Java 2 EE技術體系的不完整實現; 


三.Tomcat 簡介

1.1 核心組件

                  Tomcat的核心組件:server.xml
                   基本格式:
<Server>
<Service>
<connector/>
<connector/>
<Engine>
<Host>
<Context/> #相當于alias
<Context/>
                                                        <Value/>
                                          </Host> #virtual host
<Host>
</Host>
</Engine>
</Service>
</Server>

1.2 組件類型簡介

每一個組件都由一個Java“類”實現,這些組件大體可分為以下幾個類型:
頂級組件:Server
服務類組件:Service
連接器組件:http, https, ajp
容器類:Engine, Host, Context
被嵌套類:valve, logger, realm, loader, manager, …
集群類組件:listener, cluster, …

1.3. 組件架構:

                                   107-tomcat

 

二. 安裝Tomcat:

2.1 依賴環境JDK安裝:

               使用oricl官方jdk或者openjdk均可以,base倉庫自帶的未openjdk
             
           #此處使用官方包安裝:
            準備好JDK包,直接使用RPM命令安裝即可:
                           [root@node74 ~]# rpm -ivh jdk-8u25-linux-x64.rpm 
            安裝路徑:
[root@node74 ~]# cd /usr/java/
[root@node74 java]# ls
default  jdk1.8.0_25  latest
            版本指定方式:
                            當多個版本都安裝時候,latest軟鏈接到的需要使用的版本,再通過在/etc/profile.d/下定義
                            jdk.sh:
                            export JAVA_HOME=/usr/java/latest
                            export PATH=$JAVA_HOME/sbin:$PATH

2.2 安裝方式

                  1. Base Repo:#默認base倉庫已經有tomcat ,直接yum安裝即可
                         常用安裝組合:
tomcat, tomcat-lib, tomcat-admin-webapps, tomcat-webapps, tomcat-docs-webapp
#webapps用于提供WEB管理功能
         2. 源碼方式Tomcat binary release:
                            #此方式無需編譯,創建軟鏈接既可以安裝
 tar xf apache-tomcat-VERSION.tar.gz  -C /usr/local/
cd /usr/local
        ln -sv apache-tomcat-VERSION  tomcat
/etc/profile.d/tomcat.sh 
export CATALINA_BASE=/usr/local/tomcat
export PATH=$CATALINA_BASE/bin:$PATH
            #此方式下,需要借助catalina.sh 來啟動,以及執行其他操作

2.3 tomcat程序環境

1. tomcat的目錄結構                    

               #此為使用源碼創建軟鏈接形式安裝時的程序環境

bin:腳本,及啟動時用到的類;
conf:配置文件目錄;
lib:庫文件,Java類庫,jar;
logs:日志文件目錄;
temp:臨時文件目錄;
webapps:webapp的默認目錄,即應用程序的根目錄
work:工作目錄;jsp文件編譯為類文件以及執行等涉及的全部過程文件,都放于此處
webapps/host-manager ,manager : WEB GUI管理界面用到的管理程序
                        webapps/doc : 使用文檔
                                               使用方式: http://ip:8080/docs/
                        webapps/examle:  示例
                        webapps/ROOT: 默認的應用根目錄
2. rpm包安裝的程序環境:
配置文件:/etc/tomcat
webapps存放位置:/var/lib/tomcat/webapps/
examples
manager
host-manager
docs
                          # 其他詳細環境請自行使用 rpm -ql tomcat 查看既可以


三.tomcat的配置詳解:

3.1 yum 安裝下的配置文件分類(/etc/tomcat):

server.xml:主配置文件;
web.xml:每個webapp只有“部署”后才能被訪問,它的部署方式通常由web.xml進行定義,其存
                                             放位置為WEB-INF/目錄中;此文件為所有的webapps提供默認配置;
context.xml:每個web都可以專用的配置文件,它通常由專用的配置文件context.xml來定義,其
                                            存放位置為WEB-INF/目錄中;此文件為所有的webapps提供默認配置;
tomcat-users.xml:用戶認證的賬號和密碼文件;
catalina.policy:當使用-security選項啟動tomcat時,用于為tomcat設置安全策略; 
catalina.properties:Java屬性的定義文件,用于設定類加載器路徑,以及一些與JVM調優相關
                                                  參數;
logging.properties:日志系統相關的配置;
#備注:
                        通常使用默認值就足夠使用

3.2 catalina.sh 工具

                          #該工具位于tomcat目錄的bin下,當使用源碼創建軟鏈接形式安裝時
                             需要借助此工具
                          #用于綜合調用其他腳本來完成各種功能的
          # catalina.sh –help
debug             Start Catalina in a debugger
debug -security   Debug Catalina with a security manager
jpda start        Start Catalina under JPDA debugger
run               Start Catalina in the current window
run -security     Start in the current window with security manager
start             Start Catalina in a separate window
start  -security   Start in a separate window with security manager
stop              Stop Catalina, waiting up to 5 seconds for the process to end
stop n            Stop Catalina, waiting up to n seconds for the process to end
stop -force       Stop Catalina, wait up to 5 seconds and then use kill -KILL if still running
stop n -force     Stop Catalina, wait up to n seconds and then use kill -KILL if still running
configtest        Run a basic syntax check on server.xml – check exit code for result
version           What version of tomcat are you running?
                        使用示例:
[root@node74 apache-tomcat-8.0.23]# bin/catalina.sh version
Using CATALINA_BASE:   /root/apache-tomcat-8.0.23
Using CATALINA_HOME:   /root/apache-tomcat-8.0.23
Using CATALINA_TMPDIR: /root/apache-tomcat-8.0.23/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /root/apache-tomcat-8.0.23/bin/bootstrap.jar:
                                               /root/apache-tomcat-8.0.23/bin/tomcat-juli.jar
Server version: Apache Tomcat/8.0.23
Server built:   May 19 2015 14:58:38 UTC
Server number:  8.0.23.0
OS Name:        Linux
OS Version:     3.10.0-327.el7.x86_64
Architecture:   amd64
JVM Version:    1.8.0_65-b17
JVM Vendor:     Oracle Corporation

3.3 JSP WebAPP的組織結構:

/: webapps的根目錄
index.jsp:默認主頁;
WEB-INF/:當前webapp的私有資源路徑;通常用于存儲當前webapp的web.xml和
                                                                      context.xml配置文件;
META-INF/:類似于WEB-INF/;
classes/:類文件,當前webapp所提供的類;
lib/:類文件,當前webapp所提供的類,被打包為jar格式;
     webapp歸檔格式:
.war:webapp     
                                  #默認使用的java應用文件,一般都打包成此格式
                                  #tomcat可以自動識別解壓使用
.jar:EJB的類打包文件;
.rar:資源適配器類打包文件;
.ear:企業級webapp;

3.4 部署(deploy)webapp的相關操作:

1. deploy:將webapp的源文件放置于目標目錄(網頁程序文件存放目錄),配置tomcat服務器能夠基于
                                web.xml和context.xml文件中定義的路徑來訪問此webapp;
                                將其特有的類和依賴的類通過class loader裝載至JVM(若不加載相關類,則無法通過http訪問到);
                            
               注意: 當手動去為一個新的jsp網頁在/webapps下創建根目錄時候,需要包含以下幾個子目錄:
                        webapps/???/ROOT/{classes,lib,WEB-INF}   
                        以及在/???/ROOT/下需要創建一個index.jsp 網頁文件以及classes ,lib , WEB-INF子目錄
2.     部署有兩種方式:
自動部署:auto deploy
手動部署: (需要手動重啟tomcat才能生效)
冷部署:把webapp復制到指定的位置,而后才啟動tomcat;
熱部署:在不停止tomcat的前提下進行部署;
部署工具:manager、ant腳本、tcd(tomcat client deployer)等;
                            

3. 指令:
undeploy:反部署,停止webapp,并從tomcat實例上卸載webapp;
start:啟動處于停止狀態的webapp;
stop:停止webapp,不再向用戶提供服務;其類依然在jvm上;
redeploy:重新部署;
4. 部署路徑:
                     yum 安裝模式:
                                /var/libtomcat/webapps/
                     源碼安裝模式:
                               一般位于: /usr/local/tomcat/webapps
                     自定義路徑:
                          任意路徑均可,但是需要在站點根目錄下創建一個ROOT目錄,并包含index.jsp 文件, /lib ,/WEB-INF, /classes子目錄
                          而不能直接將應用程序文件放在根目錄下,必須放于根下的ROOT中
5.     手動提供一測試類應用,并冷部署:
                          #此部署是默認tomcat
# mkdir  -pv  /usr/local/tomcat/webapps/test/{classes,lib,WEB-INF}
創建文件/usr/local/tomcat/webapps/test/index.jsp 
<%@ page language=”java” %>
<%@ page import=”java.util.*” %>
<html>
<head>
<title>Test Page</title>
</head>
<body>
<% out.println(“hello world”);
%>
</body>
</html>
107-tomcat

                       部署環境:

[root@node74 webapps]# tree /var/cache/tomcat/work/
/var/cache/tomcat/work/

└── Catalina
└── localhost
├── _
│   └── org
│   └── apache
│   └── jsp
│   ├── index_jsp.class
│   └── index_jsp.java
├── docs
├── examples
├── host-manager
├── manager
├── sample
└── test
└── org
└── apache
└── jsp
├── index_jsp.class
└── index_jsp.java

 


3.5 tomcat的兩個管理應用:

                manager
host-manager
           #要使用此功能,需要安裝 tomcat-admin-webapps, tomcat-webapps兩個包
107-tomcat

    使用方式:
                在web gui頁面中,點擊nanger app/host manager 輸入管理員賬號密碼即可使用
                #注意默認管理功能不開啟,需要手動授權賬號
               
                授權用戶:   #在輸入密碼時,點擊取消,即會出現提示信息
                           在/etc/tomcat/tomcat-user.xml中修改定義:
                            
                            可啟用的功能:  #直接取消注釋即可, 注釋服為”<!–      –>”
                              <!– <role rolename=”admin”/> –>
<!– <role rolename=”admin-gui”/> –>
<!– <role rolename=”admin-script”/> –>
<!– <role rolename=”manager”/> –>
<!– <role rolename=”manager-gui”/> –>
<!– <role rolename=”manager-script”/> –>
<!– <role rolename=”manager-jmx”/> –>
<!– <role rolename=”manager-status”/> –>

授權用戶:
            <user username=”role1″ password=”tomcat” roles=”manager-gui“/>
            #授權給用戶的權限,需要在上面先開啟對應權限功能
                 

401 Unauthorized

You are not authorized to view this page. If you have not changed any configuration files, please examine the file conf/tomcat-users.xml in your installation. That file must contain the credentials to let you use this webapp.

For example, to add the manager-gui role to a user named tomcat with a password of s3cret, add the following to the config file listed above.

<role rolename="manager-gui"/>
#此處用于定義開啟manager-gui功能
<user username="tomcat" password="s3cret" roles="manager-gui"/>
$授權擁有manager-gui功能的賬戶

Note that for Tomcat 7 onwards, the roles required to use the manager application were changed from the single manager role to the following four roles. You will need to assign the role(s) required for the functionality you wish to access.

    #可開啟的功能:

  • manager-gui – allows access to the HTML GUI and the status pages
  • manager-script – allows access to the text interface and the status pages
  • manager-jmx – allows access to the JMX proxy and the status pages
  • manager-status – allows access to the status pages only

The HTML interface is protected against CSRF but the text and JMX interfaces are not. To maintain the CSRF protection:

  • Users with the manager-gui role should not be granted either the manager-script or manager-jmx roles.
  • If the text or jmx interfaces are accessed through a browser (e.g. for testing since these interfaces are intended for tools not humans) then the browser must be closed afterwards to terminate the session.

For more information – please see the Manager App HOW-TO.

eg:
<role rolename=”manager-gui”/>  
#開啟manager-gui功能
<user username=”tomcat” password=”tomcat” roles=”manager-gui“/>
#將開啟的manager-gui功能授權給tomcat用戶,密碼為tomcat

                    107-tomcat

                    107-tomcat

 

                服務器狀態信息server status-JVM

                             107-tomcat

                                          Eend Space : 新生帶
                                          Survivor Space : 存活帶
                                          Tenured Gen: 老年帶

3.6 WEB-GUI 中的 部署功能

                         107-tomcat

 

                             107-tomcat

 

四.tomcat 配置詳解

4.1 tomcat的常用組件配置

4.1.1 server 組件

                  Server:代表tomcat instance,即表現出的一個jvm進程;監聽在8005端口,
                           只接收“SHUTDOWN”。各server監聽的端口不能相同,
          因此,在同一物理主機啟動多個實例時,需要修改其監聽端口為不同的端口; 

4.1.2 service 組件

               Service:用于實現將一個或多個connector組件關聯至一個engine組件;

4.1.3 connector 組件

Connector組件:#用于接受,響應http請求
進入tomcat的請求可分為兩類:
(1) standalone : 請求來自于客戶端瀏覽器;
(2) 由其它的web server反代:來自前端的反代服務器;
nginx –> http connector –> tomcat 
httpd –> http connector –> tomcat
httpd –> ajp connector –> tomcat 
             常用屬性:
port=”8080″                       監聽端口
protocol=”HTTP/1.1″         使用的協議
connectionTimeout=”20000″     連接超時
address:監聽的IP地址;默認為本機所有可用地址;
maxThreads:最大并發連接數,默認為150;
enableLookups:是否啟用DNS查詢功能;
acceptCount:等待隊列的最大長度;
secure:true|false        是否啟用
sslProtocol: ssl通信協議指定
                                SSLEnabled=”true”  是否啟用SSL
                                redirectPort=”8443″     重定向端口
            eg:
<Connector port=”8443″ protocol=”org.apache.coyote.http11.Http11Protocol”
               maxThreads=”150″ SSLEnabled=”true” scheme=”https” secure=”true”
               clientAuth=”false” sslProtocol=”TLS” />
                    #詳細配置實例,見server.xml文件,里面有官方示例

4.1.4 Engine組件:

                        engine :  Servlet實例,即servlet引擎,其內部可以一個或多個host組件來定義站點; 通常需要通過
                                                       defaultHost來定義默認的虛擬主機;
                                注意: 一個service 中可以有多個connector,但是只能有一個engine
<Engine name=”Catalina” defaultHost=”localhost”>

屬性:
name=
defaultHost=”localhost”
jvmRoute=

4.1.5 host組件

Host組件:位于engine內部用于接收請求并進行相應處理的主機或虛擬主機,示例:
<Host name=”localhost”  appBase=”webapps”
unpackWARs=”true” autoDeploy=”true”>
</Host>
                         常用屬性說明:
(1) appBase:此Host的webapps的默認存放目錄,指存放非歸檔的web應用程序的目錄
                                        或歸檔的WAR文件目錄路徑;
         可以使用基于$CATALINA_BASE變量所定義的路徑的相對路徑;
                                        (默認的變量定義文件:/etc/sysconfig/tomcat)
(2) autoDeploy=”true|false”:在Tomcat處于運行狀態時,將某webapp放置于appBase
                                                                                所定義的目錄中時, 是否自動將其部署至tomcat;
(3) unpackWARs=”true|false” : 是否自動展開WAR文件
示例:
     <Host name=”www.test123.com” appBase=”/tomcat/test” unpackWARs=”true”
                                            autoDeploy=”true”>
</Host>
 mkdir -pv /tomcat/test/
 mkdir -pv /tomcat/test/ROOT/{lib,classes,WEB-INF}
 vim /tomcat/test/ROOT/index.jsp:
                                              <html>

       <head>

       <title>Test Page</title>

        </head>

        <body>

                hello mygirl

</body>

       </html>

                                測試:
                                       [root@node74 test]# curl www.test123.com:8080
<html>
       <head>
       <title>Test Page</title>
        </head>
        <body>
                hello mygirl
</body>
       </html>
    
                                        

4.1.6 context 組件

Context組件:
                          #相當于在host定義的站點下的子站點且不希望使用應用程序文件目錄名字
                          #作為訪問時候的URL,可以使用context定義, 作用相當于alias
格式:
                                <Host ……………………>
<Context path=”/PATH” docBase=”/PATH/TO/SOMEDIR” reloadable=”true|false“/>
                                </Host>
常用屬性:
                            path: 相對于當前host的URI的根路徑的URI ;若為空,則用”/”表示 (即定義用于訪問的url) 
                                docBase: 相應的應用程序的文件資源存放的位置(實際應用文件所在路徑)
                                                若使用相對路徑,則相對于host的appBase而言;
                                         eg :  appBase =/tomcat/test
                                                  絕對路徑: /tomcat/test/alias
                                                  相對路徑:  alias
                                        注意: docBase的路徑中,不可以包含有appBase路徑中的字符 
                                          eg:  appBase=/tomcat/test/www
                                                   此時docBase 中,不可以包含”www”字符,否則會出錯   
                                reloadable: 定義是否支持重載此context相關的WEB應用程序的類;

                        示例:
                                #在/tomcat/test/下創建多一個/www,并在其中添加應用程序文件,要求使用/abc可以訪問到/www
                                <Host name=”www.test123.com” appBase=”/tomcat/test” unpackWARs=”true” autoDeploy=”true”>
<Context path=”/abc” docBase=”www” reloadable=”false”/>
                                         #訪問www.test123.com/abc 來實現訪問/tomcat/test目錄下的應用程序
                               </Host>
                                107-tomcat

4.1.7 valve 組件

Valve組件:
<Valve className=”org.apache.catalina.valves.AccessLogValve” directory=”logs”
prefix=”localhost_access_log” suffix=”.txt”
pattern=”%h %l %u %t &quot;%r&quot; %s %b” />
Valve存在多種類型:
定義訪問日志:org.apache.catalina.valves.AccessLogValve
定義訪問控制:org.apache.catalina.valves.RemoteAddrValve 
                            eg: 拒絕172.16.100.67訪問
<Valve className=”org.apache.catalina.valves.RemoteAddrValve deny=”172\.16\.100\.67″/>
 

五. LNMT:Linux Nginx MySQL Tomcat 

5.1 client請求傳送流程

       Client (http) –> nginx (reverse proxy)(http) –> tomcat  (http connector)
        注意: nginx 僅支持使用Http協議反代給后端的tomcat ,而httpd 支持ajp協議;

5.2 nginx配置:

         1.   與常規的反代配置一樣,直接添加location即可:
location / {
proxy_pass http://10.1.249.69:8080/;
}
               若后端為tomcat 集群,則依然按照常規的集群定義upstream即可
          2.  若希望nginx自行處理靜態內容時則:
location ~* \.(jsp|do)$ {
proxy_pass http://tc1.magedu.com:8080;
}

六. LAMT:Linux Apache(httpd) MySQL Tomcat 

6.1 httpd 反代模塊:

# httpd支持使用http 協議以及ajp協議反代給后端的tomcat
   
1. httpd的代理模塊:
proxy_module
proxy_http_module:適配http協議客戶端;
proxy_ajp_module:適配ajp協議客戶端;
         2. 客戶端請求傳送流程:
Client (http) –> httpd (proxy_http_module)(http) –> tomcat  (http connector)
Client (http) –> httpd (proxy_ajp_module)(ajp) –> tomcat  (ajp connector)
Client (http) –> httpd (mod_jk)(ajp) –> tomcat  (ajp connector)

6.2 proxy_http_module配置實例: 

proxy_http_module代理配置示例:
<VirtualHost *:80>
ServerName      tc1.magedu.com
ProxyRequests Off
ProxyVia        On
ProxyPreserveHost On
<Proxy *>
Require all granted
</Proxy>
ProxyPass / http://tc1.magedu.com:8080/ 
ProxyPassReverse / http://tc1.magedu.com:8080/ 
<Location />
Require all granted
</Location>
</VirtualHost>

6.3 proxy_ajp_module 配置實例

proxy_ajp_module代理配置示例:
<VirtualHost *:80>
ServerName      tc1.magedu.com
ProxyRequests Off
ProxyVia        On
ProxyPreserveHost On
<Proxy *>
Require all granted
</Proxy>
ProxyPass / ajp://10.1.249.69:8009/ 
ProxyPassReverse / ajp://10.1.249.69:8009/ 
<Location />
Require all granted
</Location>
</VirtualHost>

原創文章,作者:ldt195175108,如若轉載,請注明出處:http://www.www58058.com/62083

(0)
ldt195175108ldt195175108
上一篇 2016-12-02
下一篇 2016-12-02

相關推薦

  • 企業實時同步方案—-Sersync介紹

    原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://nolinux.blog.51cto.com/4824967/1433109 Sersync 項目利用 Inotify 和 Rsync 技術實現對服務器數據實時同步的解決方案,其中 Inotify 用于監控 Sersync…

    Linux干貨 2016-08-15
  • Linux中的用戶、組和權限的管理

    一、Linux的安全模型     在Linux中用戶登陸時必須提供用戶名和密碼(用戶是由root用戶創建的,最初的密碼也是root用戶設定的)。系統使用用戶和群組來控制使用者訪問文件和其他資源的權限。每一個文件都一定屬于一個用戶(一般該用戶就是文件的創造者)并與一個群組相關。每一個進程(處理程序)都會與一個用戶和群組關…

    Linux干貨 2016-08-07
  • FHS文件系統各目錄及Linux文件類型和顏色標識整理

    一.FHS (Filesystem Hierarchy Standard文件系統層級標準)   使用文件系統層級標準可以使軟件和用戶可以預測已安裝文件和文件夾位置 文件系統各目錄:   /boot     系統引導啟動時要加載的靜態文件,內核和ramdisk及grub等    (系統啟動時…

    Linux干貨 2016-10-17
  • web 服務進階 httpd配置成https

    web服務進階 自建CA/https詳解 一、SSL與https 1、引言 我們網上購物、網上訂票,以及使用支付寶支付過程中都會在網上直接輸入賬號和密碼。這些信息都是非常重要的,如何才能在輸入的過程中,不被別人看見和竊取,就需要對你輸入的信息進行加密處理。 早期的兩主機通信之間是沒有加解密程序,后來就在傳輸層與應用層之間加了一個SSL庫,完成加密解密功能。 …

    Linux干貨 2016-12-11
  • DNS資源記錄類型

      資源記錄   資源記錄(Resource Records),簡稱RRs。是指每個域所包含的與之相關的資源。例如,每個RR都包括這個域的所屬(RR是從哪個域名中得到的),類型(什么樣的資源存在于這個RR中),TTL(time to live,存活時間)等等。 DNS包括七大資源記錄 A記錄:也稱為主機記錄,是DNS名稱到IP地址的映射,用于正向解…

    Linux干貨 2017-02-08
  • PHP數組實際占用內存大小的分析

    我們在前面的php高效寫法提到,盡量不要復制變量,特別是數組。一般來說,PHP數組的內存利用率只有 1/10, 也就是說,一個在C語言里面100M 內存的數組,在PHP里面就要1G。下面我們可以粗略的估算PHP數組占用內存的大小,首先我們測試1000個元素的整數占用的內存: <?php      &nb…

    系統運維 2015-05-28
欧美性久久久久