文章目錄
前言:
- Tomcat是一款免費、開放源代碼的Web應用服務器,是Apache軟件基金會(Apache Software Foundation)Jakarta項目中的一個核心項目
- Tomcat由Apache、Sun和一些公司及個人共同開發而成,深受Java愛好者的喜好,並得到部分軟件開發商的認可,是目前比較流行的Web應用服務器,官網爲:https://tomcat.apache.org/
一、Tomcat 介紹
1.1 Tomcat 核心組件
-
① Web容器
負責底層的HTTP協議
-
② Servlet容器
由catalina腳本幫忙處理的servlet代碼,主要處理後端邏輯業務
catalina實際處理的是Servlet代碼,而Servlet代碼是由Java編寫的
-
③ JSP容器(JAVA Scripts page)
JSP:在正常的html標籤中嵌入一些java代碼
這些JSP最終會被翻譯成Servlet代碼被執行
主要提供提供前端頁面展示
-
小結:tomcat就是一個容器,在這個容器中有三大核心組件:WEB、Servlet 和JSP,所以Tomcat是極其輕量級別的,核心組件都是支持基本運行的組件
1.2 Tomcat處理請求過程
1.2.1 Tomcat處理請求原理圖
- 處理請求詳細過程
- ① 用戶訪問網站時,請求被髮送到本機端口(connector開放的端口就是8080)8080,被在端口監聽的Coyote HTTP/1.1 connector獲取
- ② 接受請求之後交給container容器進行處理,container中有一個engine引擎運作
- ③ 基於引擎支撐,容器中會跑很多host虛擬主機,這些虛擬主機中也會有很多context進程(引擎),此處的context類似於前端頁面JSP,具體加載到的任務程序會運行servlet(進行邏輯業務處理)
- ④ Servlet處理完後會返回給context
- ⑤ context返回給engine引擎
- ⑥ engine返回給端口
- ⑦ 端口最後將頁面展現給用戶
CGI:底層通用網關接口(協議) Nginx調用的接口,當有了web服務支持CGI接口之後,想要web服務反饋頁面,只有調用通用網關接口纔可以反饋頁面
1.2.2 四個子容器作用簡述
-
Engine:引擎,用來管理多個站點,一個Service最多只能有一個Engine
-
Host:代表一個站點,也可以叫虛擬主機,通過配置Host就可以添加站點
-
Contxt:代表一個應用程序,對應着平時開發的一套程序,或者一個WEB-INF目錄以及web.xml文件
-
Wrapper:每一個Wrapper封裝着一個Servlet
-
Tomcat頂層架構小結
① Tomcat中只有一個Server,一個Server可以有多個Service,一個Service可以有多個Connector和一個Container
② Server掌管着整個Tomcat的生死大權
③ Service時對外提供服務的
④ Connector用於接受請求並將請求封裝成Request和Response來具體處理
⑤ Container用於封裝和管理Servlet,以及具體處理request請求
二、Tomcat部署
2.1 實驗環境
-
一臺centos7虛擬機
tomcat節點 IP地址:192.168.226.128
軟件包:
- jdk-8u231-linux-x64.tar.gz
- apache-tomcat-8.5.50.tar.gz
PS:在安裝Tomcat之前必須先安裝JDK,JDK是Sun公司提供的Java語言的軟件開發大工具包,其中包含Java虛擬機(JVM)。
編寫好的JAVA源程序經過編譯可以形成java的字節碼,只要安裝了JDK,就可以利用JVM解釋這些字節碼文件,從而保證了JAVA的跨平臺性。在平臺兼容性方面,JDK作爲解釋字節碼並據此調用操作系統的API(功能接口)實現對應功能的JAVA虛擬機,與操作系統類型和平臺位數密切相關,因此存在不同版本
2.2 實驗過程
2.2.1 jdk安裝
-
軟件包獲取
① 使用宿主機下載tomcat軟件包
② 安裝vsftpd,在線下載tomcat包:
yum install vsftpd -y
systemctl start vsftpd
#在線下載
wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.50/bin/apache-tomcat-8.5.50.tar.gz
- 安裝jdk
[root@localhost ~]# mount.cifs //192.168.226.1/LAMP-C7 /mnt
Password for root@//192.168.226.1/LAMP-C7:
[root@localhost ~]# cd /mnt/
[root@localhost mnt]# rpm -ivh jdk-8u201-linux-x64.rpm
.....省略部分內容
[[root@localhost mnt]# cd /usr/java/jdk1.8.0_201-amd64/
[root@localhost jdk1.8.0_201-amd64]# java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b12)
OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)
- 添加環境變量
[root@localhost jdk1.8.0_201-amd64]# vim /etc/profile
[root@localhost jdk1.8.0_201-amd64]# tail -3 /etc/profile
export JAVA_HOME=/opt/jdk1.8.0_231
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH
#刷新生效
[root@localhost jdk1.8.0_201-amd64]# source /etc/profile
2.2.2 安裝Tomcat
[root@localhost jdk1.8.0_201-amd64]# cd /mnt
[root@localhost mnt]# tar zxvf apache-tomcat-8.5.16.tar.gz -C /opt
#將tomcat文件移動到/usr/local,同時重命名爲tomcat
[root@localhost mnt]# mv /opt/apache-tomcat-9.0.16/ /usr/local/tomcat
#開啓服務
root@localhost mnt]# mv /opt/apache-tomcat-8.5.16/ /usr/local/tomcat
[root@localhost mnt]# cd /usr/local/tomcat/bin/
#執行啓動腳本
[root@localhost bin]# ./startup.sh
[root@localhost bin]# netstat -natp | grep 8080
tcp6 0 0 :::8080 :::* LISTEN 13948/java
三、訪問Tomcat服務器
3.1 訪問測試
3.2 Tomcat目錄文件詳解
[root@localhost tomcat]# ll
total 92
drwxr-x---. 2 root root 4096 Mar 30 15:36 bin
drwx------. 3 root root 254 Mar 30 15:36 conf
drwxr-x---. 2 root root 4096 Mar 30 15:36 lib
-rw-r-----. 1 root root 57092 Jun 22 2017 LICENSE
drwxr-x---. 2 root root 197 Mar 30 15:36 logs
-rw-r-----. 1 root root 1723 Jun 22 2017 NOTICE
-rw-r-----. 1 root root 7064 Jun 22 2017 RELEASE-NOTES
-rw-r-----. 1 root root 15946 Jun 22 2017 RUNNING.txt
drwxr-x---. 2 root root 30 Mar 30 15:36 temp
drwxr-x---. 7 root root 81 Jun 22 2017 webapps
drwxr-x---. 3 root root 22 Mar 30 15:36 work
-
配置詳解:
① bin :啓動和關閉Tomcat腳本文件
② conf:存放Tomcat服務器各種配置文件
③ lib :Tomcat服務器的jar包
④ logs:Tomcat日誌
⑤ temp:Tomcat運行時產生的文件
⑥ webapps:項目資源的目錄
⑦ work:Tomcat工作目錄
3.3 Tomcat配置文件詳解
[root@localhost conf]# ll
total 224
drwxr-x---. 3 root root 23 Mar 30 15:36 Catalina
-rw-------. 1 root root 13816 Jun 22 2017 catalina.policy
-rw-------. 1 root root 7376 Jun 22 2017 catalina.properties
-rw-------. 1 root root 1338 Jun 22 2017 context.xml
-rw-------. 1 root root 1149 Jun 22 2017 jaspic-providers.xml
-rw-------. 1 root root 2358 Jun 22 2017 jaspic-providers.xsd
-rw-------. 1 root root 3622 Jun 22 2017 logging.properties
-rw-------. 1 root root 7511 Jun 22 2017 server.xml
-rw-------. 1 root root 2164 Jun 22 2017 tomcat-users.xml
-rw-------. 1 root root 2633 Jun 22 2017 tomcat-users.xsd
-rw-------. 1 root root 168251 Jun 22 2017 web.xml
- 配置文件詳解
- ① catalina.policy:權限控制配置文件
- ② catalina.properties:Tomcat的屬性配置文件
- ③ context.xml:上下文配置文件
- ④ logging.properties:日誌相關配置文件
- ⑤ server.xml:主配置文件,通過配置文件,可以修改tomcat的啓動端口、網站目錄、虛擬主機、開啓https等功能
- ⑥ tomcat-user.xml/.xsd:管理用戶配置文件
制配置文件
⑦ web.xml:Tomcat的servlet、servlet-mapping、filter、MIME等相關配置