日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Tomcat概述

發布時間:2023/12/20 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Tomcat概述 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、Tomcat簡介
    • (1)Tomcat概述
    • (2)Tomcat和Apache的比較
    • (3)Tomcat同類產品
    • (4)Tocmat和JDK的關系
    • (5)Tomcat和JDK版本對應圖
  • 二、Tomcat工作原理
    • (1)Tomcat整體架構
    • (2)Container組件詳解:
    • (3)Tomcat處理請求過程
    • (4)Tomcat中的連接器
    • (5)Tomcat的目錄
    • (6)Tomcat常見日志
  • 三、部署Tomcat
    • (1)實驗環境
    • (2)實驗目的
    • (3)實驗步驟
    • (4)擴展—安裝mariadb數據庫配置Tomcat的manager管理界面
    • (5)自定義頁面
    • (6)配置Tomcat虛擬主機
    • (7)同一主機做兩個實例的方法
    • (8)Tomcat主機名(域名)

一、Tomcat簡介

(1)Tomcat概述

  • tomcat是由apache軟件基金會下屬的jakarta項目開發的一個servlet容器,安裝SunMicrosystems提供的技術規范,實現了對servlet和javaServer Page(JSP)的支持,并提供了作為Web服務器的一些特有功能
  • Tomcat可以解析靜態頁面也可以解析動態頁面 (JSP頁面) ,但是解析靜態頁面的效率沒有apache好。可以解析動態頁面是因為tomcat是java語言開發的,所以想要使用tomcat必須在服務器上安裝JDK環境


