系統(tǒng)運維
博文大綱:
一、tomcat概述
二、tomcat組件及其特點
三、安裝tomcat
四、tomcat中server.xml 文件結(jié)構(gòu)
五、多實例(一臺主機運行多個tomcat)
六、自定義目錄
七、使用tomcat實時監(jiān)控jvm虛擬機資源使用情況
八、開啟jmx遠(yuǎn)程調(diào)試功能
九、配置使用https訪問tomcat服務(wù)器
十、開啟manager管理頁面
十一、開啟host-mangent管理頁面
十二、分割tomcat的運行日志
十三、定義tomcat 404錯誤返回的頁面
十四、tomcat服務(wù)的內(nèi)存優(yōu)化
十五、tomcat線程池的優(yōu)化
十六、更改tomcat服務(wù)的請求方式
一、tomcat概述
tomcat是apache軟件基金會項目中的一個核心項目,是一個免費的開放源代碼的web應(yīng)用服務(wù)器,屬于輕量級的應(yīng)用服務(wù)器,在中小型企業(yè)和訪問并不是很高的場景很受歡迎,普遍被使用,而且在開發(fā)和調(diào)試jsp程序的首選!
可以這樣認(rèn)為,當(dāng)一臺服務(wù)器部署好apache服務(wù)器后,可以利用apache服務(wù)器響應(yīng)客戶端的靜態(tài)頁面訪問請求,而tomcat是apache服務(wù)器的擴展,當(dāng)運行tomcat的時候?qū)嶋H上是作為一個apache獨立的進程單獨運行的,apache服務(wù)器為靜態(tài)頁面提供服務(wù),而tomcat是解析jsp頁面和servlet,并且tomcat也具備靜態(tài)頁面的解析能力,但是跟apache相比還是有些區(qū)別的。
關(guān)于tomcat的內(nèi)容可不是一兩句話就可以說完的,建議訪問tomcat官網(wǎng)詳細(xì)了解!
二、tomcat組件及其特點
1.servlet是什么?
servlet(server applet):是java servlet的簡稱,稱為小服務(wù)程序或服務(wù)連接器,用java編寫的服務(wù)器端程序,具有獨立于平臺和協(xié)議的特性,主要功能在于交互式地瀏覽和生成數(shù)據(jù),生成動態(tài)web內(nèi)容。狹義的servlet是指java語言實現(xiàn)的一個接口;廣義的servlet是指任何實現(xiàn)了這個servlet接口的類;一般情況下,人們將servlet理解為后者。
servlet運行于支持java的應(yīng)用服務(wù)器中。從原理上講,servlet可以響應(yīng)任何類型的請求,但絕大多數(shù)情況下servlet只用來擴展基于http協(xié)議的web服務(wù)器。
tomcat處理請求和響應(yīng)的過程都是由servlet程序來完成的,并且servlet是為解決實現(xiàn)動態(tài)頁面衍生的內(nèi)容,與nginx和apache想要實現(xiàn)動態(tài)頁面需要和php服務(wù)器溝通的過程一樣,就可以把servlet看做lamp或lnmp中的php。如圖:
tomcat是web應(yīng)用服務(wù)器,是一個servlet/jsp容器,tomcat作為servlet容器,負(fù)責(zé)處理客戶端請求,并將servlet的響應(yīng)傳送給客戶,而servlet是一種運行在java語言的服務(wù)器上的組件,servlet最常見的用途是擴展java web服務(wù)器功能,提供非常安全的易于使用cgi替代品。
servlet工作流程:
servlet程序是web服務(wù)器調(diào)用的,當(dāng)web服務(wù)器收到客戶端的servlet訪問請求后,將執(zhí)行以下幾個過程:
①web服務(wù)器首先檢查是否已經(jīng)裝載并創(chuàng)建了該servlet的實例對象。如果是,則直接執(zhí)行第④步;否則,將執(zhí)行第②步;
②裝載并創(chuàng)建該servlet的一個實例對象;
③調(diào)用servlet實例;
④創(chuàng)建一個用于封裝http請求的httpservletrequest對象和一個代表http響應(yīng)消息的httpservletresponse對象,然后調(diào)用servlet的service()方法并將請求和響應(yīng)對象作為參數(shù)傳遞進去;
⑤web應(yīng)用程序被停止或重新啟動之前,servlet引擎將卸載servlet,并在卸載之前調(diào)用servlet的destroy()方法;
2.tomcat處理數(shù)據(jù)的流程
如圖:
①客戶端通過瀏覽器發(fā)送請求數(shù)據(jù);
②tomcat收到客戶端的請求數(shù)據(jù),由servlet容器處理并進行解析,并且把客戶端的數(shù)據(jù)請求request改為servlet request交給后端的servlet實例;
③servlet實例收到客戶端的請求數(shù)據(jù)的請求對象,進行處理客戶端的請求,處理完成后將數(shù)據(jù)響應(yīng)給servlet容器,響應(yīng)給servlet容器叫做servlet response;
④servlet容器將收到的響應(yīng)數(shù)據(jù)交給客戶端;
servlet容器與servlet實例進行通信時需要使用java servlet api接口,而這個接口是由開發(fā)人員在寫代碼的時候定義或編寫的。
3.servlet與jsp
jsp作為servlet技術(shù)的擴展,經(jīng)常會有人將兩者搞混,下面簡單介紹一下:
servlet與jsp的區(qū)別:
servlet在java代碼中可以通過httpservletresponse對象動態(tài)輸出html內(nèi)容;
jsp在靜態(tài)html內(nèi)容中嵌入java代碼,然后java代碼在被動態(tài)執(zhí)行后生成html頁面;
servlet與jsp各自的特點:
servlet雖然能很好地組織業(yè)務(wù)邏輯代碼,但在java源文件中,因為是通過字符串拼接的方式生成html內(nèi)容,這樣就很容易導(dǎo)致代碼維護困難、可讀性較差;
jsp雖然避開了servlet在生成html內(nèi)容方面的劣勢,但是在html中混入大量、復(fù)雜得業(yè)務(wù)邏輯;
4.tomcat的特點
運行時占用的資源小,擴展性強,支持負(fù)載均衡和郵件服務(wù)器等開發(fā)應(yīng)用系統(tǒng)常用的功能。
三、安裝tomcat
下載tomcat所需軟件
安裝tomcat需要系統(tǒng)java環(huán)境1.8版本以上,centos 7默認(rèn)就已經(jīng)支持java環(huán)境1.8版本,由于現(xiàn)在大部分使用還是centos 6的系統(tǒng),,由于本人采用的centos 7系統(tǒng),所以首先需要卸載jdk環(huán)境。
[root@localhost ~]# rpm -qa | grep jdk //查詢本機默認(rèn)jdk環(huán)境java-1.8.0-openjdk-headless-1.8.0.161-2.b14.el7.x86_64copy-jdk-configs-3.3-2.el7.noarchjava-1.7.0-openjdk-headless-1.7.0.171-2.6.13.2.el7.x86_64java-1.7.0-openjdk-1.7.0.171-2.6.13.2.el7.x86_64java-1.8.0-openjdk-1.8.0.161-2.b14.el7.x86_64[root@localhost ~]# rpm -e java-1.8.0-openjdk-headless --nodeps[root@localhost ~]# rpm -e java-1.7.0-openjdk-headless --nodeps //將原本的jdk-headless包卸載[root@localhost ~]# tar zxf jdk-8u211-linux-x64.tar.gz -c /usr/local //將提供的jdk軟件包進行解壓[root@localhost ~]# vim /etc/profile //編寫系統(tǒng)環(huán)境變量,在末尾添加以下內(nèi)容 export java_home=/usr/local/jdk1.8.0_211 //指定java安裝路徑 export jre_home=/usr/local/jdk1.8.0_211/jre //java運行環(huán)境 export classpath=$java_home/lib/tools.jar:$java_home/lib/dt.jar //聲明java中的類,類就是一類事務(wù)的屬性 export path=$java_home/bin/:$jre_home/bin/:$path //將定義的變量添加到系統(tǒng)環(huán)境變量中[root@localhost ~]# source /etc/profile //重新加載系統(tǒng)環(huán)境變量文件[root@localhost ~]# java -version //查詢支持的java版本信息java version 1.8.0_211 //符合要求java(tm) se runtime environment (build 1.8.0_211-b12)java hotspot(tm) 64-bit server vm (build 25.211-b12, mixed mode)[root@localhost ~]# tar zxf apache-tomcat-8.5.35.tar.gz [root@localhost ~]# mv apache-tomcat-8.5.35 /usr/loca