中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Tomcat部署(原理詳解與部署實操)

發布時間:2020-08-07 19:26:37 來源:網絡 閱讀:755 作者:wx5d8a17c45cb5b 欄目:系統運維

Tomcat部署

一、前言

? 之前的文章講述的是web中兩大服務器軟件:Apache和Nginx,在這,對此我們先做一個簡單的小結。

1.Apache和Nginx的特點與性能

? Apache支持支持模塊多,性能穩定,Apache本身是靜態解析,適合靜態HTML、圖片等,但可以通過擴展腳本、模塊等支持動態頁面等。但是其配置相對復雜,自身不支持動態頁面。

? Nginx,輕量級的HTTP服務器,是一個高性能的HTTP和反向代理服務器,同時也是一個IMAP/POP3/SMTP 代理服務器。其特點是占有內存少,并發能力強,易于開發,部署方便。Nginx 支持多語言通用服務器。但是,Nginx 只適合靜態和反向代理。其優點在于支持:負載均衡、反向代理、處理靜態文件。Nginx 處理靜態請求的速度高于Apache(3倍以上)。

2.Apache和Nginx的區別

Apache是同步多進程模型,一個連接對應一個進程,而nginx是異步的,多個連接(萬級別)可以對應一個進程。
nginx輕量級,抗并發,處理靜態文件好
Apache超穩定,對PHP支持比較簡單,nginx需要配合其他后端用,處理動態請求有優勢,建議使用前端nginx抗并發,后端apache集群,配合起來會更好。

二、Tomcat概念

1.Tomcat 是什么?

Tomcat部署(原理詳解與部署實操)

? Tomcat是Apache 軟件基金會(Apache Software Foundation)的Jakarta 項目中的一個核心項目,由Apache、Sun 和其他一些公司及個人共同開發而成。Tomcat 服務器是一個免費的開放源代碼的Web 應用服務器,屬于輕量級應用服務器。

? Tomcat是應用(Java)服務器,它只是一個Servlet(JSP也翻譯成Servlet)容器,可以認為是Apache的擴展,但是可以獨立于Apache運行。

2.為什么需要Tomcat?

? 對于學習了或者正在學習Java的朋友對Tomcat應該是比較熟悉的了。

? 最新的Servlet 和JSP 規范總是能在Tomcat 中得到體現,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 規范。因為Tomcat 技術先進、性能穩定,而且免費,因而深受Java 愛好者的喜愛并得到了部分軟件開發商的認可,成為目前比較流行的Web 應用服務器。

? 其優點在于它是一個動態解析容器,處理動態請求,是編譯JSP/Servlet的容器,其缺點也十分明顯,只能做Java服務器,并且在并發量上有限制。

? 至于更加深層的原因,需要有一定的架構思想才能深入理解和總結歸納Apache、Nginx和Tomcat的區別于聯系。本文核心是針對初學者而言,主要講解Tomcat的部署操作流程,因此,更深的原因在這里就不再贅述了,但是我們一定要知道“無論什么,存在的就是合理的,而我們所要做的便是透過現象看本質!”

三、Tomcat的核心組件

Tomcat 是 Apache 下的一個子項目,它具備 Web 服務器的所有功能,不僅可以監聽接受請求并響應靜態資源,而且可以在后端運行特定規范 的 Java 代碼 Servlet,同時將執行的結果以 HTML 代碼的形式寫回客戶端。

Tomcat的三大核心組件:Web容器、Servlet容器以及JSP容器

  1. Web容器:完成Web服務器的功能;
  2. Servlet容器:名字為catalina,用于處理Servlet代碼;
  3. JSP容器:用于將JSP動態網頁翻譯成Servlet代碼。

四、Tomcat處理請求過程

1) 請求被發送到本機端口 8080,被在那里偵聽的 Coyote HTTP/11.1 Connector(連接器) 獲得。

2) Connector 把該請求交給它所在的 Service 的 Engine(引擎) 來處理,并等待來自 Engine的回應。

3) Engine 獲得請求 localhost/yy/index.JSP,匹配它所擁有的所有虛擬主機 Host;

? Engine 匹配到名為 localhost 的 Host。即使匹配不到也把請求交給該 Host 處理, 因為該 Host 被定義為該 Engine 的默認主機。

4) localhost Host 獲得請求/yy/index.JSP,匹配它所擁有的所有 Context;

? Host 匹配到路徑為/yy 的 Context。如果匹配不到,就把該請求交給路徑名為“”的 Context 去處理。

