TOMCAT的安裝與基本信息

一、TOMCAT簡介

Tomcat 服務器是一個免費的開放源代碼的Web 應用服務器,屬于輕量級應用服務器,在中小型系統和并發訪問用戶不是很多的場合下被普遍使用,是開發和調試JSP 程序的首選。對于一個初學者來說,可以這樣認為,當在一臺機器上配置好Apache 服務器,可利用它響應HTML(標準通用標記語言下的一個應用)頁面的訪問請求。際上Tomcat是Apache 服務器的擴展,但運行時它是獨立運行的,所以當你運行tomcat 時,它實際上作為一個與Apache 獨立的進程單獨運行的訣竅是,當配置正確時,Apache 為HTML頁面服務,而Tomcat 實際上運行JSP 頁面和Servlet。另外,Tomcat和IIS等Web服務器一樣,具有處理HTML頁面的功能,另外它還是一個Servlet和JSP容器,獨立的Servlet容器是Tomcat的默認模式。不過,Tomcat處理靜態HTML的能力不如Apache服務器。

官網:?Apache Tomcat? - Welcome!

官網文檔: Apache Tomcat 8 (8.5.99) - Documentation Index

幫助文檔:

Apache Tomcat Home - Apache Tomcat - Apache Software Foundation ? ? ? ??

FAQ - Apache Tomcat - Apache Software Foundatio

二、TOMCAT安裝

1.JDK介紹

JDK(Java Development Kit)是 Java 語言的軟件開發工具包,它包含了編譯、運行Java應用程序所需的全部組件。主要包括以下幾個部分:

javacJava 編譯器,用于將源代碼(.java 文件)編譯為字節碼文件(.class 文件)。
javaJava 運行時環境,負責加載和執行字節碼文件。
javadocJava 文檔生成工具,用于從源代碼注釋中提取信息生成API文檔。
jarJava 打包工具,可以將多個類文件打包成一個.jar文件。
jdbJava 調試器,用于調試Java程序。

jps, jinfo, jmap, jhat,

jstack, jstat?等

這些是用于監控和管理Java虛擬機(JVM)的實用工具。
jmod在較新版本的JDK中引入的一個模塊化工具,用于處理Java模塊化系統中的模塊。
jshell自JDK 9起引入的交互式Java Shell工具,可進行快速原型設計和學習Java語法。

JDK在Linux中默認是安裝的,但是安裝的是openjdk

OpenJDK:

?1.是一個開源項目,遵循GPL v2許可協議(部分組件使用不同的兼容許可證),由全球的開發者社區共同維護和開發,包括但不限于Oracle和其他公司。
2.通常被視為Java官方參考實現的基礎,任何Java版本的新特性首先會出現在OpenJDK中。
3.更新頻率較快,由于社區驅動,新特性和錯誤修復的集成速度可能更快。
4.不包含一些商業特性,如Flight Recorder(但后來也開源了)、Mission Control等工具,以及某些性能優化或特定平臺的支持。
5.多數Linux發行版默認提供的Java環境就是基于OpenJDK構建的。
Oracle JDK:

1.直到Java SE 11之前,Oracle JDK一直是Oracle公司發布的免費供個人使用的JDK版本,并為企業用戶提供長期支持(LTS)版本。
2.包含了一些OpenJDK沒有的額外商業特性和服務,比如上述提到的高級分析工具和可能存在的性能增強。
3.在授權方面,自Java SE 11起,Oracle JDK對商業用途開始實施訂閱制收費模式,非商業用戶仍然可以免費下載更新和安全補丁,但需要遵循Oracle的技術支持策略。
4.Oracle JDK曾經提供更穩定且及時的技術支持,尤其是對于付費的企業用戶。
總結來說,在大多數情況下,OpenJDK與Oracle JDK在核心功能上差異較小,兩者可以互換使用。然而,Oracle JDK針對企業級應用提供了更多的服務和支持,而OpenJDK則更適合那些尋求完全開源解決方案并愿意接受社區支持的開發者和組織。隨著Java生態的發展,越來越多的第三方廠商也開始發布基于OpenJDK的長期支持版本,為用戶提供與Oracle JDK相媲美的穩定性和技術

