1.Tomcat介绍
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,[1]属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试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。
2.tomcat和nginx的区别
nginx仅支持静态资源,而tomcat则支持java开发的jsp动态资源和静态资源
nginx适合做前端负载均衡,而tomcat适合做后端应用服务处理
通常情况下,企业会使用nginx+tomcat结合使用,由nginx处理静态资源,tomcat处理动态资源
nginx+PHP处理动态资源
tomcat单独就可以处理动态资源
JVM JRE jdk三者的区别:
JVM(Java Virtual Machine):Java虚拟机,是Java程序运行的环境。它是一个虚拟的计算机,具有自己的指令集和堆栈,可以在不同的平台上运行Java程序。JVM是Java的核心,负责将Java源代码编译成字节码,并在运行时解释执行字节码。
JRE(Java Runtime Environment):Java运行时环境,包括JVM和Java类库。它是Java程序运行的必要环境,可以在不同的操作系统上运行Java程序。JRE不包含开发工具,只包含Java运行时环境。
JDK(Java Development Kit):Java开发工具包,包括JRE、编译器、调试器、文档生成器等。它是Java程序开发的必要环境,可以在不同的操作系统上开发和编译Java程序。
简单来说,JVM是Java程序运行的环境,JRE是Java程序运行的必要环境,JDK是Java程序开发的必要环境。如果只是运行Java程序,只需要安装JRE即可;如果需要开发Java程序,需要安装JDK。
3.tomcat目录结构
bin:主要包含启动关闭tomcat的脚本和依赖文件,startup.sh 启动tomcat,shutdown.sh 关闭tomcat,version.sh 部署完成检查 jdk 与tomcat,
conf:tomcat配置文件目录
lib:tomcat运行需要加载的jar包 类似于PHP的模块概念
LICENSE:通知信息
logs:在运行过程中产生的日志文件
NOTICE:通知版本信息
RELEASE-NOTES:版本特性
RUNNING.txt:帮助文件
temp:存放临时文件,上传的代码包解压时会临时存放在temp目录下
webapps:站点目录
work:tomcat运行时产生的缓存文件
3.环境准备
jdk(Oracle官方)
Tomcat清华源
Tomcat官网
jdk
[root@tomcat01 ~]$ mkdir -p /tomcat/tools
[root@tomcat01 ~]$ cd /tomcat/tools/
[root@tomcat01 /tomcat/tools]$ wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz
[root@tomcat01 /tomcat/tools]$ tar -zxf jdk-17_linux-x64_bin.tar.gz
[root@tomcat01 /tomcat/tools]$ ln -s /tomcat/tools/jdk-17.0.7/ /tomcat/jdk
[root@tomcat01 /tomcat/tools]$ chown -R root.root /tomcat/tools/jdk-17.0.7/
java jdk 环境变量
[root@tomcat01 /tomcat/tools]$ tail -4 /etc/profile
export JAVA_HOME=/tomcat/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
export TOMCAT_HOME=/tomcat/tomcat
[root@tomcat01 /tomcat/tools]$ . /etc/profile
查看是否生效
[root@tomcat01 /tomcat/tools]$ java -version
java version “17.0.7” 2023-04-18 LTS
Java(TM) SE Runtime Environment (build 17.0.7+8-LTS-224)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.7+8-LTS-224, mixed mode, sharing)
tomcat
[root@tomcat01 /tomcat/tools]$ wget –no-check-certificate https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.8/bin/apache-tomcat-10.1.8.tar.gz
[root@tomcat01 /tomcat/tools]$ tar xf apache-tomcat-10.1.8.tar.gz
[root@tomcat01 /tomcat/tools]$ mv apache-tomcat-10.1.8 /tomcat/
[root@tomcat01 /tomcat/tools]$ cd ..
[root@tomcat01 /tomcat]$ ln -s /tomcat/apache-tomcat-10.1.8/ /tomcat/tomcat
检查tomcat
[root@tomcat01 ~]$ /tomcat/tomcat/bin/version.sh
Using CATALINA_BASE: /tomcat/tomcat
Using CATALINA_HOME: /tomcat/tomcat
Using CATALINA_TMPDIR: /tomcat/tomcat/temp
Using JRE_HOME: /tomcat/jdk
Using CLASSPATH: /tomcat/tomcat/bin/bootstrap.jar:/tomcat/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Server version: Apache Tomcat/10.1.8
Server built: Apr 14 2023 19:40:29 UTC
Server number: 10.1.8.0
OS Name: Linux
OS Version: 3.10.0-1127.el7.x86_64
Architecture: amd64
JVM Version: 17.0.7+8-LTS-224
JVM Vendor: Oracle Corporation
启动tomcat
[root@tomcat01 ~]$ /tomcat/tomcat/bin/startup.sh
Using CATALINA_BASE: /tomcat/tomcat
Using CATALINA_HOME: /tomcat/tomcat
Using CATALINA_TMPDIR: /tomcat/tomcat/temp
Using JRE_HOME: /tomcat/jdk
Using CLASSPATH: /tomcat/tomcat/bin/bootstrap.jar:/tomcat/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
检查端口和进程
[root@tomcat01 ~]$ ss -lntup | grep java
tcp LISTEN 0 1 [::ffff:127.0.0.1]:8005 [::]:* users:((“java”,pid=3009,fd=50))
tcp LISTEN 0 100 [::]:8080 [::]:* users:((“java”,pid=3009,fd=42))
[root@tomcat01 ~]$ ps -ef |grep java
页面查看