5) path=”/yy”的 Context 獲得請求/index.JSP,在它的 mapping table 中尋找對應的 Servlet。

? Context 匹配到 URL PATTERN 為*.JSP 的 Servlet,對應于 JSPServlet 類。

6) 構造 HttpServletRequest 對象和 HttpServletResponse 對象, 作為參數調用JSPServlet 的 doGet()或 doPost()方法。

7) Context 把執行完了之后的 HttpServletResponse 對象返回給 Host。

8) Host 把 HttpServletResponse 對象返回給 Engine。

9) Engine 把 HttpServletResponse 對象返回給 Connector。

10) Connector 把 HttpServletResponse 對象返回給客戶 browser。

或許看了上面的過程,感覺實在是過于復雜,下面給出具體的流程圖,大家可以根據流程圖進行邏輯上的理解:

Tomcat部署(原理詳解與部署實操)

connector連接器和container容器

? Connector 用于接收請求并將請求封裝成Request 和Response 來具體處理,(最底層是使用Socket 來進行連接的)其中 Request 和Response 是按照HTTP 協議來封裝的,所以Connector 同時實現了TCP/IP 協議和HTTP 協議, Request 和Response 封裝完后交給Container 進行處理,Container 即Servlet 的容器, Container 處理完之后返回給Connector,最后Connector 使用Socket 將處理結果返回給客戶端,這樣整個請求就處理完了,具體請求過程如上圖所示。

? 而Container 則是Tomcat 中容器的接口,通常使用的Servlet 就封裝在其子接口Wrapper 中。(Container 一共有4 個子接口Engine 、Host 、Context 、Wrapper 和一個默認實現類ContainerBase,每個子接口都是一個容器,這4 個子容器都有一個對應的StandardXXX 實現類,并且這些實現類都繼承ContainerBase 類。另外Container 還繼承Lifecycle 接口,而且ContainerBase 間接繼承LifecycleBase,所以Engine 、Host 、Context 、Wrapper 4 個子容器都符合前面講過的Tomcat生命周期管理模式。)

五、Tomcat部署操作流程

所需環境:

  • 系統版本:Centos7
  • Tomcat版本:9.0.8
  • jdk版本:1.8.0_201
  • 服務器ip地址:192.168.68.145

部署具體步驟:

1.首先需要以下兩個包

[root@localhost tomcat]# ls
apache-tomcat-9.0.16.tar.gz jdk-8u201-linux-x64.rpm

軟件包鏈接:https://pan.baidu.com/s/1q9igHqlkIVJtqRS8zbuibQ
提取碼:xzaj

2.安裝jdk

[root@localhost tomcat]# rpm -ivh jdk-8u201-linux-x64.rpm 
警告:jdk-8u201-linux-x64.rpm: 頭V3 RSA/SHA256 Signature, 密鑰 ID ec551f03: NOKEY
準備中...                          ################################# [100%]
正在升級/安裝...
   1:jdk1.8-2000:1.8.0_201-fcs        ################################# [100%]
Unpacking JAR files...
        tools.jar...
        plugin.jar...
        javaws.jar...
        deploy.jar...
        rt.jar...
        jsse.jar...
        charsets.jar...
        localedata.jar...
[root@localhost tomcat]# cd /usr/java/
[root@localhost java]# ls
default  jdk1.8.0_201-amd64  latest
[root@localhost java]# cd jdk1.8.0_201-amd64/
[root@localhost jdk1.8.0_201-amd64]# ls
bin             lib          src.zip
COPYRIGHT       LICENSE      THIRDPARTYLICENSEREADME-JAVAFX.txt
include         man          THIRDPARTYLICENSEREADME.txt
javafx-src.zip  README.html
jre             release

bin/:命令文件存放目錄

jre/:jvm的虛擬機存放位置

lib/:函數庫目錄

src.zip/:源碼壓縮包目錄

3.設置環境變量(系統環境變量/etc/profile)

3.1查看當前路徑,查看jdk原版本
[root@localhost jdk1.8.0_201-amd64]# pwd
/usr/java/jdk1.8.0_201-amd64
[root@localhost jdk1.8.0_201-amd64]# java -version            #簡化版jdk原本就集成在Centos7中
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]# 
3.2設置環境變量
[root@localhost jdk1.8.0_201-amd64]# vim /etc/profile         
[root@localhost jdk1.8.0_201-amd64]# source /etc/profile 
[root@localhost jdk1.8.0_201-amd64]# tail -3 /etc/profile     #添加的內容

