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和IISWeb服务器一样,具有处理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”

日志 里面的格式   &quot html语言中的双引号

155 pattern=”%h %l %u %t &quot;%r&quot; %s %b” />

%h:客户端ip地址或者是域名
%l   (小写L):远程用户  
%u:用户 Remote user that was authenticated (ifany), else ‘-‘ (escaped if required)
%t:时间 日期和时间
&quot:双引号
%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

 

1

作者 dmxsp

发表回复

您的电子邮箱地址不会被公开。