4.tomcat管理端

搭建与测试的时候 开启管理端进行调试 | 开启管理端 |
生产环境中 | 关闭管理端 ,清除管理端相关文档 |
要配置tomcat-user.xml之外
还限制 只能在本地使用127.0.0.1 访问管理的
从tomcat8.5开始 管理端默认只能通过 本地使用 127.0.0.1 访问(类似于nginx all 127.0.0.1 ; deny all; )
默认情况下,只能从与Tomcat运行在同一台计算机上的浏览器访问管理器。如果要修改此限制,则需要编辑管理器的context.xml文件。
没开启前
开启tomcat管理端
[root@tomcat01 /tomcat/tomcat]$ find -type f -name “context.xml” | xargs grep 127
./webapps/docs/META-INF/context.xml: allow=”127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1″ />
./webapps/examples/META-INF/context.xml: allow=”127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1″ />
./webapps/host-manager/META-INF/context.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@tomcat01 /tomcat/tomcat]$ find -type f -name “context.xml” | xargs grep allow
./webapps/docs/META-INF/context.xml: allow=”127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1″ />
./webapps/examples/META-INF/context.xml: allow=”127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1″ />
./webapps/host-manager/META-INF/context.xml: allow=”\d+\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1″ />
./webapps/manager/META-INF/context.xml: allow=”\d+\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1″ />
开启后
解决密码修改配置文件
[root@tomcat01 /tomcat/tomcat]$ vim conf/tomcat-users.xml
<role rolename=”admin-gui”/>
<role rolename=”manager-gui”/>
<role rolename=”host-gui”/>
<user username=”tomcat” password=”13579″ roles=”admin-gui,manager-gui,host-gui”/>
重启
[root@tomcat01 /tomcat/tomcat]$ /tomcat/tomcat/bin/shutdown.sh
Using CATALINA_BASE: /tomcat/tomcat
Using CATALINA_HOME: /tomcat/tomcat
Using CATALINA_TMPDIR: /tomcat/tomcat/temp
Using JRE_HOME: /tomcat/jdk
Using CLASSPATH: /tomcat/tomcat/bin/bootstrap.jar:/tomcat/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
[root@tomcat01 /tomcat/tomcat]$ /tomcat/tomcat/bin/startup.sh
Using CATALINA_BASE: /tomcat/tomcat
Using CATALINA_HOME: /tomcat/tomcat
Using CATALINA_TMPDIR: /tomcat/tomcat/temp
Using JRE_HOME: /tomcat/jdk
Using CLASSPATH: /tomcat/tomcat/bin/bootstrap.jar:/tomcat/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
状态
进程信息
ps命令查询 java进程信息
[root@tomcat01 ~]$ ps -ef |grep java
[root@tomcat01 ~]$ jps -lvm | grep -v jps | cut -d” ” -f1
3174
[root@tomcat01 ~]$ jmap -heap 3174
5.tomcat日志
catalina.out:持续增加
catalina-年-月-日.log:切割日志
localhost_access_log:访问日志
catalina.out
error 错误
startup 或 finished 启动所需的时间
6.tomcat配置文件
[root@tomcat01 /tomcat/tomcat]$ vim conf/server.xml
端口
8005:shutdown端口,关闭tomcat使用,默认只能127.0.0.1访问
8080:web页面端口http
8009:ajp协议使用的端口(用于与apache连接使用)
8005shutdown端口
<Server port=”8005″ shutdown=”SHUTDOWN”>
8080http协议端口
68 <Connector port=”8080″ protocol=”HTTP/1.1″
69 connectionTimeout=”20000″
70 redirectPort=”8443″
71 maxParameterCount=”1000″
72 />
8009ajp协议端口 与apache连接使用
102 <!– Define an AJP 1.3 Connector on port 8009 –>
103 <!–
104 <Connector protocol=”AJP/1.3″
105 address=”::1″
106 port=”8009″
107 redirectPort=”8443″
108 maxParameterCount=”1000″
109 />
tomcat管理端 相应的配置
管理端 实际生产环境 关闭
41 <Resource name=”UserDatabase” auth=”Container”
42 type=”org.apache.catalina.UserDatabase”
43 description=”User database that can be updated and saved”
44 factory=”org.apache.catalina.users.MemoryUserDatabaseFactory”
45 pathname=”conf/tomcat-users.xml” />指定管理端 密码文件
配置 tomcat 虚拟主机的内容
Nginx tomcat
Server_name Host name 域名
root appBase 站点目录
unpackWARs 自动解压war包
autoDeploy 自动部署 把代码加载到jvm内存中
141 <Host name=”localhost” appBase=”webapps”
142 unpackWARs=”true” autoDeploy=”true”>
日志
153 <Valve className=”org.apache.catalina.valves.AccessLogValve” directory=”logs”
日志文件 前缀是localhost_access_log日志后缀
154 prefix=”localhost_access_log” suffix=”.txt”
日志 里面的格式 " html语言中的双引号
155 pattern=”%h %l %u %t "%r" %s %b” />
%h:客户端ip地址或者是域名
%l (小写L):远程用户
%u:用户 Remote user that was authenticated (ifany), else ‘-‘ (escaped if required)
%t:时间 日期和时间
":双引号
%r:请求起始行 $request
%s:$status 状态码
%b:大小
tomcat日志格式
7.tomcat 部署应用及方式
部署方式
如果开发给你的是war包 则把war包放入到 tomcat webapps 自动解压 自动部署
如果开发给你的是jar包 相当于jar包里面已经集成了tomcat java -jar xxxx.jar 选项
java开源软件
zrlog java blog
环境准备
[root@tomcat01 ~]$ hostname I
10.0.0.22 172.16.1.22
[root@mysqldb ~]$ hostname -I
10.0.0.26 172.16.1.26
部署应用-zrlog
zrlog
安装
[root@tomcat01 ~]$ wget https://dl.zrlog.com/release/zrlog-2.2.1-efbe9f9-release.war?attname=ROOT.war&ref=index
[root@tomcat01 /tomcat/tomcat]$ mv /root/zrlog.war ./webapps/
部署后日志
25-May-2023 10:28:49.625 INFO [Catalina-utility-2] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [/tomcat/apache-tomcat-10.1.8/webapps/zrlog.war] has finished in [1,204] ms
数据库
[root@mysqldb ~]$ mysql -uroot -p123
查看
MariaDB [(none)]> show databases;
创建表
MariaDB [(none)]> create database zrlog charset utf8;
Query OK, 1 row affected (0.35 sec)
MariaDB [(none)]> show databases;
页面
报错
25-May-2023 23:38:14.254 SEVERE [Catalina-utility-1] org.apache.catalina.core.StandardContext.startInternal Context [/zrlog] startup failed due to previous errors
SEVERE: Exception starting filter [JFinalFilter]
29-May-2023 13:58:02.990 SEVERE [main] org.apache.catalina.core.StandardContext.filterStart Exception starting filter [JFinalFilter]
查看详细日志
[root@tomcat01 /tomcat/tomcat]$ cat /tomcat/tomcat/webapps/zrlog/WEB-INF/classes/logging.properties
handlers = org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
############################################################
# Handler specific properties.
# Describes specific configuration info for Handlers.
############################################################
org.apache.juli.FileHandler.level = FINE
org.apache.juli.FileHandler.directory = ${catalina.base}/logs
org.apache.juli.FileHandler.prefix = error-debug.
java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
重启tomcat
生成详细日志文件
[root@tomcat01 ~]$ tail -f /tomcat/tomcat/logs/error-debug