tomcat

 

tomcat简介

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。目前Tomcat最新版本为9.0。

tomcat就是传说中的中间件之一,tomcat本身是一个容器,专门用来运行java程序,java语言开发的网页.jsp就应该运行于tomcat中。而tomcat本身的运行也依赖于jdk环境。

tomcat应用场景:lnmt

Java体系

Java 平台有三个版本,这使软件开发人员、服务提供商和设备生产商可以针对特定的市场进行开发:

01

Java SE(Java Platform,Standard Edition)

Java SE 以前称为 J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序。Java SE 包含了支持 Java Web 服务开发的类,并为 Java Platform,Enterprise Edition(Java EE)提供基础。

Java EE(Java Platform,Enterprise Edition)

这个版本以前称为 J2EE。企业版本帮助开发和部署可移植、健壮、可伸缩且安全的服务器端 Java 应用程序。Java EE 是在 Java SE 的基础上构建的,它提供 Web 服务、组件模型、管理和通信 API,可以用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和 Web 2.0 应用程序。

Java ME(Java Platform,Micro Edition)

这个版本以前称为 J2ME。Java ME 为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。Java ME 包括灵活的用户界面、健壮的安全模型、许多内置的网络协议以及对可以动态下载的连网和离线应用程序的丰富支持。基于 Java ME 规范的应用程序只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能。

 

Java技术体系的优点

  • 拥有一门结构严谨、面向对象的编程语言
  • 跨平台(摆脱硬件平台的约束) ----“Write once,Run anywhere”主8要由字节码支持。因为Java源代码默认编译结果为平台通用的字节码。
  • 安全性优越 ---提供了一种相对安全的内存管理和访问机制,避免了绝大部分的内存泄露和指针越界问题
  • 多线程
  • 分布式
  • 完善的应用程序接口
  • 大量的第三方类库

 

Java技术体系所包含的内容

02

JDK与JRE的关系:

JDK:支持Java程序开发的最小环境。JDK = Java程序设计语言 + Java虚拟机 + Java API类库。

JRE:支持Java程序运行的标准环境。JRE = Java虚拟机 +Java API类库中的Java SE API子集 。

 

运行jsp的web容器

jsp技术将java代码嵌入html文件中,建立了一种动态网页的编写标准,它的技术基础是serverlet技术,当用户请求一个jsp文件时,jsp会将代码转换成serverlet(即标准的java代码),java代码再交由低层的jdk执行。常见的容器有websphere,weblogic,tomcat。

 

中间件

中间件(英语:Middleware),又译中间件、中介层,是一类提供系统软件和应用软件之间连接、便于软件各部件之间的沟通的软件,应用软件可以借助中间件在不同的技术架构之间共享信息与资源。中间件位于客户机服务器的操作系统之上,管理着计算资源和网络通信。

中间件的好处

中间件能给客户带来什么?为上层应用软件的开发提供便捷的、开箱即用的服务交互和计算的能力,缩短开发周期;屏蔽底层runtime的差异;节省应用本身的系统资源,减少运行成本。

常用基础中间件

    • 路由与web服务器:处理和转发其他服务器通信数据的服务器。 如被业界广泛使用的阿里基于 Nginx 研发的 Tengine、阿里内部的集中式路由服务 VipServer

    • RPC框架:微服务时代的远程服务调用框架。如grpc, Thrift, 阿里的 HSF, Dubbo, SOFA-RPC

    • 消息中间件:支持在分布式系统之间发送和接收消息的软件。 如 Apache kafka, Apache RabbitMQ, NSQ, 阿里孵化开源的 Apache RocketMQ

    • 缓存服务: 分布式的高速数据存储层,一般是内存存储。如 阿里 Tair,业界的 Redis, Memcached, Ehcache

    • 配置中心:用来统一管理各个项目中所有配置的系统。如 阿里 Nacos、携程 Apollo、百度 Disconf

    • 分布式事务:事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。 如 阿里 seata、腾讯 DTF

    • 任务调度:分布式环境下提供定时、任务编排、分布式跑批等功能的系统。如 阿里 SchedulerX、业界 xxl-job、当当 elastic-job、有赞 TSP

    • 数据库层 用于支持弹性扩容和分库分表的 TDDL,数据库连接池 Driud, Binlog 同步的 Canal 等。

tomcat项目部署

java环境安装

//安装jdk环境
[root@RedHat ~]#  yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel

//查看java版本
[root@RedHat ~]# java -version
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-b10)
OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)

tomcat部署

官网下载tomcat

//下载tomcat
[root@RedHat ~]# cd /usr/src/
[root@RedHat src]# yum -y install wget
# wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-9/v9.0.24/bin/apache-tomcat-9.0.24.tar.gz