2.安裝Oracle JDK

安裝包下載官方鏈接:Java Downloads | Oracle

安裝包下載需要登錄,所以提前準備好安裝包

ram安裝

事先準備好rmp包,而后yum install? 安裝,或者使用日rpm? -ivh? 安裝包名稱;進行安裝

安裝好之后,找到安裝目錄

在該目錄下可以看到很多執行文件,就是一些需要用到的java工具

為了讓系統能夠識別并使用這個JDK版本作為默認Java環境,需要設置一個環境變量

寫在開機自動檢測的文件當中

對于全局生效(所有用戶):編輯 /etc/profile 或 /etc/profile.d/*.sh文件。

對于僅當前用戶生效:編輯 ~/.bashrc 或 ~/.bash_profile 文件。

export JAVA_HOME=/usr/java/default
#設置了JAVA_HOME環境變量,它指向Java開發工具包(JDK)的安裝目錄。
?
export PATH=$JAVA_HOME/bin:$PATH
#修改了系統PATH環境變量,在原有PATH值前添加了 $JAVA_HOME/bin。這樣一來,在執行java等命令時
#系統會在指定的Java bin目錄下查找并優先執行相應的命令。也就是先執行$JAVA_HOME里的Java命令
#找到相應的命令后,立即停止查找
?
export JRE_HOME=$JAVA_HOME/jre
#非必須項,但常見做法。設置了JRE_HOME環境變量,指向Java運行時環境(JRE)的安裝目錄
#通常位于JDK安裝目錄下的jre子目錄。
?
export CLASSPATH=$JAVA_HOME/lib/:$JRE_HOME/lib/
#非必須項。設置了CLASSPATH環境變量,用于Java應用程序加載類文件時搜索的路徑列表。
#在早期Java版本中,需要通過CLASSPATH來指定自定義類庫的位置。

3.安裝TOMCAT

安裝tomcat可以使用yum install,但是,yum源中的版本過于老舊,所以不推薦?

可以在官方網站下載好較新版本的安裝包,而后進行二進制安裝

官方網站與鏡像下載站點

Apache Tomcat? - Apache Tomcat 8 Software Downloads

Index of /apache/tomcat

[root@localhost ~]#rpm -ivh jdk-8u201-linux-x64.rpm
#安裝JDK包
警告:jdk-8u201-linux-x64.rpm: 頭V3 RSA/SHA256 Signature, 密鑰 ID ec551f03: NOKEY
準備中...                          ################################# [100%]
正在升級/安裝...1:jdk1.8-2000:1.8.0_201-fcs        ################################# [100%]
[root@localhost ~]#cd /usr/java/jdk1.8.0_201-amd64/
[root@localhost jdk1.8.0_201-amd64]#ll
總用量 25980[root@localhost jdk1.8.0_201-amd64]#vim /etc/profile
#添加環境變量
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH
[root@localhost jdk1.8.0_201-amd64]#source /etc/profile
#刷新配置文件
[root@localhost tomcat]#tar zxvf apache-tomcat-9.0.16.tar.gz 
[root@localhost tomcat]#cp -r apache-tomcat-9.0.16 /usr/local/tomcat
[root@localhost tomcat]#cd /usr/local/tomcat/
[root@localhost tomcat]#/usr/local/tomcat/bin/startup.sh
#啟動tomcat  #catalina.sh start
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/java/jdk1.8.0_201-amd64
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@localhost ~]# /usr/local/tomcat/bin/shutdown.sh 
#關閉服務   #catalina.sh stop添加到
[root@localhost bin]#useradd -s /sbin/nologin tomcat
#新建用戶
[root@localhost local]#chown tomcat:tomcat tomcat/ -R
#修改屬主和屬組[root@localhost ~]#cat > /usr/lib/systemd/system/tomcat.service <<EOF
[Unit]
Description=Tomcat
After=syslog.target network.target[Service]
Type=forking
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
RestartSec=3
PrivateTmp=true
User=tomcat
Group=tomcat[Install]
WantedBy=multi-user.targetEOF[root@localhost local]#systemctl daemon-reload
[root@localhost local]#systemctl start tomcat
[root@localhost local]#ss -ntap |grep 8080

三、配置文件介紹及核心組件

(一)配置文件

使用tree命令可以查看到在/usr/local/tomcat/目錄下有好多文件

1.目錄文件

bin存放啟動和關閉 Tomcat 的腳本文件,比較常用的是 catalina.sh、startup.sh、shutdown.sh 三個文件
conf存放 Tomcat 服務器的各種配置文件,比較常用的是 server.xml、context.xml、tomcat-users.xml、web.xml 四個文件。
lib存放 Tomcat 服務器的 jar 包,一般不作任何改動,除非連接第三方服務
logs存放 Tomcat 日志 catalina.out
temp存放 Tomcat 運行時產生的文件
webapps部署Web應用程序的地方。將WAR文件或解壓后的目錄放在這里,Tomcat會自動檢測并部署這些應用
workTomcat 工作目錄,一般清除 Tomcat 緩存的時候會使用到(升級版本時注意要刪除里面的緩存)

2.bin下的啟動文件

以.bat結尾的文件一般為windows環境下的相關文件

以.sh結尾的文件為Unix/Linux環境下的相關文件

其中最常用的三個文件為

catalina.sh:Unix/Linux平臺下啟動、停止和管理Tomcat服務器的主要腳本

startup.sh:啟動Tomcat服務器的腳本。

shutdown.sh:關閉Tomcat服務器的腳本。

3.conf下的子配置文件

Catalina:這不是一個文件,而是指Tomcat服務器的核心容器。它負責處理所有的Web應用請求,并且通過加載conf目錄下的配置文件來管理服務器的行為。

catalina.properties:這個文件包含了Catalina容器的一些全局屬性設置,例如日志路徑、臨時工作目錄、JMX設置等。

jaspic-providers.xml:Java Authentication and Authorization Service Provider Contract for Containers (JAAS) 的提供者配置文件,用于定義和配置安全認證與授權的服務提供商。

jaspic-providers.xsd:對應的XML模式定義文件(XSD),用來驗證jaspic-providers.xml文件是否遵循正確的結構和內容規范。

logging.properties:Tomcat的日志系統配置文件,定義了各種日志級別、日志輸出位置以及格式化樣式。

server.xml:Tomcat服務器的主要配置文件,包括端口號設置、連接器配置(HTTP/HTTPS/AJP)、引擎、主機、上下文(Web應用程序)以及其他全局服務配置。

tomcat-users.xml:用戶賬號和權限信息的配置文件,定義了可以訪問Tomcat Manager應用和其他受保護資源的用戶名、密碼以及角色分配。

tomcat-users.xsd:同樣作為模式定義文件,用于驗證tomcat-users.xml文件的格式正確性。

web.xml:位于conf/webapps/ROOT/WEB-INF或全局配置目錄下,這是Servlet容器的默認部署描述符,定義了所有Web應用通用的初始化參數、Servlet映射、過濾器、監聽器等配置。對于每個單獨的應用,也會有各自的web.xml文件放置在各自的WEB-INF目錄內。

4.日志文件與臨時、緩存文件

(二)組件

Catalina Container Catalina是Tomcat的主要容器,它負責管理整個請求處理生命周期。Catalina遵循Servlet和JavaServer Pages (JSP) 規范,以處理HTTP請求并生成響應。Catalina內部有多個層次的容器結構,包括Engine、Host、Context和Wrapper。

? ? ? ?Engine:引擎,代表整個Catalina Servlet容器,它可以包含多個虛擬主機(Host)。

? ? ? ?Host:虛擬主機,對應一個或多個域名/IP地址,每個Host可以部署多個Web應用程序。

? ? ? ?Context:上下文,代表一個Web應用程序,通常對應于WAR文件解壓后的目錄結構。

? ? ? ?Wrapper:最底層容器,封裝了一個具體的Servlet實例。

Connector Connector是Tomcat與客戶端進行通信的關鍵組件,它監聽指定端口上的HTTP請求,并將這些請求傳遞給相應的Container進行處理。例如,HTTP/1.1協議的Connector會監聽8080端口(默認配置),AJP Connector則監聽8009端口用于與前端代理服務器如Apache HTTP Server進行通信。

Jasper Jasper是Tomcat內置的JSP編譯器和容器,負責將JSP頁面轉換為Java Servlet源代碼,然后編譯成字節碼并加載到容器中執行。

Web Applications Manager (Manager App) Manager是一個Web應用程序,提供了通過瀏覽器界面管理Tomcat上部署的應用程序的功能,比如部署新的WAR文件、啟動、停止及刪除已部署的應用等。

Host Manager Host Manager也是Web應用程序,主要用于管理和配置Tomcat中的虛擬主機。

Libraries and Classloaders Tomcat包含一組庫文件(位于lib目錄下),它們包含了運行時所需的類庫和Tomcat自身功能實現所需要的類。同時,Tomcat具有復雜的類加載機制,確保不同Web應用程序之間的類隔離和資源加載。

Security Manager 安全管理器可選地在Tomcat中啟用,用于實施更細粒度的安全策略控制,限制Web應用程序訪問系統資源的能力。

Logging System Tomcat自帶日志系統,支持靈活的日志級別設置以及多種輸出格式,通過conf/logging.properties配置文件進行定制。

Global JNDI Resources Tomcat提供對Java Naming and Directory Interface (JNDI)的支持,允許在全局范圍內定義和查找資源,例如數據庫連接池、郵件服務等。

1.組件分層和分類

2.核心組件

(三)TOMCAT請求過程

#接收請求
?
'當客戶端(通常是Web瀏覽器)向Tomcat服務器發送一個HTTP請求時,請求首先被監聽在
特定端口上的Connector組件接收。例如,對于默認配置,HTTP Connector通常監聽8080端口'
?
#解析請求
'Connector接收到請求后,會根據HTTP協議規范對請求進行解析,提取出請求方法(GET、
POST等)、請求URI、HTTP頭信息以及可能存在的請求體內容'
?
#路由請求到適當的Context:
'解析后的請求將被傳遞給Engine容器,Engine通過匹配請求的Host頭或IP地址找到對應的虛擬
主機(Host)。
Host接著根據請求URI找到關聯的Web應用程序Context,也就是WAR文件解壓后部署的應用目錄。'
?
#查找并執行Servlet
'Context容器負責查找請求URI映射到的Servlet,并實例化或重用該Servlet。
如果請求的URL與某個Servlet的URL映射規則相匹配,則調用Servlet的service()方法來處理請求'
?
#處理請求
'在Servlet內部,根據請求的方法和請求參數,調用相應的doGet()、doPost()等方法處理請求數
據,并生成響應結果。'
?
#創建響應
'Servlet處理完成后,返回一個HttpServletResponse對象,其中包含了狀態碼、響應頭和響應
體內容(如HTML頁面、JSON數據或其他格式的內容)。'
?
#寫回響應
'Context將Servlet生成的響應傳遞給Host,再由Host傳遞給Engine,最終由Engine中的
Connector將響應數據封裝成HTTP響應報文并通過網絡發送回客戶端。'
?
#清理資源:
'在整個處理過程中,Tomcat還負責管理連接、線程池以及其他系統資源,確保請求處理完畢后釋放
相關資源以供后續請求使用'
?
#生命周期事件通知:
'Tomcat在應用啟動、停止、上下文初始化、銷毀等階段還會觸發相應的生命周期事件,以便開發者
能夠插入自定義的初始化邏輯或資源清理操作。'

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/718158.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/718158.shtml
英文地址,請注明出處:http://en.pswp.cn/news/718158.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

IO 與 NIO

優質博文&#xff1a;IT-BLOG-CN 一、阻塞IO / 非阻塞NIO 阻塞IO&#xff1a;當一條線程執行read()或者write()方法時&#xff0c;這條線程會一直阻塞直到讀取到了一些數據或者要寫出去的數據已經全部寫出&#xff0c;在這期間這條線程不能做任何其他的事情。 非阻塞NIO&…

記錄踩過的坑-macOS下使用VS Code

目錄 切換主題 安裝插件 搭建Python開發環境 裝Python插件 配置解釋器 打開項目 打開終端 切換主題 安裝插件 方法1 方法2 搭建Python開發環境 裝Python插件 配置解釋器 假設解釋器已經通過Anaconda建好&#xff0c;只需要在VS Code中關聯。 打開項目 打開終端

ArmV8架構

Armv8/armv9架構入門指南 — Armv8/armv9架構入門指南 v1.0 documentation 上面只是給了一個比較好的參考文檔 其他內容待補充

網絡-httpclient調用https服務端繞過證書的方法

httpclient調用https服務端繞過證書的方法 在日常開發或者測試中&#xff0c;通常會遇到需要用httpclient客戶端調用對方http是服務器的場景&#xff0c;由于沒有證書&#xff0c;所以直接是無法調用的。采用下面的方法可以繞過證書驗證&#xff1a; TrustManager[] trustAll…

AutoSAR(基礎入門篇)13.5-Mcal Mcu時鐘的配置

目錄 一、EB的Mcu模塊結構 二、時鐘的配置 對Mcu的配置主要就是其時鐘樹的配置,但是EB將GTM、ERU等很多重要的模塊也都放在了Mcu里面做配置,所以這里的Mcu是一個很龐大的模塊, 我們目前只講時鐘樹的部分 一、EB的Mcu模塊結構 1. 所有的模塊都基本上是這么些配置類別,Mc…

單詞級文本攻擊—論文閱讀

TAAD2.2論文概覽 0.前言1-101.Bridge the Gap Between CV and NLP! A Gradient-based Textual Adversarial Attack Frameworka. 背景b. 方法c. 結果d. 論文及代碼 2.TextHacker: Learning based Hybrid Local Search Algorithm for Text Hard-label Adversarial Attacka. 背景b…

閱讀筆記 | Transformers in Time Series: A Survey

閱讀論文&#xff1a; Wen, Qingsong, et al. “Transformers in time series: A survey.” arXiv preprint arXiv:2202.07125 (2022). 這篇綜述主要對基于Transformer的時序建模方法進行介紹。論文首先簡單介紹了Transformer的基本原理&#xff0c;包括位置編碼、多頭注意力機…

OPENAI SORA:未來視頻創作的新引擎——淺析其背后的人工智能算法

Sora - 探索AI視頻模型的無限可能 隨著人工智能技術的飛速發展&#xff0c;AI視頻模型已成為科技領域的新熱點。而在這個浪潮中&#xff0c;OpenAI推出的首個AI視頻模型Sora&#xff0c;以其卓越的性能和前瞻性的技術&#xff0c;引領著AI視頻領域的創新發展。本文將探討SORA的…

回歸預測 | Matlab實現RIME-BP霜冰算法優化BP神經網絡多變量回歸預測

回歸預測 | Matlab實現RIME-BP霜冰算法優化BP神經網絡多變量回歸預測 目錄 回歸預測 | Matlab實現RIME-BP霜冰算法優化BP神經網絡多變量回歸預測預測效果基本描述程序設計參考資料 預測效果 基本描述 1.Matlab實現RIME-BP霜冰算法優化BP神經網絡多變量回歸預測&#xff08;完整…

自動化測試介紹、selenium用法(自動化測試框架+爬蟲可用)

文章目錄 一、自動化測試1、什么是自動化測試&#xff1f;2、手工測試 vs 自動化測試3、自動化測試常見誤區4、自動化測試的優劣5、自動化測試分層6、什么項目適合自動化測試 二、Selenuim1、小例子2、用法3、頁面操作獲取輸入內容模擬點擊清空文本元素拖拽frame切換窗口切換/標…

十五 超級數據查看器 講解稿 外觀設置

十五 超級數據查看器 講解稿 外觀設置 視頻講座地址 講解稿全文: 大家好&#xff0c;今天講解超級數據查看器,詳情界面的外觀設置。 首先&#xff0c;我們打開超級數據查看器。 本節課以成語詞典為例來做講述。 我們打開成語詞典這個表&#xff0c;隨便選一條記錄點擊&#x…

AutoSAR(基礎入門篇)13.4-Mcal Dio代碼分析

目錄 一、文件結構 二、動態代碼 1、arxml文件 2、Dio_Cfg.h 3、Dio_PBCfg.c 4、小結

【虛擬機安裝centos7后找不到網卡問題】

最近開始學習linux&#xff0c;看著傳智播客的教學視頻學習&#xff0c;里面老師用的是centos6.5&#xff0c;我這邊裝的是centos7最新版的 結果到了網絡配置的這一節&#xff0c;卡了我好久。 我在centos一直找不到我的網卡eth0&#xff0c;只有一個回環網口&#xff0c;在/…

什么是MVC和MVVM

**MVC和MVVM是兩種流行的軟件架構模式&#xff0c;它們在前端開發中被廣泛采用來組織代碼和管理應用程序的復雜性**。具體如下&#xff1a; MVC&#xff08;Model-View-Controller&#xff09;&#xff1a; 1. 模型&#xff08;Model&#xff09;&#xff1a;負責管理數據和業…

軟考高級:主動攻擊和被動攻擊概念和例題

作者&#xff1a;明明如月學長&#xff0c; CSDN 博客專家&#xff0c;大廠高級 Java 工程師&#xff0c;《性能優化方法論》作者、《解鎖大廠思維&#xff1a;剖析《阿里巴巴Java開發手冊》》、《再學經典&#xff1a;《Effective Java》獨家解析》專欄作者。 熱門文章推薦&am…

第五套CCF信息學奧賽c++練習題 CSP-J認證初級組 中小學信奧賽入門組初賽考前模擬沖刺題(選擇題)

第五套中小學信息學奧賽CSP-J考前沖刺題 1、不同類型的存儲器組成了多層次結構的存儲器體系,按存取速度從快到慢排列的是 A、快存/輔存/主存 B、外存/主存/輔存 C、快存/主存/輔存 D、主存/輔存/外存 答案&#xff1a;C 考點分析&#xff1a;主要考查計算機相關知識&…

靜態鏈表(3)

尾插函數 尾插就比頭插多了一步找尾巴&#xff0c;其他均一樣 尾插步驟畫圖 1.找到空閑結點3 2.空鏈踢空點&#xff0c;穿透刪除 先綁后面 再接前面&#xff0c;就完成插入了 綜上所述&#xff0c;靜態鏈表就是處理兩條鏈表&#xff0c;靜態鏈表總的執行一次插入或刪除&#…

Netty NIO ByteBuffer 簡單實驗

1.概要 準備學一下Netty,先從NIO的三大組件開始。先ByteBuffer 2.代碼 2.1 主函數 package com.xjc.springcloundtest;import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.nio.ByteBuffer; import java.nio…

【大廠AI課學習筆記NO.62】模型的部署

我們歷盡千辛萬苦&#xff0c;總算要部署模型了。這個系列也寫到62篇&#xff0c;不要著急&#xff0c;后面還有很多。 這周偷懶了&#xff0c;一天放出太多的文章&#xff0c;大家可能有些吃不消&#xff0c;從下周開始&#xff0c;本系列將正常更新。 這套大廠AI課&#xf…

[python] dict類型變量寫在文件中

在Python中&#xff0c;如果你想要將一個字典變量以具有可讀性的格式寫入文件&#xff0c;并且指定縮進為2個空格&#xff0c;你可以使用json模塊來實現。json模塊提供了一種很方便的方法來進行序列化和反序列化Python對象。下面是一個具體的示例&#xff1a; 字典變量以具有可…