Tomcat服務部署、優化

一 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服務器。

omcat雖然和Apache或者Nginx這些Web服務器一樣,具有處理HTML頁面的功能,然而由于其處理靜態HTML的能力遠不及Apache或者Nginx,所以Tomcat通常是作為 一個Servlet和JSP容器,單獨運行在后端。官網地址:Apache Tomcat? - Welcome!?????

2. web 應用服務器

1999年發布初始版本是Tomcat 3.0,實現了Servlet 2.2 和 JSP 1.1規范。

Tomcat 4.x發布時,內建了Catalina(Servlet容器)和 Jasper(JSP engine)等

當前 Tomcat 的正式版本已經更新到 9.0.x 版本,但當前企業中主流版本為 8.x 和 7.x

官網: http://tomcat.apache.org/

官網文檔: https://tomcat.apache.org/tomcat-8.5-doc/index.html

幫助文檔:

https://cwiki.apache.org/confluence/display/tomcat/

https://cwiki.apache.org/confluence/display/tomcat/FAQ

2.1 http 協議和 B/S 結構

操作系統有進程子系統,使用多進程就可以充分利用硬件資源。進程中可以多個線程,每一個線程可以被CPU調度執行,這樣就可以讓程序并行的執行。這樣一臺主機就可以作為—個服務器為多個客戶端提供計算服務。

客戶端和服務端往往處在不同的物理主機上,它們分屬不同的進程,這些進程間需要通信。跨主機的進程間通信需要使用網絡編程。最常見的網絡編程接口是socket。

Socket 稱為套接字,本意是插座。也就是說網絡通訊需要兩端,如果一端被動的接收另一端請求并提供計算和數據的稱為服務器端,另一端往往只是發起計算或數據請求,稱為客戶端。

這種編程模式稱為 Client/Server 編程模式,簡稱C/S編程,開發的程序也稱為C.S程序。C/S編程往往使用傳輸層協議(TCP/UDP),較為底層,比如: QQ,迅雷,云音樂,云盤, foxmail, xshell等。

1990年 HTTP 協議和瀏覽器誕生。在應用層使用文本跨網絡在不同進程間傳輸數據,最后在瀏覽器中將服務器惴返回的HTML渲染出來。由此,誕生了網頁開發。

網頁是存儲在 WEB 服務器端的文本文件,瀏覽器發起HTTP請求后,到達WEB服務程序后,服務程序根據 URL 讀取對應的HTML文件,并封裝成 HTTP 響應報文返回給瀏覽器端。起初網頁開發主要指的是 HTML、CSS 等文件制作,目的就是顯示文字或圖片,通過超級鏈接跳轉到另一個HTML并顯示其內容。后來,網景公司意識到讓網頁動起來很重要,伴著 SUN 的 java 的名氣,發布了JavaScript語言,可以在瀏覽器中使用5引攀執行的腳本語言,可以讓網頁元素動態變化。網頁動起來了。

為了讓網頁動起來,微軟使用 ActiveX 技術、SUN的 Applet 都可以在瀏覽器中執行代碼,但都有安全性問題。能不能直接把內容直接在WEB服務器端組織成HTML,然后把HTML返回給瀏覽器渲染呢?

最早出現了 CGl (Common Gateway Interface)通用網關接口,通過瀏覽器中輸入URL直接映射到一個服務器端的腳本程序執行,這個腳本可以查詢數據庫并返回結果給瀏覽器端。這種將用戶請求使用程序動態生成的技術,稱為動態網頁技術。先后出現了 ASP、PHP、JSP 等技術,這些技術的使用不同語言編寫的程序都運行在服務器端,所以稱為WEB后端編程。有一部分程序員還是要編寫HTML、CSS、JavaScript,這些代碼運行在瀏覽器端,稱為WEB前端編程。合起來稱為Browser/Server編程,即B/S編程。

2.2 前端三大核心技術

① HTML
② css
③ JavaScript
Javascript簡稱 JS,是一種動態的弱類型腳本解釋性語言,和HTML、CSS并稱三大WEB核心技術,得到了幾乎主流瀏覽器支持

隨著chrome瀏覽器的V8引擎發布 ,V8JS引擎不是解釋執行,而是本地編譯,在V8引擎做了很多優化,JS程序在其上運行堪比本地二進制程序。V8引擎使用C++開發,可以嵌入到任何C++程序中。基于V8引擎,2009年基于服務器 javascript 的運行環境 Node.js 誕生,創建了第一版npm (Node js包管理囂和開源庫生態系統)提供了大顯的庫供程序員使用。從此,便可以在服務器端真正大規模使用 JavaScript 編程了。也就是說 JavaScript 也可以真正稱為服務器端編程語言了,成為目前唯一的前、后端通用的語言。

