Tomcat部署及優化

繁星若渺發表於2020-12-07

1、Tomcat介紹

■ 免費的、開放原始碼的Web應用伺服器

■ Apache軟體基金會(Apache Software Foundation)Jakarta專案中的一個核心專案

■ 由Apache、Sun和一些公司及個人共同開發而成

■ 深受Java愛好者的喜愛,並得到部分軟體開發商的認可

■ 目前比較流行的Web應用伺服器

2、Tomcat核心元件

在這裡插入圖片描述

3、Tomcat處理請求過程

在這裡插入圖片描述

4、 Tomcat元件的解釋

■ server:tomcat例項
注意一個JVM(java虛擬機器)只能有一個tomact例項
service:接收請求到處理請求的所有元件的集合

■ service元件分為connector(聯結器)和container(容器)兩部分

● connector負責接受使用者請求和訊息報文的,將訊息報文發往container
● container是容器對外對映的介面,用於封閉和管理servlet

● engine:是一個容器,是用來將使用者的請求發往它下面的虛擬主機的,● engine是載入虛擬主機的一個容器

● hosts:是虛擬主機的容器

● context:管理servlet。是host虛擬主機的實體內容的指向

● servlet:是包含html的java檔案,其實是java語言的一個類

■ jsp與servlet的區別

● jsp:是包含java程式的html檔案。展示前端頁面的

● servlet:是包含html的java檔案,後臺實際執行具體操作的元件

5、Tomcat請求處理解析流程

● 使用者在瀏覽器中輸入網址localhost:8080/ test/index. jsp, 請求被髮送到本機埠8080, 被在那裡監聽的Coyote HTTP/1.1 Connector獲得;

● Connector 把該請求交給它所在的Service 的Engine (Container) 來處理,並等待Engine 的回應;

● Engine 獲得請求localhost/test/ index. jsp, 匹配所有的虛擬主機Host;

