一、初識(shí)Tomcat; 二、Tomcat與jdk的關(guān)系; 三、Tomcat內(nèi)部工作原理; 四、Tomcat配置文件詳解; 五、案例:搭建Tomcat案例; 一、初識(shí)tomcat; 概述:Tomcat是由Apache軟件基金會(huì)下屬的Jakarta項(xiàng)目開(kāi)發(fā)的一個(gè)Servlet容器,按照Sun Microsystems提供的技術(shù)規(guī)范,實(shí)現(xiàn)了對(duì)Servlet和JavaServer Page(JSP)的支持,并提供了作為Web服務(wù)器的一些特有功能,如Tomcat管理和控制平臺(tái)、安全域管理和Tomcat閥等。由于Tomcat本身也內(nèi)含了一個(gè)HTTP服務(wù)器,它也可以被視作一個(gè)單獨(dú)的Web服務(wù)器。 便于理解:Apache與Tomcat的比較 相同點(diǎn): 1.兩者都是Apache組織開(kāi)發(fā)的 2.兩者都有HTTP服務(wù)的功能 3.兩者都是免費(fèi)的 不同點(diǎn): 1.Apache是專(zhuān)門(mén)用了提供HTTP服務(wù)的,以及相關(guān)配置的(例如虛擬主機(jī)、URL轉(zhuǎn)發(fā)等等),而Tomcat是Apache組織在符合Java EE的JSP、Servlet標(biāo)準(zhǔn)下開(kāi)發(fā)的一個(gè)JSP服務(wù)器. 2.Apache是一個(gè)Web服務(wù)器環(huán)境程序,啟用他可以作為Web服務(wù)器使用,不過(guò)只支持靜態(tài)網(wǎng)頁(yè)。如果要在Apache環(huán)境下運(yùn)行JSP的話(huà)就需要一個(gè)解釋器來(lái)執(zhí)行JSP網(wǎng)頁(yè),而這個(gè)JSP解釋器就是Tomcat。 3.Apache側(cè)重于HTTPServer ,Tomcat側(cè)重于Servlet引擎,如果以Standalone方式運(yùn)行,功能上與Apache等效,支持JSP,但對(duì)靜態(tài)網(wǎng)頁(yè)不太理想; 4.Apache是Web服務(wù)器,Tomcat是應(yīng)用(Java)服務(wù)器,它只是一個(gè)Servlet(JSP也翻譯成Servlet)容器,可以認(rèn)為是Apache的擴(kuò)展,但是可以獨(dú)立于Apache運(yùn)行。 Tomcat同類(lèi)產(chǎn)品: 1.Resin 服務(wù)器: Resin是Caucho公司的產(chǎn)品,是一個(gè)非常流行的支持Servlet和JSP的服務(wù)器,速度非??臁esin本身包含了一個(gè)支持HTML的Web服務(wù)器,這使它不僅可以顯示動(dòng)態(tài)內(nèi)容,而且顯示靜態(tài)內(nèi)容的能力也毫不遜色,因此許多網(wǎng)站都是使用Resin服務(wù)器構(gòu)建。 2.Jetty 服務(wù)器: Jetty是一個(gè)純粹的基于Java的網(wǎng)頁(yè)服務(wù)器和Java Servlet容器。盡管網(wǎng)頁(yè)服務(wù)器通常用來(lái)為人們呈現(xiàn)文檔,但是Jetty通常在較大的軟件框架中用于計(jì)算機(jī)與計(jì)算機(jī)之間的通信。Jetty作為Eclipse基金會(huì)的一部分,是一個(gè)自由和開(kāi)源項(xiàng)目。 3.JBoss服務(wù)器: JBoss是一個(gè)種遵從JavaEE規(guī)范的、開(kāi)放源代碼的、純Java的EJB服務(wù)器,對(duì)于J2EE有很好的支持。JBoss采用JML API實(shí)現(xiàn)軟件模塊的集成與管理,其核心服務(wù)又是提供EJB服務(wù)器,不包含Servlet和JSP的Web容器,不過(guò)它可以和Tomcat完美結(jié)合。 4.WebSphere 服務(wù)器: WebSphere是IBM公司的產(chǎn)品,可進(jìn)一步細(xì)分為 WebSphere Performance Pack、Cache Manager 和WebSphere Application Server等系列,其中WebSphere Application Server 是基于Java 的應(yīng)用環(huán)境,可以運(yùn)行于 Sun Solaris、Windows NT 等多種操作系統(tǒng)平臺(tái),用于建立、部署和管理Internet和Intranet Web應(yīng)用程序。 5.WebLogic 服務(wù)器: WebLogic 是ORACLE公司的產(chǎn)品,可進(jìn)一步細(xì)分為 WebLogic Server、WebLogic Enterprise 和 WebLogic Portal 等系列,其中 WebLogic Server 的功能特別強(qiáng)大。WebLogic 支持企業(yè)級(jí)的、多層次的和完全分布式的Web應(yīng)用,并且服務(wù)器的配置簡(jiǎn)單、界面友好。對(duì)于那些正在尋求能夠提供Java平臺(tái)所擁有的一切應(yīng)用服務(wù)器的用戶(hù)來(lái)說(shuō),WebLogic是一個(gè)十分理想的選擇。 二、Tomcat與jdk的關(guān)系; 圖解: 解析: JDK是開(kāi)發(fā)人員開(kāi)發(fā)使用,jre是用來(lái)運(yùn)行java程序,就是java程序的運(yùn)行環(huán)境,jvm是整個(gè)java實(shí)現(xiàn)跨平臺(tái)的最核心的部分,所有的java程序會(huì)首先被編譯為.class的類(lèi)文件,這種類(lèi)文件可以在虛擬機(jī)上執(zhí)行; JDK中包含JRE,在JDK的安裝目錄下有一個(gè)名為jre的目錄,里面有兩個(gè)文件夾bin和lib,在這里可以認(rèn)為bin里的就是jvm,lib中則是jvm工作所需要的類(lèi)庫(kù),而jvm和 lib和起來(lái)就稱(chēng)為jre。jdk是java語(yǔ)言編寫(xiě)的,用來(lái)給java程序調(diào)用的,jvm因?yàn)榕c平臺(tái)進(jìn)行交互,是用c/c++和匯編語(yǔ)言編寫(xiě)的; jdk是java運(yùn)行和編譯的,tomcat是web項(xiàng)目的運(yùn)行容器,java沒(méi)有jdk沒(méi)辦法編譯運(yùn)行,java運(yùn)行必須依賴(lài)jdk的環(huán)境,所以安裝tomcat前必須要安裝jdk環(huán)境; 下載位置: tomcat下載地址:https://tomcat./download-90.cgi jdk下載地址: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 注解: 1. Java SE(Java Platform,Standard Edition):Java SE 是做電腦上運(yùn)行的軟件; 2. Java EE(Java Platform,Enterprise Edition):Java EE 是用來(lái)做網(wǎng)站的(我們常見(jiàn)的JSP技術(shù)); 3. Java ME(Java Platform,Micro Edition):Java ME 是做手機(jī)軟件的; 對(duì)應(yīng)關(guān)系: 三、Tomcat內(nèi)部工作原理; tomcat整體架構(gòu): 組件關(guān)聯(lián): 1、Tomcat 的心臟是兩個(gè)組件:Connector 和 Container,Connector 組件是可以被替換,這樣顯得更加靈活,一個(gè) Container 可以選擇對(duì)應(yīng)多個(gè) Connector。多個(gè) Connector 和一個(gè) Container 就形成了一個(gè) Service,有了 Service 就可以對(duì)外提供服務(wù)了,但是 Service 還要一個(gè)生存的環(huán)境,必須要有人能夠給她生命、掌握其生死大權(quán),那就非 Server 莫屬了。所以整個(gè) Tomcat 的生命周期由 Server 控制。 2、我們將 Tomcat 中 Connector、Container 作為一個(gè)整體比作一對(duì)情侶的話(huà),Connector 主要負(fù)責(zé)對(duì)外交流,可以比作為 Boy,Container 主要處理 Connector 接受的請(qǐng)求,主要是處理內(nèi)部事務(wù),可以比作為 Girl。那么這個(gè) Service 就是連接這對(duì)男女的結(jié)婚證了。是Service 將它們連接在一起,共同組成一個(gè)家庭。當(dāng)然要組成一個(gè)家庭還要很多其它的元素說(shuō)白了,Service 只是在 Connector 和 Container 外面多包一層,把它們組裝在一起,向外面提供服務(wù),一個(gè) Service 可以設(shè)置多個(gè) Connector,但是只能有一個(gè) Container 容器。 Container組件詳解: ?Engine:負(fù)責(zé)處理所有請(qǐng)求,處理后,將結(jié)果返回給service,而connector是作為service與engine的中間媒介出現(xiàn)的。 作為交流者;一個(gè)engine下可以配置一個(gè)默認(rèn)主機(jī),每個(gè)虛擬主機(jī)都有一個(gè)域名。當(dāng)engine獲得一個(gè)請(qǐng)求時(shí),它把該請(qǐng)求匹配到虛擬主機(jī)host上,然后把請(qǐng)求交給該主機(jī)來(lái)處理。 Engine有一個(gè)默認(rèn)主機(jī),當(dāng)請(qǐng)求無(wú)法匹配到任何一個(gè)虛擬主機(jī)時(shí),將交給默認(rèn)host來(lái)處理。Engine以線(xiàn)程的方式啟動(dòng)Host。 ?Host:代表一個(gè)虛擬主機(jī),每個(gè)虛擬主機(jī)和某個(gè)網(wǎng)絡(luò)域名(Domain Name)相匹配。 每個(gè)虛擬主機(jī)下都可以部署一個(gè)或多個(gè)web應(yīng)用,每個(gè)web應(yīng)用對(duì)應(yīng)于一個(gè)context,有一個(gè)context path。 當(dāng)Host獲得一個(gè)請(qǐng)求時(shí),將把該請(qǐng)求匹配到某個(gè)Context上; ?Wrapper: 代表一個(gè) Servlet,它負(fù)責(zé)管理一個(gè) Servlet,包括的 Servlet 的裝載、初始化、執(zhí)行以及資源回收。Wrapper 是最底層的容器,它沒(méi)有子容器了; 四、Tomcat配置文件詳解; tomcat中支持兩種協(xié)議的連接器:HTTP/1.1與AJP/1.3 HTTP/1.1協(xié)議負(fù)責(zé)建立HTTP連接,web應(yīng)用通過(guò)瀏覽器訪問(wèn)tomcat服務(wù)器用的就是這個(gè)連接器,默認(rèn)監(jiān)聽(tīng)的是8080端口; AJP/1.3協(xié)議負(fù)責(zé)和其他HTTP服務(wù)器建立連接,監(jiān)聽(tīng)的是8009端口,比如tomcat和apache或者iis集成時(shí)需要用到這個(gè)連接器。 五、案例:搭建Tomcat案例; 案例環(huán)境:
案例步驟: ?安裝jdk,部署java環(huán)境; ?安裝tomact軟件程序; ?客戶(hù)端訪問(wèn)測(cè)試初始頁(yè)面; ?Tomcat服務(wù)配置目錄講解,配置文件講解,主配置文件講解; ?配置Tomcat得manager管理界面; ?自定義jsp頁(yè)面,并測(cè)試訪問(wèn); ?安裝jdk,部署java環(huán)境; [root@www ~]# ls apache-tomcat-9.0.10.tar.gz jdk-8u171-linux-x64.tar.gz [root@www~]# rpm -qa |grep java [root@www ~]# tar zxvf jdk-8u171-linux-x64.tar.gz [root@www ~]# mv jdk1.8.0_171/ /usr/local/java [root@www ~]# ls /usr/local/java bin db javafx-src.zip lib man release THIRDPARTYLICENSEREADME-JAVAFX.txt COPYRIGHT include jre LICENSE README.html src.zip THIRDPARTYLICENSEREADME.txt [root@www ~]# cat < export JAVA_HOME=/usr/local/java export PATH=$PATH:/usr/local/java/bin END [root@www~]# source /etc/profile [root@www ~]# java -version java version "1.8.0_171" Java(TM) SE Runtime Environment (build 1.8.0_171-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode) ?安裝tomact軟件程序; [root@www ~]# tar zxvf apache-tomcat-9.0.10.tar.gz [root@www ~]# mv apache-tomcat-9.0.10 /usr/local/tomcat [root@www ~]# ls /usr/local/tomcat bin conf lib LICENSE logs NOTICE RELEASE-NOTES RUNNING.txt temp webapps work [root@www ~]# /usr/local/tomcat/bin/startup.sh ##啟動(dòng)apache-tomcat [root@www ~]# netstat -utpln |grep 8080 tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 14758/java ?客戶(hù)端訪問(wèn)測(cè)試初始頁(yè)面; ?Tomcat服務(wù)配置目錄講解,配置文件講解,主配置文件講解; ?安裝mariadb數(shù)據(jù)庫(kù),提供數(shù)據(jù)庫(kù)服務(wù); [root@www ~]# yum -y install mariadb-server mysql [root@www ~]# systemctl start mariadb [root@www ~]# systemctl enable mariadb [root@www ~]# mysqladmin -uroot password 123123 [root@www ~]# mysql -uroot -p123123 MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | +--------------------+ 4 rows in set (0.00 sec) MariaDB [(none)]> exit ?創(chuàng)建項(xiàng)目中的數(shù)據(jù)庫(kù)或者導(dǎo)入數(shù)據(jù)庫(kù)文件,并且進(jìn)行授權(quán); [root@www ~]# ls igcrms_xn.sql [root@www ~]# mysql -uroot -p123123<igcrms_xn.sql< span=""></igcrms_xn.sql<> MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | igcrms_xn | | mysql | | performance_schema | | test | +--------------------+ 5 rows in set (0.00 sec) MariaDB [(none)]> use igcrms_xn Database changed MariaDB [igcrms_xn]> show tables; +-----------------------------+ | Tables_in_igcrms_xn | +-----------------------------+ | col_recycle_daysum | | col_recycle_detail | | col_recycle_info | ... MariaDB [igcrms_xn]> grant all on igcrms_xn.* to 'linuxfan'@'192.168.100.101' identified by '123123'; MariaDB [igcrms_xn]> flush privileges; MariaDB [(none)]> exit ?項(xiàng)目上線(xiàn); [root@www ~]# ls XNMS.war [root@www ~]# unzip -oq XNMS.war -d ./linuxfan [root@www ~]# ls linuxfan/ common jsp META-INF static WEB-INF [root@www ~]# cp -rf ./linuxfan/ /usr/local/tomcat/webapps/ [root@www ~]# ls /usr/local/tomcat/webapps/linuxfan/ common jsp META-INF static WEB-INF [root@www ~]# vi /usr/local/tomcat/webapps/linuxfan/WEB-INF/classes/jdbc.properties 6 url=jdbc:mysql://192.168.100.101:3306/igcrms_xn?useUnicode=true&characterEncoding=utf-8& allowMultiQueries=true 7 username=linuxfan 8 password=123123 :wq ?客戶(hù)端訪問(wèn)測(cè)試項(xiàng)目; ?配置Tomcat得manager管理界面; [root@www ~]# vi /usr/local/tomcat/conf/tomcat-users.xml 44 45 [root@www ~]# vi /usr/local/tomcat/webapps/manager/META-INF/context.xml 20 allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|\d+\.\d+\.\d+\.\d+" /> [root@www ~]# /usr/local/tomcat/bin/shutdown.sh [root@www ~]# /usr/local/tomcat/bin/startup.sh 客戶(hù)端訪問(wèn)測(cè)試: ?自定義jsp頁(yè)面,并測(cè)試訪問(wèn); [root@www ~]# mkdir -p /web/webapp/ [root@www ~]# vi /web/webapp/index.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% out.println("Welcome to test site;http://www.linuxfan.cn");%> :wq [root@www ~]# vi /usr/local/tomcat/conf/server.xml 148 <host </hostname="www.linuxfan.cn" appBase="webapps" 149 unpackWARs="true" autoDeploy="true"> 150 <context </contextdocBase="/web/webapp" path="" reloadable="false"> 注解: unpackWARs="true" ##設(shè)置自動(dòng)識(shí)別war包 autoDeploy="true" ##開(kāi)啟自動(dòng)部署 Context docBase="/web/webapp" ##設(shè)置項(xiàng)目存放位置 path="" ## tomcat把web應(yīng)用程序映射為root URI路徑reloadable="true" ## tomcat服務(wù)器在運(yùn)行狀態(tài)下會(huì)監(jiān)視在WEB-INF/classes和WEB-INF/lib目錄下class文件的改動(dòng),如果監(jiān)測(cè)到有class文件被更新的,服務(wù)器會(huì)自動(dòng)重新加載Web應(yīng)用,但是開(kāi)啟會(huì)加重服務(wù)器負(fù)荷,false選項(xiàng)為關(guān)閉; [root@www ~]# /usr/local/tomcat/bin/shutdown.sh [root@www ~]# /usr/local/tomcat/bin/startup.sh 客戶(hù)端訪問(wèn)測(cè)試: |
|
來(lái)自: 夜貓速讀 > 《待分類(lèi)》