Tomcat

1. Tomcat 安裝

1.1 yum安裝

能夠使用CentOS7 yum源自帶的安裝。yum源中是Tomcat 7.0版本。安裝完經過瀏覽器能夠觀察一下首頁
#貌似CentOS8 如今還不能夠
# yum install tomcat tomcat-admin-webapps tomcat-webapps
# systemctl start tomcat.service
# ss -tanl
[root@tomcat1 local]# ss -ntl
State      Recv-Q Send-Q                      Local Address:Port                                     Peer Address:Port              
LISTEN     0      50                                      *:3306                                                *:*                  
LISTEN     0      128                                     *:111                                                 *:*                  
LISTEN     0      128                                     *:22                                                  *:*                  
LISTEN     0      128                             127.0.0.1:631                                                 *:*                  
LISTEN     0      100                             127.0.0.1:25                                                  *:*                  
LISTEN     0      128                             127.0.0.1:6010                                                *:*                  
LISTEN     0      128                             127.0.0.1:6011                                                *:*                  
LISTEN     0      100                                    :::8009                                               :::*                  
LISTEN     0      128                                    :::111                                                :::*                  
LISTEN     0      100                                    :::8080                                               :::*                  
LISTEN     0      128                                    :::22                                                 :::*                  
LISTEN     0      128                                   ::1:631                                                :::*                  
LISTEN     0      100                                   ::1:25                                                 :::*                  
LISTEN     0      128                                   ::1:6010                                               :::*                  
LISTEN     0      128                                   ::1:6011                                               :::*                  
LISTEN     0      1                        ::ffff:127.0.0.1:8005                                               :::*

1.2 採用Apache官網下載 官方二進制版

在這裏插入圖片描述

# tar xf apache-tomcat-8.5.42.tar.gz -C /usr/local
# cd /usr/local
# ln -sv apache-tomcat-8.5.42/ tomcat
"tomcat" -> "apache-tomcat-8.5.42/"
# cd tomcat
# cd bin
# ./catalina.sh --help
# ./catalina.sh version
# ./catalina.sh start #./catalina.sh 能夠啓動中止tomcat服務
# ss -tanlp
# ./catalina.sh stop 

# ./startup.sh #啓動腳本
# ./shutdown.sh #關閉腳本
# 啓動身份是root
1. useradd -r tomcat #創建系統帳號
2. chown -R tomcat.tomcat /usr/local/tomcat
3.  su - tomcat -c '/usr/local/tomcat/bin/catalina.sh start' # tomcat conf/server.xml中配置內容填寫錯誤 啓動時會報錯
4.  ps -aux | grep tomcat

1.2.1 目錄結構

目錄 說明
bin 服務啓動、中止等相關
conf 配置文件
lib 庫目錄
logs 日誌文件
webapps 應用程序/應用部署目錄
work jsp編譯後的結果文件

1.2.2 配置文件

文件名 說明
server.xml 主配置文件
context.xml 每一個webapp均可以專用的配置文件,它一般由專用的配置文件context.xml來定義,其存放位置爲WEB-INF/目錄中;此文件爲全部的webapps提供默認配置
web.xml 每一個webapp只有「部署」後才能被訪問,它的部署方式一般由web.xml進行定義,其存放位置爲WEB-INF/目錄中;此文件爲全部的webapps提供默認部署相關的配置
tomcat-users.xml 用戶認證的帳號和密碼文件
catalina.policy 當使用-security選項啓動tomcat時,用於爲tomcat設置安全策略
catalina.properties Java屬性的定義文件,用於設定類加載器路徑,以及一些與JVM調優相關參數
logging.properties 日誌系統相關的配置。log4j