(2)Tomcat和Apache的比較

  • 兩者的相同點:
  • 兩者都是由Apache組織開發的
  • 兩者都有HTTP服務器的功能
  • 兩者都是開源的
    • 兩者的不同點:
  • Apache是專門用來提供HTTP服務的,以及相關配置的 (如虛擬主機、URL轉發等HTTP服務器的基本功能) ,而Tomcat是Apache組織在符合Java EE的JSP、Servlet標準下開發的一個JSP服務器,所以按這個來說Tomcat只是有著HTTP服務的一些功能,并不是一個“專業”的HTTP服務
  • Apache是一個Web服務器環境程序,啟用Apache可以作為Web服務器來使用,不過只可以解析靜態頁面。如果想要解析動態頁面 (JSP頁面) 則需要一個解析動態頁面的解釋器,也就是一個中間件,而Tomcat就可以當這個中間件
  • Apache側重于HTTPServer,Tomcat側重于servlet引擎,如果以Standalone方式運行,功能上與Apache相持平,支持JSP頁面,但是對靜態頁面不太理想
  • Apache是Web服務器,Tomcat是應用服務器,Tomcat只是一個servlet容器 (JSP也被翻譯成servlet) ,可以認為是Apache的擴展,但是也可以獨立運行

  • (3)Tomcat同類產品

    • Resin服務器
    • Jetty服務器
    • JBoss服務器
    • WebSphere服務器
    • Weblogic服務器

    在實際環境中,使用最多的一般是Tomcat和Weblogic


    擴展:

    Weblogic是Orcale公司的產品 (Orcale公司的產品都是收費的) ,可以進一步細分為Weblogic Server、Weblogic Enterprise和Weblogic Portal等系列,其中Weblogic Server的功能特別強大,Weblogic支持企業級的、多層次的和完全分布式的Web應用,并且服務器的配置簡單,界面友好,對于那些正在尋找能夠提供Java平臺所擁有的一切應用服務器的用戶來說,Weblogic是一個十分理想的選擇


    (4)Tocmat和JDK的關系

    • JDK是開發人員開發使用,由java語言編寫的,用來給java程序調用的
    • JRE是用來運行Java程序的,也就是Java程序的運行環境
    • JVM是整個Java實現跨平臺運行的最核心部分,在運行java程序時,所有的Java程序會首先被編譯成,class的類文件,這種類文件可以在虛擬機上執行,也就是說只要運行java的程序都是在JVM上面跑的

    JDK包含JRE和JVM,在JDK的安裝目錄下有一個名為jre的目錄,里面有兩個文件夾bin和lib,這里的bin就是JVM,而lib中則是JVM工作所需要的類庫,bin和lib兩個文件夾合起來就是JRE。

    JVM因為會與平臺進行交互,所以使用c/c++和匯編語言編寫的

    JDK是java運行和編譯的前提條件,而tomcat是web項目的運行容器是由java語言開發的,java沒有JDK就沒有辦法進行編譯和運行,必須依賴JDK的環境,所以安裝Tomcat之前必須先安裝JDK環境

    (5)Tomcat和JDK版本對應圖

    二、Tomcat工作原理

    (1)Tomcat整體架構

    • Server服務器(Tomcat服務器)包含一個或多個Service服務。
    • 而每個Service服務中又包含了Connector和Container兩個核心組件和其他組件。
    • 核心組件Connector包含一個或多個Connector。
    • 核心組件Container包含一個Container。并且可以關聯一個或者多個Connector

    組件解析:

  • Tomcat的有兩個核心組件,相當于“心臟”,分別是Connector和Container
  • 核心組件Connector是可以被替換的,這樣會讓Tomcat更加靈活
  • 一個Container可以對應多個Connector,多個Connector和一個Container就形成了一個Service,有了Service就可以對外提供服務器,但是Service必須有一個可以生存的環境,而這個環境就是Server。Server可以控制Service的生命周期
  • 在Service中,核心組件Connector主要負責對外交流也就是接受用戶的請求,上面說到多個Connector是關聯著一個Container的,而多個Connector接受的請求會發送給自己關聯的Container,Container會處理這些請求,然后直接返回給Service
  • 那么除了這兩個核心組件之外,其他組件有什么用呢,其實兩個核心組件提供的就是HTTP服務的基礎功能,其他組件就像Apache、Nginx的一些模組一樣,說白了Service就像一個箱子,把這些組件裝到一起然后對外提供服務
  • (2)Container組件詳解:

    • Engine:負責處理Connector發過來的所有請求,處理后,會將處理結果直接返回給Service,而Connector是作為Service與Engine的中間媒介出現的。

      一個Engine下可以配置一個默認主機和多個虛擬主機(Host),每個虛擬主機都有一個域名,當Engine獲得一個請求時,他會把該請求匹配到某個虛擬主機host上,然后把請求交給該虛擬主機來處理。

      Engine有一個默認主機,當獲得的請求無法匹配到任何虛擬主機時,這個請求最終會交給默認主機 (默認Host) 來處理。

      Engine以線程的方式啟動Host,也就是說有幾個虛擬主機,Tomcat就會產生相應的線程數。

    • Host:代表一個虛擬主機,每個虛擬主機和某個網絡域名(Domain Name)相匹配。

      每個虛擬主機下都可以部署一個或多個Web應用,每個Web應用對應于一個Context,有一個Context path,當Host獲得一個請求時,將把該請求匹配到某個Context上

    • Wrapper:代表一個Servlet容器,他負責管理一個Servlet,包括Servlet的裝載、初始化、執行以及資源回收。

      Wrapper是最底層的容器,他沒有子容器了

    (3)Tomcat處理請求過程

  • 客戶端發送請求給Tomcat的8080端口,Connector接受請求
  • Connector接受請求后發送給Container處理請求,Container交給Engine
  • Engine分配虛擬主機處理請求
  • 虛擬主機分配請求給Context
  • Context交給Servlet實例處理請求
  • Servlet處理完后交給Context
  • Context交給Host
  • Host交給Engine
  • Engine直接把處理好的請求交給Service
  • Service返回請求給客戶端
  • HTTP協議、HTTPS協議、AJP協議和其他協議的請求都是這個處理過程

    (4)Tomcat中的連接器

    Tomcat中支持兩種協議的連接器:HTTP/1.1和AJP/1.3和一個用來關閉Tomcat的連接器

    • HTTP/1.1協議負責建立HTTP連接,web應用通過瀏覽器訪問Tomcat服務器使用的就是這個連接器,默認監聽的端口是TCP8080端口

    • AJP/1.3協議負載和其他HTTP服務器建立連接,監聽的是TCP8009端口,比如Tomcat和apache或者iis(windows的web服務)建立連接時就會用到這個連接器

    • 還有一個TCP8005的監聽端口,這個的作用是用來關閉Tomcat的,所以說Tomcat中默認有三個連接器

    (5)Tomcat的目錄

    目錄作用
    bin存放著啟動和關閉tomcat的腳本
    conf存放著不同的配置文件,server.xml是主配置文件
    doc存放tomcat文檔
    lib/japser/common存放tomcat運行所需要的庫文件
    logs存放tomcat運行時產生的日志文件
    src存放tomcat的源代碼
    webappstomcat默認的網頁存放路徑
    work存放jsp編譯后產生的class文件
    • bin下的配置文件:

    server.xml:Tomcat的主配置文件,包含Service、Connector、Engine、Redin、Valve、Hosts等組件的相關配置信息

    web.xml:遵循Servlet規范標準的配置文,用于配置servlet,并為所有的web應用程序提供包括MIME等默認配置信息

    (6)Tomcat常見日志

    日志存放路徑:/usr/local/tomcat/logs/

    日志作用
    localhost.log程序異常沒有被捕獲的時候拋出的地方,記錄Tomcat異常狀態**(常用)**
    catalina.out程序的輸出、Tomcat的日志輸出,記錄所有類型的日志**(常用)**
    localhost_access_log.txtTomcat訪問成功日志**(常用)**
    manager.log記錄Tomcat根目錄下webapps/manager項目所產生的日志
    host-manager.log記錄Tomcat根目錄下webapps/host-manager項目所產生的日志

    三、部署Tomcat

    (1)實驗環境

    系統ip地址主機名Tomcat版本JDK版本
    CentOS7.4192.168.100.202rzyapache-tomcat-8.5.16.tar.gzjdk-8u91-linux-x64.tar.gz

    (2)實驗目的

    使客戶端可以成功訪問Tomcat

    (3)實驗步驟

    ******(1)先做基礎配置 [root@Centos7 ~]# hostnamectl set-hostname rzy [root@Centos7 ~]# su [root@rzy ~]# systemctl stop firewalld [root@rzy ~]# setenforce 0 setenforce: SELinux is disabled [root@rzy ~]# mount /dev/cdrom /mnt/ mount: /dev/sr0 寫保護,將以只讀方式掛載 mount: /dev/sr0 已經掛載或 /mnt 忙/dev/sr0 已經掛載到 /mnt 上******(2)上傳Tomcat和JDK的壓縮包,先安裝JDK環境 [root@rzy ~]# ll 總用量 182152 -rw-------. 1 root root 1264 112 18:27 anaconda-ks.cfg -rw-r--r-- 1 root root 5147367 57 17:49 apache-tomcat-8.5.16.tar.gz -rw-r--r-- 1 root root 181367942 57 17:49 jdk-8u91-linux-x64.tar.gz [root@rzy ~]# rpm -qa | grep java #先查看本機是否有java [root@rzy ~]# tar xf jdk-8u91-linux-x64.tar.gz #解壓JDK包 [root@rzy ~]# mv jdk1.8.0_91/ /usr/local/java #移動解壓后目錄 [root@rzy ~]# 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@rzy ~]# cat <<a>> /etc/profile #往profile配置文件中修改全局變量PATH,增加JDK也就是java的根目錄和bin命令目錄 > export PATH=$PATH:/usr/local/java/bin:/usr/local/java > a [root@rzy ~]# source /etc/profile #執行腳本,使剛才操作生效 [root@rzy ~]# echo $PATH #查看是否成功添加路徑(優化執行路徑) /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/java/bin:/usr/local/java [root@rzy ~]# java -version #查看java版本,可以成功查看說明已經成功添加java環境 java version "1.8.0_91" Java(TM) SE Runtime Environment (build 1.8.0_91-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)******(3)安裝完JDK后安裝Tomcat [root@rzy ~]# tar xf apache-tomcat-8.5.16.tar.gz [root@rzy ~]# mv apache-tomcat-8.5.16 /usr/local/tomcat [root@rzy ~]# ls /usr/local/tomcat/ bin conf lib LICENSE logs NOTICE RELEASE-NOTES RUNNING.txt temp webapps work [root@rzy ~]# /usr/local/tomcat/bin/startup.sh #啟動tomcat Using CATALINA_BASE: /usr/local/tomcat Using CATALINA_HOME: /usr/local/tomcat Using CATALINA_TMPDIR: /usr/local/tomcat/temp Using JRE_HOME: /usr/local/java Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar Tomcat started. [root@rzy ~]# netstat -anpt | grep java #查看端口,發現三個監聽端口,這個就是三個連接器 tcp6 0 0 :::8080 :::* LISTEN 1227/java tcp6 0 0 127.0.0.1:8005 :::* LISTEN 1227/java tcp6 0 0 :::8009 :::* LISTEN 1227/java

    測試:(訪問服務器的8080端口)

    (4)擴展—安裝mariadb數據庫配置Tomcat的manager管理界面

    ******(1)繼續上面的步驟 [root@rzy ~]# yum -y install mariadb-server mysql #使用yum安裝 。。。。。。 完畢! [root@rzy ~]# systemctl enable mariadb Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service. [root@rzy ~]# systemctl start mariadb [root@rzy ~]# mysqladmin -u root -p password Enter password: New password: Confirm new password: [root@rzy ~]# mysql -u root -p123123 Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 3 Server version: 5.5.56-MariaDB MariaDB ServerCopyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | +--------------------+ 4 rows in set (0.00 sec)MariaDB [(none)]> exit Bye******(2)配置Tomcat的manager管理界面 [root@rzy ~]# vim /usr/local/tomcat/conf/tomcat-users.xml #末尾添加,要記得在</tomcat-users>項中添加,不然不會生效 。。。。。。44 <role rolename="manager-gui"/> #添加管理頁面的用戶認證45 <user username="tomcat" password="tomcat" roles="manager-gui"/> #添加用戶名和密碼46 </tomcat-users> 。。。。。。 保存退出 [root@rzy ~]# vim /usr/local/tomcat/webapps/manager/META-INF/context.xml 。。。。。。17 -->18 <Context antiResourceLocking="false" privileged="true" >19 <Valve className="org.apache.catalina.valves.RemoteAddrValve"20 allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|\d+\.\d+\.\d+\.\d+" /> #添加所有網段都可用21 <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionF ilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>22 </Context> 。。。。。。 完畢!

    先進行訪問:

    現在重啟tomcat

    再次進行訪問:

    成功查看狀態

    (5)自定義頁面

    [root@rzy webapps]# mkdir -p /web/webapp/ [root@rzy webapps]# vim /web/webapp/index.jsp <html><head><title>JSP TEST PAGE1 </title></head><body><% out.println("aaaaaaaaaaaaaaaa");%></body> </html> [root@rzy webapps]# vim /usr/local/tomcat/conf/server.xml #修改主配置文件,這里直接使用localhost,沒有修改域名 。。。。。。#這里刪除了注釋所以是33行,不刪除注釋是150行33 unpackWARs="true" autoDeploy="true">34 <Context docBase="/web/webapp" path="" reloadable="false"></Context> #修改網頁存放路徑35 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"36 。。。。。。 保存退出

    測試,驗證

    (6)配置Tomcat虛擬主機

    ******(1)繼續上面的操作,先創建虛擬主機的目錄 [root@rzy ~]# mkdir -p /web2/webapp/ [root@rzy ~]# cp /web/webapp/index.jsp /web2/webapp/index.jsp [root@rzy ~]# sed -i 's/a/b/g' /web2/webapp/index.jsp [root@rzy ~]# cat /web2/webapp/index.jsp <html><hebd><title>JSP TEST PAGE1 </title></hebd><body><% out.println("bbbbbbbbbbbbbbbb");%></body> </html>******(2)修改配置文件 [root@rzy ~]# vim /usr/local/tomcat/conf/server.xml #以<!-- 開頭 -->結尾的都是注釋,可以自行刪除 。。。。。。 #復制Host區域,一個Host就是一個虛擬主機,域名不同然后把兩個虛擬主機的網頁存放路徑指向不同的路徑即可32 <Host name="www.aaa.com" appBase="webapps"33 unpackWARs="true" autoDeploy="true"> #設置自動識別war包,開啟自動部署34 <Context docBase="/web/webapp" path="" reloadable="false"></Context> #設置網頁存放路徑,tomcat把web應用程序映射為root URL路徑,reloadable選項建議為false35 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"36 prefix="localhost_access_log" suffix=".txt"37 pattern="%h %l %u %t &quot;%r&quot; %s %b" />38 39 </Host>40 <Host name="www.bbb.com" appBase="webapps"41 unpackWARs="true" autoDeploy="true">42 <Context docBase="/web2/webapp" path="" reloadable="false"></Context>43 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"44 prefix="localhost_access_log" suffix=".txt"45 pattern="%h %l %u %t &quot;%r&quot; %s %b" />46 47 </Host> 。。。。。。 #保存退出 [root@rzy ~]# /usr/local/tomcat/bin/shutdown.sh #重啟tomcat Using CATALINA_BASE: /usr/local/tomcat Using CATALINA_HOME: /usr/local/tomcat Using CATALINA_TMPDIR: /usr/local/tomcat/temp Using JRE_HOME: /usr/local/java Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar [root@rzy ~]# /usr/local/tomcat/bin/startup.sh Using CATALINA_BASE: /usr/local/tomcat Using CATALINA_HOME: /usr/local/tomcat Using CATALINA_TMPDIR: /usr/local/tomcat/temp Using JRE_HOME: /usr/local/java Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar Tomcat started.

    測試,修改hosts文件

    訪問不同的域名,要記得加端口號,發現出現兩個不同的網頁

    (7)同一主機做兩個實例的方法

  • 在主配置文件中,直接把所有的Service區域復制一下,修改兩個連接器的端口號不沖突即可
  • [root@rzy ~]# vim /usr/local/tomcat/conf/server.xml 。。。。。。17 <Service name="Catalina">18 <Connector port="8080" protocol="HTTP/1.1" #端口號不能相同,域名和網頁存放路徑也不能相同19 connectionTimeout="20000"20 redirectPort="8443" />21 <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> #8080和8009的端口22 <Engine name="Catalina" defaultHost="localhost">23 <Realm className="org.apache.catalina.realm.LockOutRealm">24 <Realm className="org.apache.catalina.realm.UserDatabaseRealm"25 resourceName="UserDatabase"/>26 </Realm>27 <Host name="www.aaa.com" appBase="webapps"28 unpackWARs="true" autoDeploy="true">29 <Context docBase="/web/webapp" path="" reloadable="false"></Context>30 </Host>31 </Engine>32 </Service>33 <Service name="Catalina">34 <Connector port="8081" protocol="HTTP/1.1" #改成8081和801035 connectionTimeout="20000"36 redirectPort="8443" />37 <Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />38 <Engine name="Catalina" defaultHost="localhost">39 <Realm className="org.apache.catalina.realm.LockOutRealm">40 <Realm className="org.apache.catalina.realm.UserDatabaseRealm"41 resourceName="UserDatabase"/>42 </Realm>43 <Host name="www.bbb.com" appBase="webapps"44 unpackWARs="true" autoDeploy="true">45 <Context docBase="/web2/webapp" path="" reloadable="false"></Context>46 </Host>47 </Engine>48 </Service>49 </Server> #保存退出 [root@rzy ~]# /usr/local/tomcat/bin/shutdown.sh #重新啟動 Using CATALINA_BASE: /usr/local/tomcat Using CATALINA_HOME: /usr/local/tomcat Using CATALINA_TMPDIR: /usr/local/tomcat/temp Using JRE_HOME: /usr/local/java Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar [root@rzy ~]# /usr/local/tomcat/bin/startup.sh Using CATALINA_BASE: /usr/local/tomcat Using CATALINA_HOME: /usr/local/tomcat Using CATALINA_TMPDIR: /usr/local/tomcat/temp Using JRE_HOME: /usr/local/java Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar Tomcat started. [root@rzy ~]# netstat -anpt | grep java #查看端口,發現有五個端口,一個8005是關閉tomcat的端口,另外四個就是兩個實例的連接器的端口 tcp6 0 0 :::8080 :::* LISTEN 17004/java tcp6 0 0 :::8081 :::* LISTEN 17004/java tcp6 0 0 127.0.0.1:8005 :::* LISTEN 17004/java tcp6 0 0 :::8009 :::* LISTEN 17004/java tcp6 0 0 :::8010 :::* LISTEN 17004/java

    測試 (端口要注意修改)創建實例成功

  • 第二種方法簡單粗暴,直接裝兩臺tomcat,路徑不一樣,修改端口和域名即可(略)
  • (8)Tomcat主機名(域名)

    Tomcat在給虛擬主機配置域名之后,客戶端只能訪問域名,訪問ip也是無法訪問,這樣可以防止惡意域名綁定,有的人會把自己的ip綁到某個服務器的域名,配置之后使用ip訪問是無法正常訪問的

    總結

    以上是生活随笔為你收集整理的Tomcat概述的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。