④ 同步和異步
同步:

交互式網頁,用戶提交了請求,就是想看到查詢的結果。服務器響應到來后是一個全新的頁面內容,哪怕 URL 不變,整個網頁都需要重新渲染。例如,用戶填寫注冊信息,只是2次密碼不一致,提交后,整個注冊頁面重新刷新,所有填寫項目重新填寫(當然有辦法讓用戶減少重填)。這種交互非常不友好。從代價的角度看,就是為了注冊的一點點信息,結果返回了整個網頁內容,不但浪費了網絡帶寬,還需要瀏覽器重新渲染網頁,太浪費資源了,影響了用戶體驗和感受。上面這些請求的過程,就是同步過程,用戶發起請求,頁面整個刷新,直到服務器端響應的數據到來并重新渲染。

異步:

1996年微軟實現了 iframe 標簽,可以在一個網頁使用 iframe 標簽局部異步加載內容。

1999年微軟推出異步數據傳輸的 ActiveX 插件技術,太笨重了,但是也火了很多年。有一個組件XMLHttpRequest 被大多數瀏覽器支持。

傳統的網頁如果需要更新內容,必需重數整個網頁面。Ajax的出現,改變這一切,同時極大的促進了 Javascript 的發展。Ajax即"Asynchronous Javascript AndXML”(異步JavaScript和XML),是指一種創建交互式、快速動態網頁應用的網頁開發技術,最早起源于1998年微軟的Outook Web Access開發團隊。Ajax通過在后臺與服務器進行少量數據交換,可以使網頁實現異步更新。這意味著可以在不重新加載整個網頁的情況下,對網頁的某部分進行更新。Javascript 通過調用瀏覽器內置的 WEB API 中的XMLHttpRequest對象實現Ajax技術。早期Aijax結合數據格式XML,目前更多的使用)SON。利用AAX可實現前后端開發的徹底分離,改變了傳統的開發模式。

3.java 基礎

3.1 web 架構

① web 資源和訪問
PC端或移動端瀏覽器訪問

從靜態服務器請求 HTML、CSS、JS 等文件發送到瀏覽器端,瀏覽器端接收后渲染在瀏覽器上從圖片服務器請求圖片資源顯示,從業務服務器訪問動態內容,動態內容是請求后有后臺服務訪問數據庫后得到的,最終返回到瀏覽器端。

手機 App訪問

內置了 HTM L和 ]S 文件,不需要從靜態WEB服務器下載JS或HTML。為的就是減少文件的發送,現代前端開發使用的文件太多或太大了有必要就從圖片服務器請求圖片,從業務服務器請求動態數據 客戶需求多樣,更多的內容還是需要由業務服務器提供,業務服務器往往都是由一組服務器組成。

② 后臺應用架構


① 單體應用架構


傳統架構 (單機系統)。一個項目一個工程:比如商品、訂單、支付、庫存、登錄、注冊等等,統一部署,一個進程。

all in one 的架構方式,把所有的功能單元放在一個應用里。然后把整個應用部署到一臺服務器上。如果負載能力不行,將整個應用進行水平復制,進行擴展,然后通過負載均衡實現訪問。

Java實現: JSP、 Servlet, 打包成一個jar. war部署

好處:易于開發和測試,也十分方便部署,當需要擴展時,只需要將war復制多份,然后放到多個服務器上,再做個負載均衡就可以了。

壞處:如果某個功能模塊出問題,有可能全站不可訪問,修改Bug后、某模塊功能修改或升級后,需要停掉整個服務,重新整體重新打包、部署這個應用war包,功能模塊相互之間耦合度高,相互影響,不適合當今互聯網業務功能的快速迭代。特別是對于-一個大型應用,我們不可能把所有內容都放在一 個應用里面,我們如何維護、如何分工合作都是問題。如果項目龐大,管理難度大

web應用服務器:開源的 tomcat. jetty. glassfish, 商用的有weblogic、websphere. Jboss

② 微服務

微服務與soa 基本理念差不多, 只是微服務更細,屬于SOA (Service Oriented Architecture)的子集面。微服務化的核心就是將傳統的一站式應用,根據業務拆分成一個一個的服務,徹底去掉耦合,每一個微服務提供單個業務功能,一個服務只做一件事。每個服務都圍繞著具體業務進行構建,并且能夠被獨立地部署到生產環境、類生產環境等。從技術角度講就是一種小而獨立的處理過程,類似與進程的概念,能夠自行單獨啟動或銷毀。

