Tomcat部署解析及配置優化

weixin_50345481發表於2020-12-03


前言

不同於Apache和Nginx,Tomcat支援動態網頁,網頁型別的字尾名為.jsp
,本文就Tomcat的相關配置優化進行了簡單的解析說明。


一 Tomcat

1.1 網頁服務配置解析

靜態網頁:Apache,Ngint支援,網頁型別字尾.html .htm
動態網頁:Tomcat支援,網頁型別字尾.jsp

1.2 Tomcat介紹

免費的,開放原始碼的Web應用伺服器
Apache軟體基金會(Apache Software Foundation)Jakarta專案中的一個核心專案
由Apache,Sun和一些公司及個人共同開放而成
深受Java愛好者的喜愛,並得到部分軟體開發商的認可
目前比較流行的Web應用伺服器

1.3 Tomcat核心元件

在這裡插入圖片描述

1.4 server:tomcat例項

1.注意一個JVM(java虛擬機器)只能有一個tomact例項

service:接收請求到處理請求的所有元件的集合

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

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

engine:是一個容器,是用來將使用者的請求發往它下面的虛擬主機的,engine是載入虛擬主機的一個容器
hosts:是虛擬主機的容器
context:管理servlet。是host虛擬主機的實體內容的指向
servlet:是包含html的java檔案,其實是java語言的一個類

3.jsp與servlet的區別

jsp:是包含java程式的html檔案。展示前端頁面的
servlet:是包含html的java檔案,後臺實際執行具體操作的元件

1.5 Tomcat組成圖示

在這裡插入圖片描述

1.5.1 用法示例

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

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

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

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

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

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

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

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

9.Engine把Ht tpServletResponse物件返回Connector;

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

二 Tomcat 安裝部署

2.1 解析

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

2.2 配置安裝Tomcat流程

1.解壓縮

[root@server1 ~]# ls -lh
[root@server1 ~]# tar zvxf jdk-8u91-linux-x64.tar.gz 
[root@server1 ~]# mv jdk1.8.0_91/ /usr/local/java
[root@server1 ~]# cd /usr/local/java/
[root@server1 java]# ls -lh

在這裡插入圖片描述

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

etc/profile:此檔案為系統的每個使用者設定環境資訊,當使用者第一次登入時,該檔案被執行並從/etc/profile.d目錄的配置檔案中搜集shell的設定.

注:在這裡我們設定是為所有使用者可使用的全域性變數。

2.設定環境變數

[root@server1 ~]# vi /etc/profile
[root@server1 ~]# source /etc/profile  將java指令碼匯入到環境變數使其生效
[root@server1 ~]# echo $PATH         

新增
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/bin
環境變數

在這裡插入圖片描述
3.檢視版本

[root@server1 ~]# java -version  

在這裡插入圖片描述
4.配置java指令碼,測試java是否正常執行

[root@server1 ~]# vi abc.java
[root@server1 ~]# javac abc.java 
[root@server1 ~]# java abc

public class abc {

        public static void main (String[] args) {
               System.out.println ("hello world!!!");
}
}

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

5.解壓縮Tomcat

[root@server1 ~]# tar zvxf apache-tomcat-8.5.16.tar.gz 
[root@server1 ~]# mv apache-tomcat-8.5.16 /usr/local/tomcat8   
[root@server1 ~]# cd /usr/local/tomcat8/

6.檢視tomcat啟動,關閉指令碼

[root@server1 ~]# cd /usr/local/tomcat8/
[root@server1 tomcat8]# ls -lh
[root@server1 tomcat8]# cd bin/
[root@server1 bin]# ls -lh
[root@server1 bin]# vi startup.sh       啟動指令碼
[root@server1 bin]# vi shutdown.sh   關閉指令碼

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

7.建立軟連結

[root@server1 ~]# ln -s /usr/local/tomcat8/bin/startup.sh /usr/bin/tomcatup
[root@server1 ~]# ln -s /usr/local/tomcat8/bin/shutdown.sh /usr/bin/tomcatdown
[root@server1 ~]# tomcatup     服務啟動
[root@server1 ~]# netstat -anpt | grep 8080   檢視8080埠狀態(java) 

在這裡插入圖片描述

2.3 建立測試頁面,登入訪問

1.建立站點目錄

   [root@server1 ~]# mkdir -pv /web/app1
   [root@server1 ~]# mkdir -p /web/app2

   [root@server1 ~]# vi /web/app1/index.jsp
   [root@server1 ~]# cd /web/app1


