Tomcat基礎知識

標簽:centos  Java1.7  Tomcat8  
零、tomcat簡介
一、安裝java環境
二、安裝tomcat
三、tomcat目錄結構以及相關文件
四、WebAPP結構及簡單部署
五、tomcat常用組件配置

QQ截圖20170212183338.png

零、tomcat簡介

1、tomcat簡介

      tomcat是SUN公司的JSWDK(JavaServer  Web  DEvelopmentKit,是SUN公司推出的小型Servlet/JSP調試工具  )的基礎上發展出來的一個優秀的完全由Java語言編寫的Servlet容器;
Servlet,顧名思義,是一種運行在服務器上的小插件。Servlet最常見的用途就是擴展Web服務器的功能,可作為非常安全的、可移植的、易于使用的CGI代替品。Servlet具有以下特點:
提供了可被服務器動態加載并執行的程序代碼,為客服端的請求提供相應服務;
Servlet完全用Java語言編寫,因此要求運行Servlet的服務器必須支持Java語言;
Servlet完全運行在服務器端,因此它不依賴于瀏覽器。不管瀏覽器是否支持Java語言,都能請求訪問服務器端的Servlet;
Tomcat基礎知識

2、Tomcat工作模式

  Tomcat作為servlet容器,有以下3種工作模式:

     (1)、獨立的Servlet容器:
     Tomcat作為獨立的Web服務器來單獨運行,Servlet容器組件作為Web服務器中的一部分而存在,這是Tomcat的默認工作模式。在這種模式下,Tomcat是一個獨立運行Java程序,需要啟動一個Java虛擬機(JVM)進程來運行Tomcat;
Tomcat基礎知識
     (2)、其他Web服務器進程內的Servlet容器
     在這種模式下,Tomcat分別為Web服務器插件和Servlet容器組件兩部分。Web服務器插件在其他的Web服務器進程內部地址空間啟動一個Java虛擬機,Servlet容器組件在此Java虛擬機中運行。如有客戶端發出調用Serlvet請求,Web服務器插件獲得對此請求的控制并轉發給Servlet容器組件(使用JNI通訊機制,即Java本地調用接口)。
Tomcat基礎知識
     (3)、其他Web服務器進程外的Servlet容器[[常用]]
     在這種模式下,Tomcat分為Web服務器插件和Serlvet容器組件兩部分。Web服務器插件在其他的Web服務器進程外部地址空間啟動一個Java虛擬機,Servlet容器組件在此Java虛擬機中運行。如有客戶端發出調用Serlvet請求,Web服務器插件獲得對此請求的控制并轉發給Servlet容器組件(采用IPC通訊機制,即進程間通信的一種機制)。
Tomcat基礎知識


一、安裝java環境

1、從Base倉庫安裝java開發工具包:OpenJDK;

  注:tomcat對java1.7的兼容性較好
#yum  install  java-1.7.0-openjdk-devel.x86_64  
Tomcat基礎知識

2、查看JDK是否正常安裝;

#java  -version  
Tomcat基礎知識

3、查看java的環境配置信息;

#type  java  
Tomcat基礎知識
Tomcat基礎知識
Tomcat基礎知識
      可以看出/usr/bin/java以及/etc/alternatives/java均為鏈接文件;
      java支持多版本同時運行,可以通過alternatives命令修改默認版本,或者修改/etc/alternatives/java鏈接文件指向要設定的默認版本的路徑即可;


二、安裝tomcat