微服務架構(分布式系統),各個模塊/服務,各自獨立出來,"讓專業的人干專業的事”,獨立部署。分布式系統中,不同的服務可以使用各自獨立的數據庫。·服務之間采用輕量級的通信機制(通常是基于HTTP的RESTful API)。

微服務設計的思想改變了原有的企業研發團隊組織架構。傳統的研發組織架構是水平架構,前端、后端、DBA、測試分別有自己對應的團隊,屬于水平團隊組織架構。而微服務的設計思想對團隊的劃分有著一定的影響,使得團隊組織架構的劃分更傾向于垂直架構,比如用戶業務是一個團隊來負責,支付業務是一個團隊來負責。但實際上在企業中并不會把團隊組織架構拆分得這么絕對,垂直架構只是一種理想的架構,微服務的實現框架有多種,不同的應用架構,部署方式也有不同。

③ 單體架構和微服務比較
④ 微服務的優點與缺點
優點:

每個服務足夠內聚,足夠小,代碼容易理解。這樣能聚焦一個只當的業務功能或業務需求。

開發簡單、開發效率提高,一個服務可能就是專業的只干一件事,微服務能夠被小團隊單獨開發,這個小團隊可以是2到5人的開發人員組成。

微服務是松耦合的,是有功能意義的服務,無論是在開發階段或部署階段都是獨立的。

微服務能使用不同的語言開發

易于和第三方集成,微服務運行容易且靈活的方式集成自動部署,通過持續集成工具,如: Jenkins、Hudson、Bamboo。微服務易于被一個開發人員理解、修改和維護,這樣小團隊能夠更關注自己的工作成果,無需通過合作才能體現價值。微服務允許你利用融合最新技術。微服務只是業務邏輯的代碼,不會和 HTML/CSS 或其他界面組件混合,即前后端分離,每個微服務都有自己的存儲能力,可以有自己的數據庫,也可以有統一數據庫。

缺點:

微服務把原有的一個項目拆分成多個獨立工程,增加了開發、測試、運維、監控等的復雜度

微服務架構需要保證不同服務之間的數據一致性,引入了分布式事務和異步補償機制,為設計和開發帶來一定挑戰,開發人員和運維需要處理分布式系統的復雜性,需要更強的技術能力

微服務適用于復雜的大系統,對于小型應用使用微服務,進行盲目的拆分只會增加其維護和開發成本

3.2 java

① 介紹

Java創始人之一的 :馬傳斌

② 組成

Java包含下面部分:

語言、語法規范。關鍵字,如: if、for、class 等

源代碼 source code

依賴庫,標準庫(基礎)第三方庫(針對某些應用)。底層代碼太難使用且開發效率低,封裝成現成的庫

JVM虛擬機。將源代碼編譯為中間碼即字節碼后,再運行在JVM之上

由于各種操作系統ABl不一樣,采用編譯方式,需要為不同操作系統編譯成相應格式的二進制程序才能運行。

3.3 java實現動態網頁功能

① servlet

是Java Servlet 的簡稱,可以理解為是一個服務連接器,是用 Java 編寫的服務器端程序,具有獨立于平臺和協議的特性, 簡單的理解:servlet 就是一個中間件,包含了接口和方法,將客戶端和數據庫連接,從而實現動態網頁的創建。

② jsp

用于將 JSP 動態網頁翻譯成 Servlet 代碼。

全稱 Java Server Pages,是一種動態網頁開發技術。它使用 JSP 標簽在HTML網頁中插入 Java 代碼。標簽通常以 <% 開頭,以 %> 結束。也是一種 Java servlet,主要用于實現 Java web 應用程序的用戶界面部分。
JSP 通過網頁表單獲取用戶輸入數據、訪問數據庫及其他數據源,然后動態地創建網頁。

優點:架構簡單,比較適合小型項目開發

缺點:JSP 職責不單一,職責過重,不便于維護

3.4 jdk
① JDK?和 JRE?關系

Java SE APl: Java 基礎類庫開發接口

JRE: Java Runtime Environment 縮寫,指Java運行時環境,包含JVM +Java 核心類庫

JDK: Java Development Kit,即Java語言的軟件開發工具包JDK協議基于JRL(JavaResearch License)協議

③ Oracle JDK 版本

JDK也就是常說的J2SE,在1999年,正式發布了Java第二代平臺,發布了三個版本:

J2SE:標準版,適用于桌面平臺

