Tomcat服務(wù)部署及優(yōu)化的實(shí)現(xiàn)
一、Tomcat介紹
- 免費(fèi)的、開放源代碼的Web應(yīng)用服務(wù)器
- Apache軟件基金會(huì)(Apache Software Foundation)Jakarta項(xiàng)目中的一個(gè)核心項(xiàng)目
- 由Apache、Sun和一些公司及個(gè)人共同開發(fā)而成
- 深受Java愛好者的喜愛,并得到部分軟件開發(fā)商的認(rèn)可
- 目前比較流行的Web應(yīng)用服務(wù)器
二、配置文件介紹及核心組件
2.1.Tomcat核心組件

Tomcat 由一系列的組件構(gòu)成,其中核心的組件有三個(gè):
- Web 容器:完成 Web 服務(wù)器的功能HTTP HTTPS請(qǐng)求的接受和響應(yīng)。
- Servlet 容器:由名稱為 catalina的腳本來(lái)處理 Servlet 代碼(具體的一個(gè)任務(wù),從數(shù)據(jù)庫(kù)中拿取數(shù)據(jù)給與前端)。
- JSP 容器:用于將 JSP 動(dòng)態(tài)網(wǎng)頁(yè)翻譯成 Servlet 代碼 index.html index.php index.jsp。
多實(shí)例:多實(shí)例就是在一臺(tái)服務(wù)器上同時(shí)開啟多個(gè)不同的服務(wù)端口,同時(shí)運(yùn)行多個(gè)服務(wù)進(jìn)程,這些服務(wù)進(jìn)程通過(guò)不同的socket監(jiān)聽不同的服務(wù)端口來(lái)提供服務(wù)。
引擎:一般而言,引擎是一個(gè)程序或一套系統(tǒng)的支持部分。常見的程序引擎有游戲引擎、搜索引擎、殺毒引擎等。

2.2.Tomcat處理請(qǐng)求過(guò)程

