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
下一篇 2017-02-09

相關推薦

  • iptables基礎實戰練習

    (1) 放行ssh (端口:22) 1 iptables -A INPUT -d 192.168.42.153 -p tcp –dport 22 -j ACCEPT 2 iptables -A OUTPUT -s 192.168.42.153 -p tcp –sport 22 -j ACCEPT (2)修改默認規則鏈(關閉所有端口) 1 iptables…

    2017-09-10
  • 源碼編譯安裝Apache

    編譯安裝Apache 系統環境:centos 7.2 前提: 提供開發工具及開發環境 開發工具:make, gcc等 開發環境:開發庫,頭文件 glibc:標準庫 方式: 通過“包組”提供開發組件 centos 6 [root@centos6 ~]# yum groupinstall "Develo…

    Linux干貨 2016-08-24
  • 基于LNMP架構添加Memcached支持,并驗證其緩存結果

    一 Memcached簡介 Memcached是一個自由開源的,高性能,分布式內存對象緩存系統。它是一種基于內存的key-value存儲,用來存儲小塊的任意數據(字符串、對象)。這些數據可以是數據庫調用、API調用或者是頁面渲染的結果。 Memcached簡潔而強大。它的簡潔設計便于快速開發,減輕開發難度,解決了大數據量緩存的很多問題。它的API兼容大部分流…

    Linux干貨 2016-12-12
  • 計算機組成及各部分功能

    計算機組成及各部分功能 計算機組成 區別于利用機械原理對數據進行處理的機械計算機,計算機現在一般都指電子計算機,即電腦。計算機是一種利用電子學原理,根據一些列指令對數據進行處理的工具。 不管是機械計算機還是電子計算機其主要目的還是代替人來完成一系列的數據計算。1941年夏天誕生的阿塔納索夫-貝瑞計算機是世界上第一部電子計算機,使用了真空管計算器,二進制數值,…

    Linux干貨 2016-10-27
  • 系統基礎之權限管理

    權限管理: 概論:  上節,為大家介紹了用戶,和組的知識.今天為大家介紹與用戶,組息息相關的知識,權限.linux是多用戶,多任務的操作系統,面對多人的操作,安全問題就很重要,權限機制就很好的對安全進行防護,避免他人操作自己的文件.下面給大家詳細介紹權限.   首先讓我們先直觀地看下權限,對權限有個最基本的認識.以/etc/issue文件…

    Linux干貨 2016-08-04
  • lamp+nfs搭建wordpress

    一、前言 lamp是大多上公司常用的架構,本文將針對分離式的lamp+nfs來搭建一個簡單的wordpress網站。 二、架構圖 三、基本實現過程 3.1:dns搭建 由于這這是一個實驗,故使用yum搭建dns服務器 yum install -y bind 配置如下 dns主配置文件 dns輔助配置文件 zone文件 對所有服務…

    Linux干貨 2015-10-16
欧美性久久久久