J2EE:企業版,java在企業級開發所有規范的總和,共有13個大的規范,Servlet、Jsp都包含在JavaEE規范中

J2ME:微型版,適用于移動、無線、機頂盒等設備環境

2005年,Java的版本又更名為JavaSE、JavaEE、JavaME

JDK7 JDK8、JDK11是LTS(Long Term Support)

④ OpenJDK

OpenJDK是Sun公司采用GPL v2協議發布的JDK開源版本,于2009年正式發布。

OpenJDK使用GPL v2可以用于商業用途。目前由紅帽維護。OpenJDK也有在其基礎上的眾多發行版,比如阿里的Dragonwell。

相對來說,Oracle jDK具有更好的響應能力和JVM性能,更加穩定

在Centos 中,默認的是openjdk

2 Tomcat的構成組件

Tomcat由一系列的組件構成,其中的核心組件有三個:

①web容器:完成web服務器的功能。

②servlet容器:名稱為catalina,用于處理servlet代碼。

Servlet 是Java Servlet 的簡稱,可以理解為是一個服務連接器,是用 Java 編寫的服務器端程序,具有獨立于平臺和協議的特性, 簡單的理解:servlet 就是一個中間件,包含了接口和方法,將客戶端和數據庫連接,從而實現動態網頁的創建。

③JSP容器:用于將JSP動態網頁翻譯成servlet代碼

JSP全稱java server pages,是一種動態網頁開發技術。它使用JSP標簽再html網頁中插入java代碼。標簽通常以<%開頭,以%>結束。

JSP是一種java servlet,主要用于實現Java web 應用程序的用戶界面部分。

因此Tomcat是web應用服務器,也是一個servlet/JSP容器。Tomcat作為Servlet容器,負責處理客戶請求,把請求傳送給servlet,并將servlet的響應傳送回給客戶。

3 Tomcat的頂層架構

①tomcat中最頂級的容器是servlet,代表整個服務器,一個servlet可以包含至少一個service,用于具體提供服務。

②service主要包含兩個部分:connector和container。tomcat的心臟就是這兩個組件,這兩個組件的作用:第一個用于處理連接相關的事情,并提供socket于request和response相關的轉化;第二個是用于封裝和管理servlet,以及具體處理request請求。

③一個tomcat只有一個server,一個server可以包含多個service,一個service只有一個container,但是可以有多個connectors,因為一個服務可以有多個連接,如同時提供http和https鏈接,也可以提供向相同協議不同端口的連接。

④多個connector和一個container就形成一個service,有了service就可以對外提供服務了,但是service還要一個生存的環境,必須要有人能夠給他生命,掌握其生死大權,那就非server莫屬了,所以整個tomcat的生命周期由server控制。另外,上述的包含關系或者說是父子關系,都可以再tomcat的conf目錄下的server.xml配置文件中看出。

⑤server.xm1中定義<Server port="8005" shutdown="SHUTDOWN">這會讓Tomcat6啟動一個server實例(即一個JVM),它監聽在8005端口以接收“SHUTDOWN”命令,如果接收到了就會關閉Tomcat。各Server的定義不能使用同一個端口,這意味著如果在同一個物理機上啟動了多個Server實例,必須配置它們使用不同的端口。

4 Tomcat的核心功能

Tomcat的核心功能有兩個,分別是負責接收和反饋外部請求的連接器Connector,和負責處理請求的容器container。其中連接器和容器相輔相成,一起構成了基本的web服務service。每個tomcat服務器可以管理多個service。

Connector:負責對外接收和響應請求。它是Tomcat與外界的交通樞紐,監聽端口接收外界請求,并將請求處理后傳遞給容器做業務處理,最后將容器處理后的結果響應給外界。
Container:負責對內處理業務邏輯。其內部由 Engine、Host、Context和Wrapper 四個容器組成,用于管理和調用 Servlet 相關邏輯。
Service:對外提供的 Web 服務
Container 結構分析:
每個 Service 會包含一個 Container 容器。在 Container 內部包含了 4 個子容器:

5 個子容器的作用分別是:

Engine:引擎,用來管理多個虛擬主機,一個 Service 最多只能有一個 Engine;

Host:代表一個虛擬主機,也可以叫站點,通過配置 Host 就可以添加站點;

Context:代表一個 Web 應用,包含多個 Servlet 封裝器;

Wrapper:封裝器,容器的最底層。每一 Wrapper 封裝著一個 Servlet,負責對象實例的創建、執行和銷毀功能。

Engine、Host、Context 和 Wrapper,這四個容器之間屬于父子關系。

