Tomcat部署解析及配置優化
文章目錄
前言
不同於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的相關知識有了更加深入的理解學習。
相關文章
- Tomcat—部署配置及優化(安裝部署;虛擬主機配置;優化)Tomcat優化
- Tomcat部署及優化Tomcat優化
- Tomcat常用優化配置Tomcat優化
- Redis優化配置解析Redis優化
- Tomcat 部署及最佳化詳細教程!Tomcat
- nginx部署及簡單優化Nginx優化
- JAVA TOMCAT域名解析配置JavaTomcat
- 效能優化|Tomcat 服務優化優化Tomcat
- 【轉】Docker部署Tomcat及Web應用DockerTomcatWeb
- Redis 主從複製與哨兵優化部署解析Redis優化
- 系統優化怎麼做-Tomcat優化優化Tomcat
- Linux中Vsftpd服務的部署及優化LinuxFTP優化
- HBase記憶體配置及JVM優化記憶體JVM優化
- Tomcat安裝與優化Tomcat優化
- 【Tomcat】Tomcat伺服器核心配置說明及標籤Tomcat伺服器
- Centos安裝tomcat9及配置CentOSTomcat
- tomcat架構分析及配置詳解Tomcat架構
- Tomcat配置及網站建立教程(IDEA)Tomcat網站Idea
- Tomcat高階特性及效能調優Tomcat
- SpringBoot手動部署到Tomcat和自動化熱部署Spring BootTomcat熱部署
- Android中的Gradle之配置及構建優化AndroidGradle優化
- 架構師細說NGINX的配置及優化架構Nginx優化
- IIS應用程式池配置詳解及優化優化
- SpringBoot-技術專區-用正確的姿勢如何用外接tomcat配置及執行(Tomcat優化分析)Spring BootTomcat優化
- 你還不懂 Tomcat 的優化嗎?Tomcat優化
- Mybatis:CRUD操作及配置解析MyBatis
- tomcat配置Tomcat
- 樹莓派+tomcat+mysql安裝及配置樹莓派TomcatMySql
- Tomcat的下載及環境變數配置Tomcat變數
- SSL基礎知識及Nginx/Tomcat配置SSLNginxTomcat
- SpringBoot專案在linux系統中的部署(直接部署、外接tomcat中部署)以及配置httpsSpring BootLinuxTomcatHTTP
- SpringCloud之Eureka的常見問題及配置優化SpringGCCloud優化
- 做一個有產品思維的研發:部署(Tomcat配置,Nginx配置,JDK配置)TomcatNginxJDK
- 01 . MongoDB簡介及部署配置MongoDB
- 九爺帶你瞭解Tomcat優化Tomcat優化
- 淺談Tomcat伺服器優化方法Tomcat伺服器優化
- linux下部署 tomcatLinuxTomcat
- Tomcat調優總結(Tomcat自身最佳化、Linux核心最佳化、JVM最佳化)【轉】TomcatLinuxJVM