//解压部署
[root@RedHat src]# ls
apache-tomcat-10.0.6.tar.gz  debug  kernels
[root@RedHat src]# tar xf apache-tomcat-10.0.6.tar.gz 
[root@RedHat src]# ls
apache-tomcat-10.0.6  apache-tomcat-10.0.6.tar.gz  debug  kernels


//启动tomcat
[root@RedHat apache-tomcat-10.0.6]# pwd
/usr/src/apache-tomcat-10.0.6
[root@RedHat apache-tomcat-10.0.6]# ls
bin           conf             lib      logs    README.md      RUNNING.txt  webapps
BUILDING.txt  CONTRIBUTING.md  LICENSE  NOTICE  RELEASE-NOTES  temp         work

[root@RedHat apache-tomcat-10.0.6]# bin/
catalina.sh      configtest.sh    digest.sh        migrate.sh       shutdown.sh      tool-wrapper.sh
ciphers.sh       daemon.sh        makebase.sh      setclasspath.sh  startup.sh       version.sh

[root@RedHat apache-tomcat-10.0.6]# bin/startup.sh 
Using CATALINA_BASE:   /usr/src/apache-tomcat-10.0.6
Using CATALINA_HOME:   /usr/src/apache-tomcat-10.0.6
Using CATALINA_TMPDIR: /usr/src/apache-tomcat-10.0.6/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/src/apache-tomcat-10.0.6/bin/bootstrap.jar:/usr/src/apache-tomcat-10.0.6/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.

[root@RedHat apache-tomcat-10.0.6]# ss -antl
State       Recv-Q       Send-Q                   Local Address:Port             Peer Address:Port       
LISTEN      0            128                            0.0.0.0:22                    0.0.0.0:*          
LISTEN      0            128                               [::]:22                       [::]:*          
LISTEN      0            1                   [::ffff:127.0.0.1]:8005                        *:*          
LISTEN      0            100                                  *:8080                        *:*  

//访问tomcat测试页面
//关闭防火墙selinux
[root@RedHat apache-tomcat-10.0.6]# systemctl stop firewalld
[root@RedHat apache-tomcat-10.0.6]# setenforce 0

//写一个hello world的java页面
[root@RedHat apache-tomcat-10.0.6]# mkdir /usr/src/apache-tomcat-10.0.6/webapps/test

[root@RedHat apache-tomcat-10.0.6]# cat > /usr/src/apache-tomcat-10.0.6/webapps/test/index.jsp <<EOF
<html>
<head>
        <title>test page</title>
</head>
<body>
        <%
            out.println("Hellow World");
        %>
</body>
</html>
EOF

[root@RedHat apache-tomcat-10.0.6]# cat /usr/src/apache-tomcat-10.0.6/webapps/test/index.jsp 
<html>
<head>
        <title>test page</title>
</head>
<body>
        <%
            out.println("Hellow World");
        %>
</body>
</html>

 

 

 tomcat启动和关闭的方式都可以用目录里的脚本进行操作

[root@RedHat apache-tomcat-10.0.6]# pwd
/usr/src/apache-tomcat-10.0.6
[root@RedHat apache-tomcat-10.0.6]# ls bin/
bootstrap.jar                 configtest.bat  migrate.sh        tomcat-native.tar.gz
catalina.bat                  configtest.sh   setclasspath.bat  tool-wrapper.bat
catalina.sh                   daemon.sh       setclasspath.sh   tool-wrapper.sh
catalina-tasks.xml            digest.bat      shutdown.bat      version.bat
ciphers.bat                   digest.sh       shutdown.sh       version.sh
ciphers.sh                    makebase.bat    startup.bat
commons-daemon.jar            makebase.sh     startup.sh
commons-daemon-native.tar.gz  migrate.bat     tomcat-juli.jar

//在上面这些文件里面,有shutdown.sh、startup.sh、catalina.sh 
这三个脚本就是用来控制启动,关闭tomcat的
例如:
[root@RedHat apache-tomcat-10.0.6]# bin/catalina.sh stop
Using CATALINA_BASE:   /usr/src/apache-tomcat-10.0.6
Using CATALINA_HOME:   /usr/src/apache-tomcat-10.0.6
Using CATALINA_TMPDIR: /usr/src/apache-tomcat-10.0.6/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/src/apache-tomcat-10.0.6/bin/bootstrap.jar:/usr/src/apache-tomcat-10.0.6/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
[root@RedHat apache-tomcat-10.0.6]# ss -antl
State       Recv-Q        Send-Q                Local Address:Port               Peer Address:Port       
LISTEN      0             128                         0.0.0.0:22                      0.0.0.0:*          
LISTEN      0             128                            [::]:22                         [::]:*          
[root@RedHat apache-tomcat-10.0.6]# bin/catalina.sh start
Using CATALINA_BASE:   /usr/src/apache-tomcat-10.0.6
Using CATALINA_HOME:   /usr/src/apache-tomcat-10.0.6
Using CATALINA_TMPDIR: /usr/src/apache-tomcat-10.0.6/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/src/apache-tomcat-10.0.6/bin/bootstrap.jar:/usr/src/apache-tomcat-10.0.6/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.
[root@RedHat apache-tomcat-10.0.6]# ss -antl
State       Recv-Q       Send-Q                   Local Address:Port             Peer Address:Port       
LISTEN      0            128                            0.0.0.0:22                    0.0.0.0:*          
LISTEN      0            128                               [::]:22                       [::]:*          
LISTEN      0            1                   [::ffff:127.0.0.1]:8005                        *:*          
LISTEN      0            100                                  *:8080                        *:*  