容器 由一個引擎可以管理多個虛擬主機。每個虛擬主機可以管理多個 Web 應用。每個 Web 應用會有多個 Servlet 封裝器。

6配置文件介紹及核心組件

?配置文件

目錄? ? ? ? 功能

bin? ? ? ? ? 存放啟動和關閉 Tomcat 的腳本文件,比較常用的是 catalina.sh、startup.sh、? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? shutdown.sh? ? ? ? ? ? 三個文件

conf? ? ? ? ? ? 存放 Tomcat 服務器的各種配置文件,比較常用的是 server.xml、context.xml、? ? ? ? ? ? ? ? ? ? ? ? ? ? ? tomcat-users.xml、web.xml 四個文件

lib? ? ? ? ? ?存放 Tomcat 服務器的 jar 包,一般不作任何改動,除非連接第三方服務,比如 redis,? ? ? ? ? ? ? ? ?? ?那?就需要添加相對應的 jar 包

logs? ? ? ? 存放 Tomcat 日志 catalina.out

temp? ? ? ?存放 Tomcat 運行時產生的文件

webapps?? ?存放項目資源的目錄

work? ? ? ? ?Tomcat 工作目錄,一般清除 Tomcat 緩存的時候會使用到(升級版本時注意要刪除里? ? ? ? ? ? ? ? ? 面的緩存)

日志文件

參考文檔: https://cwiki.apache.org/confluence/display/TOMCAT/Logging

日志格式: https://tomcat.apache.org/tomcat-9.0-doc/config/valve.html#Access_Logging

[root@localhost ~]#ls /usr/local/tomcat/logs/ -1
catalina.2020-07-14.log  #tomcat服務日志
catalina.out               #tomcat服務日志
host-manager.2020-07-14.log   #host manager管理日志
localhost.2020-07-14.log       #默認主機日志
localhost_access_log.2020-07-14.txt  ##默認主機訪問日志
manager.2020-07-14.log        #manager 管理日志

引擎

一般而言,引擎是一個程序或一套系統的支持部分。常見的程序引擎有游戲引擎、搜索引擎、殺毒引擎等

主頁文件優先級

index.html

index.htm

index.jsp

去瀏覽器去驗證

ROOT和test同級

如果想局部生效(ROOT中的優先級調整)可以將全局生效的主頁文件

(/usr/local/tomcat/conf/web.xml)優先級拷貝到項目目錄中的局部配置

(/usr/local/tomcat/webapps/ROOT/WEB-INF/web.xml)中

[root@localhost test]# vim WEB-INF/web.xml?

瀏覽器檢測

打包Jar包實際操作

war:WebApp打包,類zip格式文件,通常包括一個應用的所有資源,比如jsp,html,配置文件等

jar:EJB類文件的打包壓縮類zip格式文件,,包括很多的class文件, 網景公司發明

rar:資源適配器類打包文件,目前已不常用

ear:企業級WebApp打包,目前已不常用

傳統應用開發測試后,通常打包為war格式,這種文件部署到Tomcat的webapps目錄下,并默認會自動

瀏覽器檢測

搭建 JPress博客?

常見配置詳解——端口安全

#vim /usr/local/tomcat/conf/server.xml<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN"><Service name="Catalina"><Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" /><Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /><Engine name="Catalina" defaultHost="localhost"><Host name="localhost"  appBase="webapps"unpackWARs="true" autoDeploy="true"></Host></Engine></Service>
</Server>

8005是Tomcat的管理端口,默認監聽在127.0.0.1上。無需驗證就可發送SHUTDOWN (大小寫敏感)這個字符串,tomcat接收到后就會關閉此Server。

<Server port="8005" shutdown="44ba3c71d57f494992641b258b965f28">

此管理功能建議禁用,可將SHUTDOWN改為一串猜不出的字符串實現或者port修改成 0,會使用隨機端口如:36913

port設為-1等無效端口,將關閉此功能此行不能被注釋,否則無法啟動tomcat服務

AJP(Apache JServ Protocol)是定向包協議。因為性能原因,使用二進制格式來傳輸可讀性文本。Web服務器通過?TCP連接?和?Servlet容器連接。Apache旗下所有的東西都支持AJP協議,是Apache的特有協議

虛擬主機

可能有時候公司會有多個項目需要運行,那么肯定不可能是一臺服務器上運行多個Tomcat 服務,

這樣會消耗太多的系統資源。此時,就需要使用到 Tomcat 虛擬主機。例如現 在新增兩個域名

www.cxk.com www.wyb.com希望通過這兩個域名訪問到不同的項目內容。

Context