新增
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>JSP Web 1</head>
<body>
<% out.println("this is apple,Welcome!!!");%>
<div>動態頁面</div><br/><img src="a.jpg" />
</body>
</html>

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

在這裡插入圖片描述
2.建立目錄連線

[root@server1 ~]# vi /usr/local/tomcat8/conf/server.xml 
[root@server1 ~]# tomcatdown     服務關閉
[root@server1 ~]# tomcatup         服務重啟
[root@server1 ~]# netstat -anpt | grep 8080  檢視埠狀態

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

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

在瀏覽器上http://20.0.0.10:8080
本機地址:埠號

在這裡插入圖片描述
以上完成Tomcat本地訪問通過ip地址可訪問

2.4 Tomcat本地訪問通過域名可訪問

1.配置檔案

[root@server1 ~]# vi /usr/local/tomcat8/conf/server.xml 
[root@server1 ~]# tomcatdown 
[root@server1 ~]# tomcatup 
[root@server1 ~]# netstat -anpt | grep 8080

在這裡插入圖片描述

修改localhost為www.aa.com
在這裡插入圖片描述

在這裡插入圖片描述

在另一臺客戶機上進行訪問測試

2.先新增對映記錄

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

20.0.0.10   www.aa.com

在這裡插入圖片描述

在瀏覽器上訪問
www.aa.com:8080
在這裡插入圖片描述

三 虛擬主機配置

1.有多個專案同時執行時,一臺伺服器不建議執行多個Tomcat服務,需要配置虛擬主機

2.通過兩個域名訪問到不同的專案內容

3.步驟

1.建立www和bbs專案目錄和檔案
2.修改Tomcat主配置檔案
3.重啟Tomcat服務
4.訪問測試

Connector容器結束方式

  <Connector> 或者 <Connector> ... --/>
    ...
 </Connector>         

3.1 tomcat虛擬主機:基於域名的虛擬主機和基於埠的虛擬主機

3.1.1 基於域名

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

基於域名
新增一個新的容器配置

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


 <Host name="www.ab.com"  appBase="webapps"
         unpackWARs="true" autoDeploy="true">
  
   <Context docBase="/web/app2" path="" reloadable="false">
   </Context>
   </Host>

在這裡插入圖片描述

2.配置app2的頁面,新增圖片b.jpg到/web/app2 中

[root@server1 ~]# cd /web/app1
[root@server1 app1]# cp index.jsp /web/app2
[root@server1 app1]# cd /web/app2
[root@server1 app2]# ls -lh

3.修改頁面配置

[root@server1 app2]# vi index.jsp 
[root@server1 app2]# tomcatdown 
[root@server1 app2]# tomcatup 
[root@server1 app2]# netstat -anpt | grep 8080 

 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>JSP Web 2</head>
<body>
<% out.println("this is pear,Welcome!!!");%>
<div>動態頁面2</div><br/><img src="b.jpg" />
</body>
</html>

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

在另一臺客戶機上進行訪問測試
先新增對映記錄

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

www.ab.com

在這裡插入圖片描述

在瀏覽器上訪問
www.ab.com:8080
在這裡插入圖片描述

3.1.2 基於埠

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

[root@server1 ~]# vi /usr/local/tomcat8/conf/server.xml  
[root@server1 ~]# tomcatdown 
[root@server1 ~]# tomcatup 
[root@server1 ~]# netstat -anpt | grep java
[root@server1 ~]# netstat -anpt | grep 8090
[root@server1 ~]# netstat -anpt | grep 8080

先刪除之前的配置檔案 6dd
</Host>
           <Host name="www.ab.com"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

      <Context docBase="/web/app2" path="" reloadable="false">
      </Context>

在這裡插入圖片描述

新增

 <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>

在這裡插入圖片描述
在這裡插入圖片描述
在瀏覽器上
www.aa.com:8080
在這裡插入圖片描述
在瀏覽器上
www.ab.com:8090
在這裡插入圖片描述

四 Tomcat優化

作業系統優化(核心引數優化)
Tomcat配置檔案引數優化
Java虛擬機器(JVM)調優

4.1 Tomcat配置檔案引數優化

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": 對於以下的瀏覽器,不啟用壓縮

4.1 配置優化

修改新增

 maxThreads="300" minSpareThreads="10" maxSpareThreds="20" />

在這裡插入圖片描述

新增

URIEncoding="UTF-8"

在這裡插入圖片描述
新增

connectionTimeout="20000“(20秒)
 enablelookups="false"
 connectionUploadTimeout="15000"

在這裡插入圖片描述


總結

通過以上了解,對Tomcat的相關知識有了更加深入的理解學習。

相關文章