//你也可以使用shutdown.sh、 startup.sh
例如:
[root@RedHat apache-tomcat-10.0.6]# bin/shutdown.sh 
Using CATALINA_BASE:   /usr/src/apache-tomcat-10.0.6
Using CATALINA_HOME:   /usr/src/apache-tomcat-10.0.6
Using CATALINA_TMPDIR: /usr/src/apache-tomcat-10.0.6/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/src/apache-tomcat-10.0.6/bin/bootstrap.jar:/usr/src/apache-tomcat-10.0.6/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
[root@RedHat apache-tomcat-10.0.6]# ss -antl
State       Recv-Q        Send-Q                Local Address:Port               Peer Address:Port       
LISTEN      0             128                         0.0.0.0:22                      0.0.0.0:*          
LISTEN      0             128                            [::]:22                         [::]:*          
[root@RedHat apache-tomcat-10.0.6]# bin/startup.sh 
Using CATALINA_BASE:   /usr/src/apache-tomcat-10.0.6
Using CATALINA_HOME:   /usr/src/apache-tomcat-10.0.6
Using CATALINA_TMPDIR: /usr/src/apache-tomcat-10.0.6/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/src/apache-tomcat-10.0.6/bin/bootstrap.jar:/usr/src/apache-tomcat-10.0.6/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.
[root@RedHat apache-tomcat-10.0.6]# ss -antl
State       Recv-Q       Send-Q                   Local Address:Port             Peer Address:Port       
LISTEN      0            128                            0.0.0.0:22                    0.0.0.0:*          
LISTEN      0            128                               [::]:22                       [::]:*          
LISTEN      0            1                   [::ffff:127.0.0.1]:8005                        *:*          
LISTEN      0            100                                  *:8080                        *:* 

Tomcat管理端

  • 搭建与测试的时候开启管理端 开启管理端
  • 生产环境 关闭管理端

开启管理端

//在文件尾部加上
[root@RedHat apache-tomcat-10.0.6]# vi conf/tomcat-users.xml 
...
 <role rolename="manager-gui"/>
  <role rolename="admin-gui"/>
  <user username="tomcat" password="123456" roles="manager-gui,admin-gui"/>     

 解除本地限制

[root@RedHat apache-tomcat-10.0.6]# find -type f -name "*.xml" | xargs  grep '127'
./webapps/host-manager/META-INF/context.xml:         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
./webapps/host-manager/WEB-INF/manager.xml:         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
./webapps/manager/META-INF/context.xml:         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
[root@RedHat apache-tomcat-10.0.6]# sed -i.bak 's#127#\\d+#g' ./webapps/host-manager/META-INF/context.xml ./webapps/manager/META-INF/context.xml
[root@RedHat apache-tomcat-10.0.6]# bin/c
catalina.sh    ciphers.sh     configtest.sh  
[root@RedHat apache-tomcat-10.0.6]# bin/catalina.sh stop
Using CATALINA_BASE:   /usr/src/apache-tomcat-10.0.6
Using CATALINA_HOME:   /usr/src/apache-tomcat-10.0.6
Using CATALINA_TMPDIR: /usr/src/apache-tomcat-10.0.6/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/src/apache-tomcat-10.0.6/bin/bootstrap.jar:/usr/src/apache-tomcat-10.0.6/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
[root@RedHat apache-tomcat-10.0.6]# bin/catalina.sh start
Using CATALINA_BASE:   /usr/src/apache-tomcat-10.0.6
Using CATALINA_HOME:   /usr/src/apache-tomcat-10.0.6
Using CATALINA_TMPDIR: /usr/src/apache-tomcat-10.0.6/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/src/apache-tomcat-10.0.6/bin/bootstrap.jar:/usr/src/apache-tomcat-10.0.6/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.

 

 

 

 

 

 

 

 

 

 

posted @ 2021-05-13 16:09  离愁落雨  阅读(223)  评论(0编辑  收藏  举报