Context作用:

  • 路徑映射:將url映射至指定路徑,而非使用appBase下的物理目錄,實現虛擬目錄功能
  • 應用獨立配置,例如單獨配置應用日志、單獨配置應用訪問控制
#映射指定路徑
<Context path="/test" docBase="/data/test" reloadable="true" />
#映射站點的根目錄
<Context path="/" docBase="/data/website" reloadable="true" />
#還可以添加日志等獨立的配置
<Context path="/test" docBase="/data/test" reloadable="true" ><Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="localhost_test_log" suffix=".txt"pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Context>

path:指的是訪問的URL路徑,如果path與appBase下面的子目錄同名,context的docBase路徑優先更高

docBase:可以是磁盤文件的絕對路徑,也可以是相對路徑(相對于Host的appBase)

reloadable:true表示如果WEB-INF/classes或META-INF/lib目錄下.class文件有改動,就會將WEB應用重新加載。生產環境中,建議使用false來禁用。

二 Tomcat服務優化

1 Tomcat虛擬主機配置

①安裝jdk

https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

#注意需要注冊登錄后,才能下載JDK

準備jdk-8u291-linux-x64.rpm包

在部署Tomcat之前必須安裝好jdk,因為jdk是Tomcat運行的必要環境。

1. #關閉防火墻
systemctl stop firewalld
systemctl disable firewalld
setenforce 02. #將安裝 Tomcat 所需軟件包傳到/opt目錄下
apache-tomcat-9.0.16.tar.gz 
jdk-8u201-linux-x64.rpm3. #切換至/opt下,安裝JDK
cd /opt
yum install jdk-8u201-linux-x64.rpm -y

②設置jdk環境變量

1. #修改配置文件
vim /etc/profile.d/java.shexport JAVA_HOME=/usr/java/jdk1.8.0_291-amd64
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH2. #刷新配置文件
java -version                   #查看之前的版本
source /etc/profile.d/java.sh   #執行腳本
java -version                   #查看刷新后的版本
2 安裝啟動tomcat

①解壓tomcat程序

1. #切換至/opt下,解壓tomcat包
cd /opt
tar -zxf apache-tomcat-9.0.16.tar.gz 2. #將解壓后的包拷貝至/usr/local/下并重命名
cp -r apache-tomcat-9.0.16 /usr/local/tomcat

②啟動Tomcat

1. #切換至拷貝的目錄下,啟動tomcat
cd /usr/local/tomcat/
/usr/local/tomcat/bin/startup.sh2. #看是否啟動成功
ss -natp |grep 80803. #在網頁測試是否可以成功登錄
192.168.11.3:8080(本機IP地址)4. #關閉tomcat(記得再次打開
/usr/local/tomcat/bin/shutdown.sh

3 優化Tomcat啟動速度

第一次啟動tomcat可能會發現tomcat啟動很慢,默認情況下可能會需要幾十秒,可以修改jdk參數進行修改。

1. #修改jdk參數
vim /usr/java/jdk1.8.0_291-amd64/jre/lib/security/java.security
--117行--修改
securerandom.source=file:/dev/urandom2.重啟服務
/usr/local/tomcat/bin/shutdown.sh 
/usr/local/tomcat/bin/startup.sh 

/dev/urandom是/dev/random的非阻塞版本,即當熵池中沒有可取的隨機數時,讀取/dev/urandom設備仍然會返回一個隨機數,只是該隨機數的安全性理論上不高。如果應用對安全性要求很高,那么應該使用/dev/random

4 將Tomcat添加至服務
1. #先關閉服務
/usr/local/tomcat/bin/shutdown.sh2. #添加用戶設置屬主屬組
useradd -s /sbin/nologin tomcat
chown tomcat:tomcat /usr/local/tomcat/ -R3. #新建服務文件
vim /etc/systemd/system/tomcat.service
[Unit]
Description=Tomcat
#After=syslog.target network.target remote-fs.target nss-lookup.target
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.target4. #重新加載服務,并開啟,查看是否成功啟動
systemctl daemon-reload
systemctl start tomcat
ss -ntap |grep 8080

三 Tomcat服務優化

1 Tomcat虛擬主機配置

使用環境:很多時候公司會有多個項目需要運行,那么肯定不可能是一臺服務器上運行多個Tomcat服務,這樣會消耗太多的系統資源。此時,就需要使用到 Tomcat 虛擬主機。

現在新增兩個域名

www.mcb.com ? ? www.3721.com

①創建hanbao和zhaji項目目錄和文件