1.2.3 組件分類

  • 頂級組件
    Server,表明整個Tomcat容器
  • 服務類組件
    Service,組織Engine和Connector,裏面只能包含一個Engine
  • 鏈接器組件
    Connector,有HTTP、HTTPS、AJP協議的鏈接器
  • 容器類
    Engine、Host、Context都是容器類組件,能夠嵌入其它組件,內部配置如何運行應用程序。
  • 內嵌類
    能夠內嵌到其餘組件內,valve、logger、realm、loader、manager等。以logger舉例,在不一樣容器組件內定義。
  • 集羣類組件
    listener、cluster
    上述組件構成了tomcat,以下圖
    —> 圖片截取於馬哥教育許老師課件
    在這裏插入圖片描述
名稱 說明
Server Tomcat運行的進程實例
Connector 負責客戶端的HTTP、HTTPS、AJP等協議的鏈接。一個Connector只屬於某一個Engine
Service 用來組織Engine和Connector的關係
Engine 響應並處理用戶請求。一個引擎上能夠綁定多個Connector
Host 虛擬主機
Context 應用的上下文,配置路徑映射path => directory

AJP(Apache Jserv protocol)是一種基於TCP的二進制通信協議。html

核心組件web

  • Tomcat啓動一個Server進程。能夠啓動多個Server,但通常只啓動一個
  • 建立一個Service提供服務。能夠建立多個Service,但通常也只建立一個
    • 每一個Service中,是Engine和其鏈接器Connector的關聯配置
  • 能夠爲這個Server提供多個鏈接器Connector,這些Connector使用了不一樣的協議,綁定了不一樣的端口。其做用就是處理來自客戶端的不一樣的鏈接請求或響應
  • Service內部還定義了Engine,引擎纔是真正的處理請求的入口,其內部定義多個虛擬主機Host
    • Engine對請求頭作了分析,將請求發送給相應的虛擬主機
    • 若是沒有匹配,數據就發往Engine上的defaultHost缺省虛擬主機
    • Engine上的缺省虛擬主機能夠修改
  • Host定義虛擬主機,虛擬主機有name名稱,經過名稱匹配
  • Context定義應用程序單獨的路徑映射和配置

2. 應用部署

2.1 Tomcat

  • Tomcat中默認網站根目錄是CATALINA_BASE/webapps/
  • 在Tomcat的webapps目錄中,有個很是特殊的目錄ROOT,它就是網站默認根目錄。
  • 將eshop解壓後的文件放到這個ROOT中。
  • bbs解壓後文件都放在CATALINA_BASE/webapps/bbs目錄下。
  • 每個虛擬主機的目錄均可以使用appBase配置本身的站點目錄,裏面均可以使用ROOT目錄做爲主站目錄

2.1.1 JSP WebApp目錄結構

  • 主頁配置:通常指定爲index.jsp或index.html
  • WEB-INF/:當前WebApp的私有資源路徑,一般存儲當前應用使用的web.xml和context.xml配置文件
  • META-INF/:相似於WEB-INF
  • classes/:類文件,當前webapp須要的類
  • lib/:當前應用依賴的jar包

2.1.2webapp歸檔格式

  • .war:WebApp打包
  • .jar:EJB類打包文件
  • .rar:資源適配器類打包文件
  • .ear:企業級WebApp打包
    傳統應用開發測試後,一般打包爲war格式,這種文件部署到了Tomcat的webapps下,還能夠自動展開。
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">

2.2 部署Deploy

部署:將webapp的源文件放置到目標目錄,經過web.xml和context.xml文件中配置的路徑就能夠訪問該webapp,經過類加載器加載其特有的類和依賴的類到JVM上。apache

  • 自動部署 Auto Deploy:Tomcat發現多了這個應用就把它加載並啓動起來
  • 手動部署
    • 冷部署:將webapp放到指定目錄,纔去啓動Tomcat
    • 熱部署:Tomcat服務不中止,須要依賴manager、ant腳本、tcd(tomcat clientdeployer)等工具
  • 反部署undeploy:中止webapp的運行,並從JVM上清除已經加載的類,從Tomcat應用目錄中移除部署的文件