● Engine 匹配到名為localhost 的Host (即使匹配不到也把請求交給該Host 處理,因為該Host被定義為該Engine的預設主機),名為localhost的Host獲得請求/test/ index. jsp, 匹配它所擁有的所有Context。 Host 匹配到路徑為/test 的Context (如果匹配不到就把該請求交給路徑名為“”的Context去處理

● path=“/test”的Context 獲得請求/ index. jsp, 在它的mapping table中尋找出對應的Servlet。Context 匹配到URL Pattern 為*. jsp 的Servlet, 對應於JspServlet類;

● 構造HttpServletRequest 物件和HttpServletResponse 物件,作為引數呼叫JspServlet的doGet (資料查詢)或doPost(資料新增),執行業務邏輯、資料儲存等;

● Context把執行完之後的HttpServletResponse物件返回給Host;

● Hos t把Ht tpServl etResponse物件返回給Engine;

● Engine把Ht tpServletResponse物件返回Connector;

● Connector把HttpServletResponse 物件返回給客戶Browser。

■ tomcat 的作用
Tomcat 是Apache下的一個子專案,它具備Web 伺服器的所有功能,不僅可以監聽接受請求並響應靜態資源,而且可以在後端執行特定規範的Javla程式碼Servlet,同時將執行的結果以HTML程式碼的形式返回客戶端。

6、設定環境變數

環境變數是和Shell緊密相關的,使用者登入系統後就啟動了一個Shell。對於Linux來說一般是bash,但也可以重新設定或切換到其它的Shell。 對於UNIX,可能是CShelll。環境變數是通過Shell命令來設定的,設定好的環境變數又可以被所有當前使用者所執行的程式所使用。對於bash這個Shell程式來說,可以通過變數名來訪問相應的環境變數,通過export來設定環境變數。

etc/profile:此檔案為系統的每個使用者設定環境資訊,當使用者第一次登入時,該檔案被執行。
並從/etc/profile.d目錄的配置檔案中搜集shell的設定.
注:在這裡我們設定是為所有使用者可使用的全域性變數。

一、tomcat部署安裝

■ 匯入軟體包
jdk-8u91-linux-x64.tar
apache-tomcat-8.5.16.tar

在這裡插入圖片描述

1.tar解包

[root@server4 ~]# tar zvxf jdk-8u91-linux-x64.tar.gz
[root@server4 ~]# mv jdk1.8.0_91/ /usr/local/java   #解壓縮軟體包到/usr/local/下生成java目錄
[root@server4 ~]# cd /usr/local/java/
[root@server4 java]# ll

在這裡插入圖片描述

[root@server4 java]# cd
[root@server4 ~]# vi /etc/profile          #末行新增
export JAVA_HOME=/usr/local/java    #定義變數並設為全域性變數,設定JAVA的根目錄
export JAVA_JRE=/usr/local/java/jre  
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/lib:$JAVA_JRE/bin:$JAVA_JRE/lib   #引用環境變數
[root@server4 ~]# source /etc/profile    #變數當前環境立即生效
[root@server4 ~]# echo $PATH

在這裡插入圖片描述

[root@server4 ~]# java -version

在這裡插入圖片描述

2.編譯java指令碼,測試java是否正常執行

[root@server4 ~]# vi abc.java
public class abc {

        public static void main (String[] args) {
               System.out.println ("hello world!!!");
}
}
[root@server4 ~]# javac abc.java   #編譯
[root@server4 ~]# java abc          #執行

在這裡插入圖片描述
在這裡插入圖片描述

3.解壓縮Tomcat

[root@server4 ~]# tar zvxf apache-tomcat-8.5.16.tar.gz 
[root@server4 ~]# mv apache-tomcat-8.5.16 /usr/local/tomcat8   #生成tomcat8目錄
[root@server4 ~]# cd /usr/local/tomcat8/bin
[root@server4 bin]# ls -lh

在這裡插入圖片描述

[root@server4 bin]# cd
[root@server4 ~]# ln -s /usr/local/tomcat8/bin/startup.sh /usr/bin/tomcatup
[root@server4 ~]# ln -s /usr/local/tomcat8/bin/shutdown.sh /usr/bin/tomcatdown
[root@server4 ~]# tomcatup       #啟動服務

在這裡插入圖片描述

[root@server4 ~]#  netstat -anpt | grep 8080

在這裡插入圖片描述

4、加入測試頁面,登入訪問

[root@server4 ~]# mkdir -pv /web/app1           #顯示過程的巢狀建立web目錄
[root@server4 ~]# mkdir -p /web/app2
[root@server4 ~]# vi /web/app1/index.jsp          #建立主頁新增:

在這裡插入圖片描述
■ #%%:表示區間
#這個jsp中引入的page標籤
#language表示語言是java
#import類似於java類中的import就是把包匯入進來,這樣在jsp才可以呼叫包中的類
#pageEncoding表示頁面的編碼格式

[root@server4 ~]# cd /web/app1 

在這裡插入圖片描述

5、配置檔案中引用目錄

[root@server4 app1]# vi /usr/local/tomcat8/conf/server.xml

在這裡插入圖片描述

■ #docBase:wed應用的文件基準目錄
#reloadable:本項為true時,當web.xml或者class有改動的時候都會自動重新載入不需要重新啟動服務(所謂的支援熱釋出功能)
#path=“”指定訪問路徑URI(虛擬目錄名),訪問url路徑下是否跟內容

[root@server4 app1]# cd
[root@server4 ~]# tomcatdown
[root@server4 ~]# tomcatup
[root@server4 ~]# tomcatdown
[root@server4 ~]# tomcatup
[root@server4 ~]# netstat -anpt | grep 8080

6、通過埠號進行瀏覽器訪問頁面測試

在這裡插入圖片描述

7、通過域名進行瀏覽器訪問頁面測試

7.1 進入配置檔案修改域名

[root@server4 ~]#  vi /usr/local/tomcat8/conf/server.xml 

在這裡插入圖片描述

[root@server4 ~]#  tomcatdown
[root@server4 ~]#  tomcatup
[root@server4 ~]#  netstat -anpt | grep 8080

7.2、客戶機新增對映記錄

在這裡插入圖片描述

7.3、輸入域名進行訪問,測試頁面

在這裡插入圖片描述

二、虛擬主機配置

有多個專案同時執行時,一臺伺服器不建議執行多個Tomcat服務,需要配置虛擬主機
通過兩個域名訪問到不同的專案內容

步驟:
1.建立www和bbs專案目錄和檔案
2.修改Tomcat主配置檔案
3.重啟Tomcat服務
4.訪問測試
Connector容器結束方式:
或者 …/>

2.1、Tomcat虛擬主機(基於域名;基於埠)

2.11 基於域名

在已存在的元件中增加一個新的容器配置

[root@server4 ~]#  vi /usr/local/tomcat8/conf/server.xml

在這裡插入圖片描述

加入測試頁面,登入訪問

[root@server4 ~]#  vi /usr/local/tomcat8/conf/server.xml 
[root@server4 ~]#  cd /web/app1
[root@server4 app1]# cp index.jsp /web/app2
[root@server4 app1]# cd /web/app2 
[root@server4 app2]# vi index.jsp

在這裡插入圖片描述

[root@server4 app2]# tomcatdown 
[root@server4 app2]# tomcatup
[root@server4 app2]#  netstat -anpt | grep 8080

在這裡插入圖片描述

客戶機新增對映記錄

[root@server1 ~]# vi /etc/hosts

在這裡插入圖片描述

輸入域名進行訪問,測試頁面

在這裡插入圖片描述

2.12、基於埠

需要建立元件及裡面的各個元件(元件需完整)

[root@server4 app2]#  vi /usr/local/tomcat8/conf/server.xml 
先刪除之前的配置檔案:
</Host>
           <Host name="www.ab.com"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

      <Context docBase="/web/app2" path="" reloadable="false">
      </Context>
再在</Service>下新增:
 <Service name="Catalina2">
   <Connector port="8090" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/>
    <Engine name="Catalina2" defaultHost="localhost">
     <Host name="www.ab.com" appBase="webapps" unpackWARs="true" autoDeploy="true">
      <Context docBase="/web/app2" path="" reloadable="false">
     </Context>
     </Host>
  </Engine>
 </Service>

在這裡插入圖片描述

[root@server4 app2]#  netstat -anpt | grep 8080
[root@server4 app2]#  netstat -anpt | grep 8090

在這裡插入圖片描述

[root@server4 app2]# tomcatdown 
[root@server4 app2]# tomcatup

在這裡插入圖片描述
在這裡插入圖片描述

三、配置檔案引數優化

Tomcat主配置檔案server.xml常用的配置引數

Tomcat配置檔案引數優化
1.maxThreads: Tomcat 使用執行緒來處理接收的每個請求,這個值表示Tomcat 可建立的 最大的執行緒數,預設值是200。

2.minSpareThreads: 最小空閒執行緒數,Tomcat 啟動時的初始化執行緒數,表示即使沒有人使用也開這麼多空執行緒等待,預設值是10。

3.maxSpareThreads: 最大備用執行緒數,一旦建立的執行緒超過這個值,Tomcat就會關閉不再需要的socket 執行緒。預設值是 -1 (無限制),一般不需要指定。

4.URIEncoding: 指定Tomcat 容器的URL編碼格式,Tomcat 語言編碼格式這塊不如其它Web 伺服器軟體配置方便,需要分別指定。

5.connnectionTimeout: 網路連線超時,單位:毫秒,設定為0表示永不超時,這樣設定有隱患的。通常預設20000毫秒(20秒)就可以。

6.enableLookups: 是否反查域名,以返回遠端主機的主機名,取值為: true 或false,如果設定為false,則直接返回IP地址,為了提高處理能力,應設定為false。

7.disableUploadTimeout:上傳時是否使用超時機制。應設定為true。

8.connectionUploadTimeout:上傳超時時間,畢竟檔案上傳可能需要消耗更多的時間,該引數需要根據自己的業務需要自行調整,以使Servlet 有較長的時間來完成它的執行,需要與上一個引數一起配合使用才會生效。

9.acceptCount:指定當所有可以使用的處理請求的執行緒都被使用時,可傳入連線請求的最大佇列長度,超過這個數的請求將不予處理,預設為100個。

10.compression: 是否對響應的資料進行GZIP 壓縮,off表示禁止壓縮、on表示允許壓縮(文字將被壓縮)、force 表示所有情況下都進行壓縮,預設值為off。壓縮資料後可以有效的減少頁面的大小,一般可以減小1/3 左右,因而節省頻寬。

11.compressionMinSize: 表示壓縮響應的最小值,只有當響應報文大小大於這個值的時候才會對報文進行壓縮,如果開啟了壓縮功能,預設值就是2048。(1k)

12.compressableMimeType:壓縮型別,指定對哪些型別的檔案進行資料壓縮。

13.noCompressionUserAgents=” gozilla, traviata": 對於以下的瀏覽器,不啟用壓縮

相關文章