1. #創建 mcb 和 3721 項目目錄與文件
cd /usr/local/tomcat/webapps
mkdir mcb 37212. #創建文件內容
echo iphone>mcb/index.html
echo Coco >3721/index.html

②修改Tomcat主配置文件

2 Tomcat配置參數優化


Tomcat默認安裝下的缺省配置并不適合生產環境,它可能會頻繁出現假死現象需要重啟,只有通過不斷壓測優化才能讓它最高效率穩定的運行。優化主要包括三方面,分別為操作系統優化(內核參數優化),Tomcat配置文件參數優化,Java虛擬機(JVM)調優。

常用的優化參數

補充:


? ? ? ? ? ? ? ? ? ? ? ??

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

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

相關文章

VMwareWorkstation17.0虛擬機搭建WindowsXP虛擬機(完整安裝步驟詳細圖文教程)

VMwareWorkstation17.0虛擬機搭建WindowsXP虛擬機&#xff08;完整安裝步驟詳細圖文教程&#xff09; 一、Windows XP1.Windows XP簡介2.Windows XP 的下載地址 二、配置 Windows XP 虛擬機運行環境1.新建虛擬機2.選擇類型配置3.插入WinXP光盤映像文件(ISO)4.選擇操作系統5.命名…

Home Assistant:基于Python的智能家居開源系統詳解

Home Assistant&#xff1a;基于Python的智能家居開源系統詳解 在數字化和智能化的時代&#xff0c;智能家居系統成為了現代家庭的新寵。它們能夠讓我們更加方便地控制家中的各種設備&#xff0c;實現自動化和個性化的居住體驗。其中&#xff0c;Home Assistant作為一款基于Pyt…

美易官方:3月1日美股成交額前20

3月1日&#xff0c;美股市場熱鬧非凡&#xff0c;成交額前20的公司股票交易活躍&#xff0c;其中&#xff0c;英偉達&#xff08;NVIDIA&#xff09;的股價收在800美元之上&#xff0c;創下了歷史新高。這一天的股市走勢充分展示了投資者對于科技股的熱烈追捧&#xff0c;同時也…

手機NFC錄入門禁數據,實現手機開門

近場通信&#xff08;Near Field Communication&#xff0c;簡稱NFC&#xff09;&#xff1a; 是一種新興的技術&#xff0c;使用了NFC技術的設備&#xff08;例如移動電話&#xff09;可以在彼此靠近的情況下進行數據交換&#xff0c;是由非接觸式射頻識別&#xff08;RFID&am…

【二分】二分模板+二分題目

一、樸素二分 . - 力扣&#xff08;LeetCode&#xff09;. - 備戰技術面試&#xff1f;力扣提供海量技術面試資源&#xff0c;幫助你高效提升編程技能,輕松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/binary-search/description/ int left 0, right nums.…

【leetcode】隨機鏈表的復制

大家好&#xff0c;我是蘇貝&#xff0c;本篇博客帶大家刷題&#xff0c;如果你覺得我寫的還不錯的話&#xff0c;可以給我一個贊&#x1f44d;嗎&#xff0c;感謝?? 點擊查看題目 思路: struct Node* copyRandomList(struct Node* head) {struct Node* curhead;//1.copy原鏈…

MWC 2024丨美格智能CEO杜國彬出席中國聯通創新成果發布會并發表主題演講

2月26日&#xff0c;中國聯通在MWC2024 巴塞羅那期間舉辦了以“算網為基&#xff0c;智領未來”為主題的創新成果發布會&#xff0c;集中展示最新的創新成果與最佳實踐。 中國通信標準化協會理事長聞庫、GSMA首席財務官Louise Easterbrook、中國聯通副總經理梁寶俊、華為ICT銷…

每日一“類“:深入理解Qt的心臟《QObject》

Qt框架以其強大的跨平臺能力和豐富的用戶界面元素而廣受開發者歡迎&#xff0c;而QObject類無疑是Qt框架心臟的所在。本文將深入探討QObject&#xff0c;揭示其提供的核心功能以及如何在Qt項目中有效利用這個基類。 核心功能 信號與槽 Qt獨特的信號與槽機制是其事件通信的基…

AWS 認證報名考試流程

AWS認證的考試包括&#xff0c;可以申請線上或者線下考試。 考試類型 線上&#xff1a; 優點&#xff1a;方便快捷無需通勤&#xff0c;隨時約隨時考&#xff0c;基本上每天都可以 缺點&#xff1a;對環境要求較高&#xff0c;屋子里只能有自己&#xff0c;而且不能有其他聲音…