1、從官網下載tomcat二進制安裝包(http://tomcat.apache.org/)

#wget  http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.11/bin/apache-tomcat-8.5.11.tar.gz  

#tar  xf  apache-tomcat-8.5.11.tar.gz  -C  /usr/local/  
Tomcat基礎知識
查看解壓后的目錄;
#ll  /usr/local/  |  grep  tomcat  
Tomcat基礎知識

2、為方便管理,創建軟鏈接;

#ln  -s  /usr/local/apache-tomcat-8.5.11/  /usr/local/tomcat  
Tomcat基礎知識

3、創建環境配置腳本;

#vim  /etc/profile.d/tomcat.sh  
Tomcat基礎知識
Tomcat基礎知識
賦予執行權限;
#chmod  +x  /etc/profile.d/tomcat.sh  
Tomcat基礎知識
加載環境配置;
#source  /etc/profile.d/tomcat.sh  
Tomcat基礎知識

4、啟動tomcat

#/usr/local/tomcat/bin/catalina.sh  start  或  #catalina.sh  start  
查看tomcat是否正常啟動
#ss  –tnl
Tomcat基礎知識

5、測試本地8080端口是否正常監聽

#curl  -I  127.0.0.1:8080
Tomcat基礎知識

6、通過瀏覽器訪問測試(需指定8080端口),注意selinux與iptables策略;

Tomcat基礎知識
到此tomcat安裝成功;


三、tomcat目錄結構以及相關文件

1、Tomcat組件

     Tomcat本身由一系列可配置的組件構成,其核心組件是Servlet容器組件,即運行在服務器上的小插件。每個tomcat組件在server.xml文件中對應一種配置元素:

Tomcat基礎知識
  每一個組件都由一個Java"類"實現,這些組件大體可以分為以下幾個類型:
  頂級組件:Server;
  服務類組件:Service;
  連接器組件:http,https,ajp;
  容器類組件:Engine,Host,Context;
  嵌套類組件:valve,logger,realm,loader,manger,.  .  .  ;
  集群類組件:listener,cluster,.  .  .  ;

2、tomcat目錄結構

Tomcat基礎知識
  bin:腳本及啟動時用到的類
  conf:配置文件目錄
  lib:庫文件,java庫,jar
  logs:日志文件目錄
  temp:臨時文件目錄
  webapps:webapps的默認目錄
  work:工作目錄
 如果為rpm包安裝:
  配置文件目錄:/etc/tomcat
  webapps存放位置:/var/lib/tomcat/webapps
  環境配置文件:/etc/sysconfig/tomcat

3、tomcat的主要配置文件;

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

4、catalina.sh腳本參數詳解;

#catalina.sh  –help
Tomcat基礎知識


四、WebAPP結構及簡單部署

1、JSP  WebAPP的組織結構

        /:webapps的根目錄

        index.jsp:主頁;
        WEB-INF/:當前webapp的私有資源路徑,通常用于存儲當前的webapp的web.xml和context.xml配置文件;
        META-INF/:類似于WEB-INF/;
        classes/:類文件,當前webapp所提供的類;
        lib/:庫文件,當前webapp所提供的庫文件,被打包為jar; 

2、webapp歸檔格式:

        常用的歸檔格式有4種:*.war(webapp)、*.jar(EJB的類打包文件)、*.rar(資源適配器類打包文件)、*.ear(企業級webapp);如果使用的是*.war時,默認會自動展開;

3、部署(deploy)webapp的相關操作

     eploy:將webapp的源文件放置于目標目錄(網頁程序文件存放目錄),配置tomcat服務器能夠基于web.xml和context.xml文件中定義的路徑來訪問此webapp,將其特有的類和依賴的類通過class  loader裝載至JVM;
        部署方式分為自動部署(auto  deploy)和手動部署兩種方式:
        自動部署只需將webapp展開到tomcat/下的webapps/目錄即可;
        手動部署又分為冷部署和熱部署:冷部署,及把webapp復制到指定的位置,而后才啟動tomcat;熱部署,則是在不停止tomcat的前提下進行部署,需要借助于manager、ant腳本、tcd(tomcat  client  deployer)等部署工具,tcd可用于遠程部署;
     undeploy:反部署,停止webapp,并將webapp從tomcat實例上卸載;
     start:啟動處于停止狀態的webapp;
     stop:停止webapp,不再向用戶提供服務,其類依然在jvm上;
     redeploy:重新部署;

4、簡單冷部署一測試類應用:

#  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>

調試測試頁面:
#curl  127.0.0.1:8080/test/index.jsp
Tomcat基礎知識
  可以看出,響應內容為編譯后的頁面代碼;


五、tomcat常用組件配置

Tomcat基礎知識

1、頂層組件Server

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

        【常用屬性】
         Adderss:監聽shutdown命令的地址,默認為localhost;
         port:監聽shutdown命令的端口,默認為8005。設置為-1,則禁止通過端口關閉Tomcat;
         shutdown:設置基于端口關閉Tomcat所需的字符串參數,默認為"SHUTDOWN"

2、服務類組件Service

        Service用于建一個或多個Connector(連接器組件)關聯至一個Engine組件;

3、連接器組件Connector

       Connector負責接收請求,常見的有三種類http、https、ajp;
        進入tomcat的請求可以分為兩類:
       (1)、standalone:請求來自于客戶端瀏覽器;
       (2)、由其他的web  server反代:來自前端的反代服務器:
         nginx  –>  http  connector  –>  tomcat  
         httpd(proxy_http_module)  –>  http  connector  –>  tomcat
         httpd(proxy_ajp_module)  –>  ajp  connector  –>  tomcat
  【常用屬性】:
       port:接收http請求的端口,默認8080;
       protocol:使用協議,默認HTTP/1.1
       redirectPort:接收https請求的端口,默認8443;
       connectionTimeout:每個請求最長連接時間,單位毫秒,默認20000;

       address:監聽的IP地址;默認為本機所有可用地址;
       maxThreads:最大并發連接數,默認為150;
       enableLookups:是否啟用DNS查詢功能;
       acceptCount:等待隊列的最大長度;
       secure:安全設置
       sslProtocol:SSL協議

4、容器類組件Engine

       Engine組件:Servlet實例,即servlet引擎,每個Servlet只能包含一個Engine,其內部可以一個或多個host組件來定義站點;通常需要通過defaultHost來定義默認的虛擬主機;

     【常用屬性】:
       name:Engine名稱
       defaultHost:默認Host
        jvmRoute:Tomcat集群節點路由標示,用于區分不同tomcat;

5、容器類組件Host

        Host組件位于engine內部用于接收請求并進行相應處理的主機或虛擬主機,示例:

       <Host  name="localhost"    appBase="webapps"
        unpackWARs="true"  autoDeploy="true">
       </Host>

      【常用屬性】:
        appBase:此Host的webapps的默認存放目錄,指存放非歸檔的web應用程序的目錄或歸檔的WAR文件目錄路徑;可以使用基于$CATALINA_BASE變量所定義的路徑的相對路徑;
        autoDeploy:在Tomcat處于運行狀態時,將某webapp放置于appBase所定義的目錄中時,是否自動將其部署至tomcat;
       startStopThreads:線程池內的線程數量
       示例:

        <Host  name="tc1.magedu.com"  appBase="/appdata/webapps"  unpackWARs="true"  autoDeploy="true">
        </Host>

        簡單示例:

#  mkdir  -pv  /appdata/webapps
#  mkdir  -pv  /appdata/webapps/ROOT/{lib,classes,WEB-INF}
#  vim  /usr/local/tomcat/webapps/ROOT/index.jsp

      創建一個測試頁測試即可(參照第四章節,第4小節);

6、容器類組件Context

        每個Context代表一個運行在虛擬主機上的Web應用,一個Host上可以有多個Context;
      【常用屬性】
        path:該Web項目的URL入口;path設置為"",輸入http://localhost:8080即可訪問Webapp;path設置為"/test",輸入http://localhost:8080/test才能訪問Webapp
       docBas:webapps的路徑,相對或絕對路徑都可以;
       reloadable:自動部署配置,設置為true時,當Web項目的/WEB-INF/classes/和/WEB-INF/lib發生變化時,tomcat會自動重新部署Web項目。reloadable默認值為false。
     示例:

   <Context  path="/PATH"  docBase="/PATH/TO/SOMEDIR"  reloadable=""/>

7、嵌套類組件Valve

      Valve組件常用于Tomcat的日志、權限等控制,可嵌在Engine、Host、Context內;
      【常用屬性】
       className:
       定義訪問日志:org.apache.catalina.valves.AccessLogValve
       定義訪問控制:org.apache.catalina.valves.RemoteAddrValve、org.apache.catalina.valves.RemoteHostValve
     【日志配置】
       className:必須為org.apache.catalina.valves.AccessLogValve
       directory:日志文件目錄,默認為logs(相對于$CATALINA_HOME);
       prefix:日志前綴,默認為localhost_access_log;
       suffix:日志后綴,默認為.txt;
       pattern:日志記錄格式;具體見后面附表;
     示例:

   <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"  />

Tomcat基礎知識
      【基于IP訪問控制】
       className:必須為org.apache.catalina.valves.RemoteAddrValve
       allow:允許名單;匹配模式:可以基于IP、IP段,IP分隔符"."需要加"\"轉義,可用".*"通配
       deny:拒絕名單;匹配模式同allow;
      示例:

   <Valve  className="org.apache.catalina.valves.RemoteAddrValve"  deny="172\.16\.0\..*"/>

 

 

『返回頁首』

 

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

(0)
Jev TseJev Tse
上一篇 2017-02-08 20:06
下一篇 2017-02-09 16:27

相關推薦

  • Sed簡介

    Sed簡介    一、簡介   sed全稱是:Stream EDitor。sed命令的功能同awk類似,差別在于,sed簡單,對列處理的功能要差一些,awk的功能復雜,對列處理的功能比較強大。  sed 是一種在線編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern s…

    Linux干貨 2015-05-11
  • 計算機組成及Linux初識

    拼一載春秋,搏一生無悔 1. 計算機簡介 2. Linux發行版簡介 3. Linux哲學思想簡介 4. Linux系統上獲取命令幫助 5. Linux「12」個基礎命令簡介 6. Linux發行版基礎目錄及功能簡介 1.計算機簡介 電子計算機(英語:computer),亦稱電腦,是一種利用「電子學…

    Linux干貨 2016-10-27
  • 主流Linux發行版對比

      對服務器來說,沒有最好的Linux發行版。一切都取決于企業的實際需求。 如今Linux已不再只是一款自由操作系統,它還承載了許多企業的核心應用。在對比流行的Linux發行版時,不僅要考慮有吸引力的功能集,還要關注系統的支持與服務。 服務器管理員擔心操作系統的維護和支持周期。維護生命周期指的是Linux發行版持續提供產品補丁和更新的時間。支持方面…

    Linux干貨 2016-10-31
  • gawk基礎

     一、gawk 是什么 在了解gawk之前,先了解一下文本三工具      文本過濾工具:grep|egrep|fgrep   其中fgrep不支持正則表達式 1.行編輯器:sed      sed 有兩種空間   模式空間    保持空間 2. 文…

    Linux干貨 2016-06-24
  • 馬哥教育網絡班第21期+第二周課程作業

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 命令 選項 解釋 cp -r 遞歸復制 copy -f 強行復制,若已存在則覆蓋 -i 交互式 -p 保留屬主屬組權限時間戳 -L(不加也可以,默認) (源文件為鏈接)復制指向連接的文件 -P (源文件為鏈接) 以鏈接的方式復制過來 -a 歸檔復制,常用備份 命令 選項 …

    Linux干貨 2016-07-17
  • Liunx學習第一周之對目錄及文件的操作總結

            Liunx學習的第一周已經結束,回顧這一周的學習,已經對Linux的發展歷史有了初步的了解,也在老師的指導下成功的在虛擬機上安裝了兩個Liunx系統:centos6和centos7,然后在這兩個Liunx系統的CLI模式下輸入一個個命令,讓系統執行各種任務,下面是第一周學習的幾種命令的總結。 &nbsp…

    2017-07-15
欧美性久久久久