export JAVA_NAME=/usr/java/jdk1.8.0_201-amd64         #工作路徑
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar   #類文件的位置
export PATH=$JAVA_NAME/bin:$PATH                      #命令文件
[root@localhost jdk1.8.0_201-amd64]# java      #證明source成功
java            javafxpackager  javapackager    javaws.itweb
javac           javah           java-rmi.cgi    
javadoc         javap           javaws          
[root@localhost jdk1.8.0_201-amd64]# java -version
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)

[root@localhost jdk1.8.0_201-amd64]# 

4.安裝Tomcat

[root@localhost tomcat]# ls
apache-tomcat-9.0.16.tar.gz  jdk-8u201-linux-x64.rpm
[root@localhost tomcat]# tar zxf apache-tomcat-9.0.16.tar.gz -C /opt
[root@localhost tomcat]# cd /opt/
[root@localhost opt]# ls
apache-tomcat-9.0.16  rh
[root@localhost opt]# mv apache-tomcat-9.0.16/ tomcat
[root@localhost opt]# ls
rh  tomcat
[root@localhost opt]# cd tomcat/
[root@localhost tomcat]# ls
bin           CONTRIBUTING.md  logs       RELEASE-NOTES  webapps
BUILDING.txt  lib              NOTICE     RUNNING.txt    work
conf          LICENSE          README.md  temp

其中 webapps是站點,

5.優化啟動關閉腳本,開啟關閉操作

[root@localhost tomcat]# cd bin/
[root@localhost bin]# ls
bootstrap.jar                 makebase.sh
catalina.bat                  setclasspath.bat
catalina.sh                   setclasspath.sh
catalina-tasks.xml            shutdown.bat
ciphers.bat                   shutdown.sh
ciphers.sh                    startup.bat
commons-daemon.jar            startup.sh
commons-daemon-native.tar.gz  tomcat-juli.jar
configtest.bat                tomcat-native.tar.gz
configtest.sh                 tool-wrapper.bat
daemon.sh                     tool-wrapper.sh
digest.bat                    version.bat
digest.sh                     version.sh
makebase.bat
[root@localhost bin]# ln -s /opt/tomcat/bin/startup.sh /usr/bin
[root@localhost bin]# ln -s /opt/tomcat/bin/shutdown.sh /usr/bin[root@localhost bin]# systemctl stop firewalld.service 
[root@localhost bin]# setenforce 0
[root@localhost bin]# startup.sh  #開啟服務
Using CATALINA_BASE:   /opt/tomcat
Using CATALINA_HOME:   /opt/tomcat
Using CATALINA_TMPDIR: /opt/tomcat/temp
Using JRE_HOME:        /usr/java/jdk1.8.0_201-amd64
Using CLASSPATH:       /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@localhost bin]# netstat -antp | grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      47064/java
[root@localhost bin]# shutdown.sh 
Using CATALINA_BASE:   /opt/tomcat
Using CATALINA_HOME:   /opt/tomcat
Using CATALINA_TMPDIR: /opt/tomcat/temp
Using JRE_HOME:        /usr/java/jdk1.8.0_201-amd64
Using CLASSPATH:       /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar
[root@localhost bin]# netstat -antp | grep 8080
tcp6       0      0 ::1:39678               ::1:8080                TIME_WAIT   -                   

6.測試驗證

當我們開啟Tomcat服務的時候,可以在瀏覽器中使用“IP地址:8080”進行訪問,如下圖所示

Tomcat部署(原理詳解與部署實操)

六、總結

? 本文主要結合之前的Apache與Nginx,將二者進行簡單的對比,歸納,從而引出Tomcat應用服務器,講述了其概念、其自身的特性與三大核心組件:三個容器(Web、JSP、Servlet),接著利用一個簡單的流程圖詳細講述了Tomcat處理請求過程,最后給出如何安裝、部署、測試Tomcat服務器,謝謝您的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

景洪市| 磐安县| 威宁| 资讯| 安岳县| 陕西省| 广东省| 平湖市| 南皮县| 开江县| 正定县| 汝城县| 雅江县| 墨竹工卡县| 紫金县| 浪卡子县| 平安县| 博野县| 望都县| 砀山县| 石台县| 武义县| 拜泉县| 安泽县| 改则县| 中西区| 英吉沙县| 开阳县| 缙云县| 罗城| 南澳县| 手机| 旌德县| 麻阳| 抚顺市| 彝良县| 星座| 彭泽县| 那坡县| 兴隆县| 邹城市|