yolov9 瑞芯微芯片rknn部署、地平線芯片Horizon部署、TensorRT部署

特別說明&#xff1a;參考官方開源的yolov9代碼、瑞芯微官方文檔、地平線的官方文檔&#xff0c;如有侵權告知刪&#xff0c;謝謝。 模型和完整仿真測試代碼&#xff0c;放在github上參考鏈接 模型和代碼。 之前寫過yolov8檢測、分割、關鍵點模型的部署的多篇博文&#xff0c;y…

如何安裝VM ware 17 pro 和Ubuntu安裝

下載VM ware軟件 下載地址&#xff1a;Windows VM | Workstation Pro | VMware按步驟安裝&#xff0c;安裝成功后&#xff0c;打開軟件&#xff0c;填寫證書秘鑰 秘鑰&#xff1a;MC60H-DWHD5-H80U9-6V85M-8280D&#xff08;親測有效&#xff09;下載ubuntu 參考博客&#xff1…

軟考中級 軟件設計師備考經驗

考試介紹 軟考中級的軟件設計師需要考兩個部分&#xff0c;選擇題和大題&#xff0c;每科滿分75&#xff0c;需要在同一次考試中兩科同時大于等于45分才算通過。考試的內容包括計算機組成原理、數據結構、數據庫、專業英語、信息安全、計算機網絡等&#xff0c;范圍比較廣但考…

Linux中systemv共享內存

目錄 1.原理 2.接口 1.shmget(share_memory_get獲得共享內存) 2.ftok 3.shmat(share_memory_attaintion掛接到物理內存上) 4.key和shmid的區別 5.ipc 指令 6.shmdt函數&#xff08;share_memory_detach取消掛接&#xff09; 7.shmctl函數&#xff08;share_memory_cont…

C# 數組與集合

C# 數組與集合 Array using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace _16._1_Array {internal class Program{static void Main(string[] args){int[] ints1 { 1, 2, 3, 4, 5,6,7,8 };//將…

GenAI助力DevOps,塑造軟件工程的未來

自 2022 年以來&#xff0c;GenAI 無疑已成為一種普遍的技術趨勢。在本文中&#xff0c;我們將探索 DevOps 中令人興奮的 GenAI 領域&#xff0c;討論其潛在優勢、局限性、新興趨勢和最佳實踐&#xff0c;深入了解 AI 支持的 DevOps 前沿世界&#xff0c;并探索這一強大組合如何…

ObjectFactory學習

簡介 在Spring框架中&#xff0c;ObjectFactory是一個功能接口&#xff0c;它定義了一個簡單的方法來獲取對象的實例。ObjectFactory接口通常用于工廠模式和依賴注入中&#xff0c;允許延遲對象創建和配置&#xff0c;以及在運行時動態地決定要返回的對象實例。 源碼 Functi…

Laravel Octane 和 Swoole 協程的使用分析二

又仔細研究了下 Octane 源碼和 Swoole 的文檔&#xff0c;關于前幾天 Laravel Octane 和 Swoole 協程的使用分析中的猜想&#xff0c;得到進一步驗證&#xff1a; Swoole 的 HTTP Server 啟動后會創建一個 master 進程和一個 manager 進程&#xff1b;master 進程又會創建多個…

智能咖啡廳助手:人形機器人 +融合大模型,行為驅動的智能咖啡廳機器人(機器人大模型與具身智能挑戰賽)

智能咖啡廳助手&#xff1a;人形機器人 融合大模型&#xff0c;行為驅動的智能咖啡廳機器人(機器人大模型與具身智能挑戰賽) “機器人大模型與具身智能挑戰賽”的參賽作品。的目標是結合前沿的大模型技術和具身智能技術&#xff0c;開發能在模擬的咖啡廳場景中承擔服務員角色并…

常用備注(記錄中...)

文章目錄 docker測試網絡可達性檢查端口是否開放PgSql docker docker logout IP地址:端口號 docker login IP地址:端口號橋接模式bridge啟動容器 docker run -d -p 外部端口號:內部端口號(配置文件中的端口號) --name 容器名稱 -v /data/docker/conf/application.yml:/app/con…

javaWebssh在線授課輔導系統myeclipse開發mysql數據庫MVC模式java編程計算機網頁設計

一、源碼特點 java ssh在線授課輔導系統是一套完善的web設計系統&#xff08;系統采用ssh框架進行設計開發&#xff09;&#xff0c;對理解JSP java編程開發語言有幫助&#xff0c;系統具有完整的源代碼和數據庫&#xff0c;系統主要采用 B/S模式開發。開發環境為TOMCAT7.…