詳細(xì)過(guò)程:
- 用戶在瀏覽器中輸入該網(wǎng)址,請(qǐng)求被發(fā)送到本機(jī)端口8080,被在那里監(jiān)聽的Coyote HTTP/1.1 Connector獲得;
- Connector把該請(qǐng)求交給它所在的Service的Engine (Container) 來(lái)處理,并等待Engine的回應(yīng);
- Engine獲得請(qǐng)求localhost/test/index.jsp,匹配所有的虛擬主機(jī)Host;
- Engine匹配到名為localhost的Host(即使匹配不到也把請(qǐng)求交給該Host處理,因?yàn)樵揌ost被定義為該Engine的默認(rèn)主機(jī)),名為localhostHost獲得請(qǐng)求/test/index.jsp,匹配它所擁有的所有Context。Host匹配到路徑為/test的Context(如果匹配不到就把該請(qǐng)求交給路徑名為“”的Context去處理);
- path="/test"的Context獲得請(qǐng)求/ index. jsp,在它的mapping table中尋找出對(duì)應(yīng)的Servlet。Context 匹配到URLPattern為* .jsp的Servlet,對(duì)應(yīng)于JspServlet類;
- 構(gòu)造HttpServletRequest對(duì)象和HttpServletResponse對(duì)象,作為參數(shù)調(diào)用JspServlet的doGet()或doPost(),執(zhí)行業(yè)務(wù)邏輯、數(shù)據(jù)存儲(chǔ)等
- Context把執(zhí)行完之后的HttpServletResponse對(duì)象返回給Host;
- Host把HttpServletResponse對(duì)象返回給Engine;
- Engine把HttpServletResponse對(duì)象返回Connector;
- Connector把HttpServletResponse對(duì)象返回給客戶Browser;
2.3.配置文件
(1)主要目錄說(shuō)明
- bin :存放啟動(dòng)和關(guān)閉Tomcat 的腳本文件,比較常用的是catalina.sh、startup.sh、 shutdown.sh 三個(gè)文件
- conf :存放Tomcat 服務(wù)器的各種配置文件,比較常用的是server.xml、context.xml、tomcat-users.xml web. xml 四個(gè)文件.
- lib :存放Tomcat服務(wù)器的jar 包,一般不作任何改動(dòng),除非連接第三方服務(wù),比如redis, 那就需要添加相對(duì)應(yīng)的jar包
- logs :存放Tomcat 日志
- temp :存放Tomcat 運(yùn)行時(shí)產(chǎn)生的文件
- ???webapps :存放項(xiàng)目資源的目錄
- work:Tomcat 工作目錄,一般清除 Tomcat 緩存的時(shí)候會(huì)使用到
(2)Tomcat配置文件詳解
① catalina.policy:權(quán)限控制配置文件
② catalina.properties:Tomcat的屬性配置文件
③ ??context.xml:上下文配置文件
④ logging.properties:日志相關(guān)配置文件
⑤ ???server.xml:主配置文件,通過(guò)配置文件,可以修改tomcat的啟動(dòng)端口、網(wǎng)站目錄、虛擬主機(jī)、開啟https等功能
⑥ tomcat-user.xml/.xsd:管理用戶配置文件
⑦ web.xml:Tomcat的servlet、servlet-mapping、filter、MIME等相關(guān)配置
三、Tomcat服務(wù)部署
1.安裝jdk
在部署Tomcat之前必須安裝好jdk,因?yàn)閖dk是Tomcat運(yùn)行的必要環(huán)境
1.關(guān)閉防火墻 systemctl stop firewalld systemctl disable firewalld setenforce 0 2.將安裝 Tomcat 所需軟件包傳到/opt目錄下 cd /opt apache-tomcat-9.0.16.tar.gz jdk-8u201-linux-x64.rpm 3.切換至/opt下,安裝JDK cd /opt rpm -ivh jdk-8u201-linux-x64.rpm
2.設(shè)置JDK環(huán)境變量
1.修改配置文件 vim /etc/profile export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64 export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar export PATH=$JAVA_HOME/bin:$PATH 2.刷新配置文件 source /etc/profile
3.安裝tomcat
1.切換至/opt下,解壓tomcat包 cd /opt tar -zxf apache-tomcat-9.0.16.tar.gz 2.將解壓后的包拷貝至/usr/local/下并重命名 mv apache-tomcat-9.0.16 /usr/local/tomcat
4.啟動(dòng)tomcat
1.為tomcat服務(wù)創(chuàng)建軟鏈接 ln -s /usr/local/tomcat/bin/startup.sh /usr/local/bin/ ln -s /usr/local/tomcat/bin/shutdown.sh /usr/local/bin/ 2.開啟服務(wù)或者關(guān)閉服務(wù) startup.sh shutdown.sh 3.查看是否開啟成功 netstat -natp | grep 8080
5.在網(wǎng)頁(yè)中查看
http://192.168.250.70:8080
6.將tomcat添加到服務(wù)
1.先關(guān)閉服務(wù) shutdown.sh 2.添加用戶設(shè)置屬主屬組 useradd -s /sbin/nologin tomcat chown tomcat:tomcat tomcat/ -R 3.新建服務(wù)文件 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.target 4. 重新加載服務(wù),并開啟,查看是否成功啟動(dòng) systemctl daemon-reload systemctl start tomcat netstat -ntap |grep 8080
四、Tomcat服務(wù)優(yōu)化
4.1.Tomcat 虛擬主機(jī)配置
1.創(chuàng)建 kgc 和 benet 項(xiàng)目目錄和文件
1.添加地址映射 vim /etc/hosts 192.168.250.70 www.kgc.com www.benet.com 2.創(chuàng)建目錄并且寫入文件 mkdir /usr/local/tomcat/webapps/kgc mkdir /usr/local/tomcat/webapps/benet echo "this is kgc page\!" > /usr/local/tomcat/webapps/kgc/index.jsp echo "this is benet page\!" > /usr/local/tomcat/webapps/benet/index.jsp
2、修改 Tomcat 主配置文件
<Host name="www.kgc.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context docBase="/usr/local/tomcat/webapps/kgc" path="" reloadable="true" />
</Host>
<Host name="www.benet.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context docBase="/usr/local/tomcat/webapps/benet" path="" reloadable="true" />
</Host>3.關(guān)閉tomcat服務(wù),再開啟tomcat服務(wù)
shutdown.sh tartup.sh
4.客戶機(jī)瀏覽器驗(yàn)證訪問(wèn)驗(yàn)證
echo "192.168.250.60 www.kgc.com www.benet.com" >> /etc/hosts
瀏覽器訪問(wèn) http://www.kgc.com:8080
瀏覽器訪問(wèn) http://www.benet.com:8080
4.2.Tomcat配置文件參數(shù)優(yōu)化
Tomcat默認(rèn)安裝下的缺省配置并不適合生產(chǎn)環(huán)境,它可能會(huì)頻繁出現(xiàn)假死現(xiàn)象需要重啟,只有通過(guò)不斷壓測(cè)優(yōu)化才能讓它最高效率穩(wěn)定的運(yùn)行。優(yōu)化主要包括三方面,分別為操作系統(tǒng)優(yōu)化(內(nèi)核參數(shù)優(yōu)化),Tomcat配置文件參數(shù)優(yōu)化,Java虛擬機(jī)(JVM)調(diào)優(yōu)。
常用的優(yōu)化參數(shù):
- [ maxThreads] Tomcat 使用線程來(lái)處理接收的每個(gè)請(qǐng)求,這個(gè)值表示Tomcat可創(chuàng)建的最大的線程數(shù),默認(rèn)值是200。
- [minSpareThreads] 最小空閑線程數(shù),Tomcat啟動(dòng)時(shí)的初始化的線程數(shù),表示即使沒(méi)有人使用也開這么多空線程等待,默認(rèn)值是 10。
- [maxSpareThreads] 最大備用線程數(shù),一旦創(chuàng)建的錢程超過(guò)這個(gè)值,Tomcat就會(huì)關(guān)閉不再需要的socket線程。默認(rèn)值是-1(無(wú)限 制)。一般不需要指定。
- [URIEncoding] 指定Tomcat容器的URL編碼格式,語(yǔ)言編碼格式這塊倒不如其它Web服務(wù)器軟件配置方便,需要分別指定。
- [connnectionTimeout] 網(wǎng)絡(luò)連接超時(shí),單位:堂秒,設(shè)置為0表示永不超時(shí),這樣設(shè)置有隱患的。通常默認(rèn)20000室秒就可以。
- [enableLookups] 是否反查域名,以返回遠(yuǎn)程主機(jī)的主機(jī)名,取值為:true或false,如果設(shè)置為false,則直接返回IP地址,為 了提高處理能力,應(yīng)設(shè)置為false。
- [disableUploadTimeout] 上傳時(shí)是否使用超時(shí)機(jī)制。應(yīng)設(shè)置為true。
- [connectionuploadTimeout] 上傳超時(shí)時(shí)間,畢竟文件上傳可能需要消耗更多的時(shí)間,這個(gè)根據(jù)你自己的業(yè)務(wù)需要自己調(diào),以使Servlet有較 長(zhǎng)的時(shí)問(wèn)來(lái)完成它的執(zhí)行,需要與上一個(gè)參數(shù)一起配合使用才會(huì)生效。
- [acceptcount] 指定當(dāng)所有可以使用的處理請(qǐng)求的線程數(shù)都被使用時(shí),可傳入連接請(qǐng)求的最大隊(duì)列長(zhǎng)度,超過(guò)這個(gè)數(shù)的請(qǐng)求將 不予處理,默認(rèn)為100個(gè)。
- [compression] 是否對(duì)響應(yīng)的數(shù)據(jù)進(jìn)行GZIP壓縮,off:表示禁止壓縮;on:表示允許壓縮(文本將被壓縮)、force:表示所有情況下都進(jìn)行壓縮,默認(rèn)值為 off,壓縮數(shù)據(jù)后可以有效的減少頁(yè)面的大小,一般可以減小 1/3 左右,節(jié)省帶寬。
- [compressionMinSize] 表示壓縮響應(yīng)的最小值,只有當(dāng)響應(yīng)報(bào)文大小大于這個(gè)值的時(shí)候才會(huì)對(duì)報(bào)文進(jìn)行壓縮,如果開啟了壓縮功能,默認(rèn)值就是 2048。
- [compressableMimeType] 壓縮類型,指定對(duì)哪些類型的文件進(jìn)行數(shù)據(jù)壓縮。
- [noCompressionUserAgents=“gozilla, traviata”] 對(duì)于以下的瀏覽器,不啟用壓縮。
<Connector port="8080" protocol="HTTP/11.1" connectionTimeout="20000" redirectPort="8443" minSpareThreads="50" enableLookups="false" disableUploadTimeout="true" acceptCount="300" maxThreads="500" processorCache="500" URIEncoding="UTF-8" compression="on" compressionMinSize="2048" compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain,image/gif,image /jpg,image/png"/>
到此這篇關(guān)于Tomcat服務(wù)部署及優(yōu)化的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Tomcat服務(wù)部署及優(yōu)化內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳述 tomcat 中的 server.xml 配置文件示例
本文將通過(guò)實(shí)例,介紹server.xml中各個(gè)組件的配置,并詳細(xì)說(shuō)明 Tomcat 各個(gè)核心組件的作用以及各個(gè)組件之間的相互關(guān)系。對(duì)tomcat server.xml 配置文件相關(guān)知識(shí)感興趣的朋友一起看看吧2017-08-08
tomcat部署簡(jiǎn)單的html靜態(tài)網(wǎng)頁(yè)的方法
這篇文章主要介紹了tomcat部署簡(jiǎn)單的html靜態(tài)網(wǎng)頁(yè)的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-06-06
tomcat啟動(dòng)異常:子容器啟動(dòng)失敗(a child container failed&n
這篇文章主要介紹了tomcat啟動(dòng)異常:子容器啟動(dòng)失敗(a child container failed during start),如果你也遇到了這個(gè)問(wèn)題,那么這篇文章應(yīng)該可以幫助到你,一起來(lái)看看吧2023-03-03
Tomcat無(wú)法映射到activiti-app導(dǎo)致activiti無(wú)法啟動(dòng)頁(yè)面的解決方法
這篇文章主要介紹了Tomcat無(wú)法映射到activiti-app導(dǎo)致activiti無(wú)法啟動(dòng)頁(yè)面的解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-11-11
關(guān)于tomcat部署應(yīng)用無(wú)法訪問(wèn)前端頁(yè)面的問(wèn)題
這篇文章主要介紹了關(guān)于tomcat部署應(yīng)用無(wú)法訪問(wèn)前端頁(yè)面的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11
Tomcatc3p0配置jnid數(shù)據(jù)源2種實(shí)現(xiàn)方法解析
這篇文章主要介紹了Tomcatc3p0配置jnid數(shù)據(jù)源2種實(shí)現(xiàn)方法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10
cemtos 7 linux 安裝與卸載 tomcat 7的教程
這篇文章主要介紹了cemtos 7 linux 安裝與卸載 tomcat 7的教程,需要的朋友可以參考下2017-10-10
Tomcat配置訪問(wèn)日志和線程數(shù)的實(shí)現(xiàn)步驟
本文主要介紹了Tomcat配置訪問(wèn)日志和線程數(shù)的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05
Linux下定時(shí)切割Tomcat日志并刪除指定天數(shù)前的日志記錄
這篇文章主要介紹了Linux下定時(shí)切割Tomcat日志并刪除指定天數(shù)前的日志記錄,需要的朋友可以參考下2017-08-08

