溫馨提示×

溫馨提示×

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

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

Tomcat的安裝部署

發(fā)布時間:2020-06-12 14:02:49 來源:億速云 閱讀:126 作者:元一 欄目:系統(tǒng)運維

一、前言

今天講解有關tomcat的安裝部署。

1.Apache和Nginx的區(qū)別

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

2.Apache和Nginx的特點

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

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

二、Tomcat概念

1.Tomcat 簡介

Tomcat是Apache 軟件基金會(Apache Software Foundation)的Jakarta 項目中的一個核心項目,由Apache、Sun 和其他一些公司及個人共同開發(fā)而成。由于有了Sun 的參與和支持,最新的Servlet 和JSP 規(guī)范總是能在Tomcat 中得到體現(xiàn),Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 規(guī)范。因為Tomcat 技術先進、性能穩(wěn)定,而且免費,因而深受Java 愛好者的喜愛并得到了部分軟件開發(fā)商的認可,成為目前比較流行的Web 應用服務器。

Tomcat優(yōu)點

1、兼有可擴du展性和安全性。假如單位時間內(nèi)訪問請求zhi數(shù)急劇增加,可以用相對較低的費dao用增加前端的能力。

2、比較容易擴展。由于是通過在這臺功能強大的服務器上運行的單個servlet容器,實際上也就不需要考慮session狀態(tài)在分布式環(huán)境下的維護這類復雜的問題。

3、臺后端服務器在外界不可以訪問,網(wǎng)上的黑客只能訪問前端的web服務器,不能直接訪問后端的應用服務器,這就提高了安全性。但這并不意味著黑客們不能通過網(wǎng)絡瀏覽器進行其它形式的攻擊。

2.Tomcat優(yōu)勢

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

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

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

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

三、Tomcat的核心組件

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

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

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

四、Tomcat處理請求過程

1) 請求被發(fā)送到本機端口 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)     構(gòu)造 HttpServletRequest 對象和 HttpServletResponse 對象, 作為參數(shù)調(diào)用JSPServlet 的 doGet()或 doPost()方法。

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

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

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

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

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

Tomcat的安裝部署

connector連接器和container容器

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

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

五、Tomcat部署操作流程

所需環(huán)境:

  • 系統(tǒng)版本: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/:函數(shù)庫目錄

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

3.設置環(huán)境變量(系統(tǒng)環(huán)境變量/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設置環(huán)境變量
[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     #添加的內(nèi)容

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.優(yōu)化啟動關閉腳本,開啟關閉操作

[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的安裝部署

向AI問一下細節(jié)

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

AI