Tomcat—部署配置及優化(安裝部署;虛擬主機配置;優化)

康丶發表於2020-12-07

網頁服務總結:
靜態網頁:Apache,Ngint支援,網頁型別字尾.html .htm
動態網頁:Tomcat支援,網頁型別字尾.jsp
php也可以,但是需要依賴架構

一、Tomcat

1.1 Tomcat介紹及作用

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

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

1.2 Tomcat核心元件

在這裡插入圖片描述

1.3 Tomcat組成圖示

在這裡插入圖片描述

1.31 Tomcat組成解釋

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.32 Tomcat請求處理解析

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 安裝Toncat

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

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

在這裡插入圖片描述

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

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

[root@server1 java]# cd
[root@server1 ~]# 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@server1 ~]# source /etc/profile     #變數立即生效
[root@server1 ~]# echo $PATH       #檢視當前變數
[root@server1 ~]# java -version     #檢視版本

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

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

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

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

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

4.解壓縮Tomcat

[root@server1 ~]# tar zvxf apache-tomcat-8.5.16.tar.gz 
[root@server1 ~]# mv apache-tomcat-8.5.16 /usr/local/tomcat8   #生成tomcat8目錄
[root@server1 ~]# cd /usr/local/tomcat8/bin
[root@server1 bin]# ls -lh   #檢視tomcat啟動和關閉指令碼

在這裡插入圖片描述

5.指令碼建立軟連結並啟動

[root@server1 bin]# cd
[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埠狀態(tomcat預設埠) 

在這裡插入圖片描述

2.2 加入測試頁面,登入訪問

1.建立站點目錄

[root@server1 ~]# mkdir -pv /web/app1     #顯示過程的巢狀建立web目錄
[root@server1 ~]# mkdir -p /web/app2
[root@server1 ~]# vi /web/app1/index.jsp   #建立主頁
新增:
<%@ 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表示頁面的編碼格式

[root@server1 ~]# cd /web/app1    #放入a.jpg圖片

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

2.配置檔案中引用目錄

[root@server1 app1]# cd
[root@server1 ~]# vi /usr/local/tomcat8/conf/server.xml 
新增:

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


#docBase:wed應用的文件基準目錄
#reloadable:本項為true時,當web.xml或者class有改動的時候都會自動重新載入不需要重新啟動服務(所謂的支援熱釋出功能)
#path=“”指定訪問路徑URI(虛擬目錄名),訪問url路徑下是否跟內容
[root@server1 ~]# tomcatdown       #關閉服務
[root@server1 ~]# tomcatup          #重啟服務
[root@server1 ~]# netstat -anpt | grep 8080        #檢視埠狀態

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

瀏覽器訪問http://20.0.0.11:8080 #本機地址:埠號
在這裡插入圖片描述

2.3 Tomcat本地可通過域名訪問

1.配置檔案

[root@server1 ~]# vi /usr/local/tomcat8/conf/server.xml   #修改
Host name="www.aa.com"
[root@server1 ~]# tomcatdown 
[root@server1 ~]# tomcatup 
[root@server1 ~]# netstat -anpt | grep 8080

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

2.客戶機新增對映記錄

[root@server2 ~]# vi /etc/hosts      #新增
20.0.0.11   www.aa.com

在這裡插入圖片描述

瀏覽器訪問www.aa.com:8080 #訪問不了,關閉防火牆
在這裡插入圖片描述

三、虛擬主機配置

有多個專案同時執行時,一臺伺服器不建議執行多個Tomcat服務,需要配置虛擬主機
通過兩個域名訪問到不同的專案內容
步驟
1.建立www和bbs專案目錄和檔案
2.修改Tomcat主配置檔案
3.重啟Tomcat服務
4.訪問測試

Connector容器結束方式
或者 …/>

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

3.11 基於域名

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

[root@server1 ~]# 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>
   </Host>

在這裡插入圖片描述

2.加入測試頁面,登入訪問

[root@server1 ~]# cd /web/app1
[root@server1 app1]# cp index.jsp /web/app2   #拷貝網頁到app2
[root@server1 app1]# cd /web/app2   
[root@server1 app2]# ls -lh
[root@server1 app2]# vi index.jsp    #修改,並放入b.jpg圖片
<%@ 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@server1 app2]# tomcatdown 
[root@server1 app2]# tomcatup 
[root@server1 app2]# netstat -anpt | grep 8080 

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

3.客戶機新增對映記錄

[root@server2 ~]# vi /etc/hosts  #新增
www.ab.com

在這裡插入圖片描述

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

3.12 基於埠

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

[root@server1 ~]# 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@server1 ~]# tomcatdown 
[root@server1 ~]# tomcatup 
[root@server1 ~]# netstat -anpt | grep java
[root@server1 ~]# netstat -anpt | grep 8090
[root@server1 ~]# netstat -anpt | grep 8080

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

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

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

四、Tomcat優化

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

4.1 配置檔案引數優化

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

相關文章