tomcat详细介绍

article/2025/5/9 14:12:08

tomcat是java语言编写的软件
JVM是java虚拟机的缩写
java虚拟机本质就是一个程序,当它在命令行上启动的时候,就开始执行保存在某字节码文件中的指令。
java语言的可移植性正是建立在java虚拟机的基础上。任何平台只要装有针对该平台的java虚拟机,字节码文件(.class)就可以在该平台上运行。这就是一次编译处处运行

关于不同语言的编译:
c语言(编译性语言):源码 不同的CPU架构 需要相同的代码根据不同的操作系统进行重新编译
java语言(一次编译处处运行):jdk包含java虚拟机;java代码运行在java虚拟机中;不同的操作系统可以使用相同的java代码 ,只是需要不同的jdk;java虚拟机提供了相同的环境;

tomcat基于java开发的web服务

tomcat和nginx的区别:
nginx仅支持静态资源,而tomcat则支持java开发的jsp动态资源和静态资源
nginx适合做前端负载均衡,而tomcat适合做后端应用服务处理
通常情况下,企业会使用nginx+tomcat结合使用,由nginx处理静态资源,tomcat处理动态资源

nginx+PHP处理动态资源
tomcat单独就可以处理动态资源

JVM JRE jdk三者的区别:
1、JVM是java虚拟机
2、JRE 是java的运行环境(包含java虚拟机)
3、jdk是java的开发工具(包含JRE(JRE包含java虚拟机))

tomcat快速安装

1、rpm方式安装jdk
上传软件包到/opt目录下
链接:https://pan.baidu.com/s/1tm1sxTO7bo40S_vcLuZZnw
提取码:ctk7
链接:https://pan.baidu.com/s/1n4g2C2wLlfahFoSFo0GPqA
提取码:opru

jdk的下载去Oracle官网下载
https://www.oracle.com/cn/java/technologies/javase/javase-downloads.html
tomcat去清华源可以下载或者去tomcat官网
http://archive.apache.org/dist/tomcat/tomcat-8/v8.0.53/bin/

在这里插入图片描述

rpm -ivh  jdk-8u102-linux-x64.rpm 
mkdir   /app/
tar xf  apache-tomcat-8.0.27.tar.gz  -C  /app/
/app/apache-tomcat-8.0.27/bin/startup.sh 

2、tomcat启动慢解决方案
查看没优化之前的启动时间

[root@tomcat02 opt]# grep  'Server startup'  /app/apache-tomcat-8.0.27/logs/catalina.out 
22-Jun-2020 06:38:39.904 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 558 ms

优化方案
解决tomcat启动时产生session随机数作为id导致启动慢的问题

vi /usr/java/jdk1.8.0_102/jre/lib/security/java.security
117 securerandom.source=file:/dev/urandom

tomcat目录结构

bin 主要包含启动关闭tomcat的脚本和依赖文件 
conf tomcat配置文件目录
lib   tomcat运行需要加载的jar包 类似于PHP的模块概念
LICENSE 通知信息
logs 在运行过程中产生的日志文件
NOTICE  通知版本信息
RELEASE-NOTES 版本特性
RUNNING.txt 帮助文件
temp 存放临时文件 上传的代码包解压时会临时存放在temp目录下
webapps 站点目录
work tomcat运行时产生的缓存文件

核心配置文件
/app/apache-tomcat-8.0.27/conf/server.xml

在这里插入图片描述
原理图解释:
1、整个tomcat就是一个server
2、connector连接器:支持HTTP https ajp三种协议 不同的协议不同的端口
3、连接器将请求转发给 engine引擎 引擎处理请求,默认引擎是catalina,匹配host区域站点

用户访问tomcat代理(proxy),代理通过请求头将访问连接抛给后端连接器,连接器通过service的配置将请求抛给后端引擎,引擎匹配host站点

一个tomcat实例一个server
一个server中包含多个connector,connector的主要功能是接受、响应用户请求
service的作用:将connector关联到engine(Catalina引擎中)

<Server port="8005" shutdown="SHUTDOWN"> 区域<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /><Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /><Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />

资源区域

 <GlobalNamingResources><!-- Editable user database that can also be used byUserDatabaseRealm to authenticate users--><Resource name="UserDatabase" auth="Container"type="org.apache.catalina.UserDatabase"description="User database that can be updated and saved"factory="org.apache.catalina.users.MemoryUserDatabaseFactory"pathname="conf/tomcat-users.xml" /></GlobalNamingResources>

连接器区域

 <Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" />

host区域 类似于nginx中的站点区域

tomcat部署zrlog博客项目
配置文件修改

129       <Host name="zrlog.oldboyedu.com"  appBase="/code"
130             unpackWARs="true" autoDeploy="true">
131         <Valve className="org.apache.catalina.valves.AccessLogValve" directory="/var/log"
132                prefix="zrlog_access_log" suffix=".txt"
133                pattern="%h %l %u %t &quot;%r&quot; %s %b" />
134       </Host>

配置文件解释

129       <Host name="域名"  appBase="站点目录"
130             unpackWARs="是否自动解压war包" autoDeploy="true">
131         <Valve className="日志级别格式" directory="日志目录"
132                prefix="日志名字" suffix=".txt"
133                pattern="%h %l %u %t &quot;%r&quot; %s %b" />
134       </Host>

创建站点目录

mkdir  /code

放入war包

scp  10.0.0.12:/root/ROOT.war  .

重启tomcat服务

/app/apache-tomcat-8.0.27/bin/shutdown.sh /app/apache-tomcat-8.0.27/bin/startup.sh

修改本地win的host文件,添加域名解析

访问

zrlog.oldboyedu.com:8080

在这里插入图片描述

安装数据库 并创库授权

mysql_secure_installation
mysql  -uroot  -p000000
create  database  zrlog;

界面操作:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

tomcat配置basic认证

效果图如下:当然了 这个是tomcat默认自带的
访问的是http://10.0.0.11:8080/host-manager

在这里插入图片描述
点击取消 获得设置用户名和密码的信息

在这里插入图片描述
编辑文件 设置密码

vim /app/apache-tomcat-8.0.27/conf/tomcat-users.xml 39 <role rolename="admin-gui"/>40 <user username="tomcat" password="123456" roles="admin-gui"/>

重启tomcat服务

/app/apache-tomcat-8.0.27/bin/shutdown.sh 
/app/apache-tomcat-8.0.27/bin/startup.sh 

输入用户名tomcat 密码123456

在这里插入图片描述

设置zrlog的basic认证

vim /code/ROOT/WEB-INF/web.xml28 <security-constraint>29   <web-resource-collection>30     <web-resource-name>test</web-resource-name>31     <!--匹配所有请求-->32     <url-pattern>/admin/login/*</url-pattern>33   </web-resource-collection>34   <auth-constraint>35     <!-- 只允许basicrole角色的用户访问 -->36     <role-name>test100</role-name>37   </auth-constraint>38 </security-constraint>39 <login-config>40   <!--值可以是BASIC/DIGEST/CLIENT_CERT/FORM-->41   <auth-method>BASIC</auth-method>42   <!--认证提示信息-->43   <realm-name>Default</realm-name>44 </login-config>

配置test100的角色

vim /app/apache-tomcat-8.0.27/conf/tomcat-users.xml39 <role rolename="admin-gui"/>40 <role rolename="test100"/>41 <user username="tomcat" password="123456" roles="admin-gui,test100"/>42 </tomcat-users>

重启tomcat服务

  167  /app/apache-tomcat-8.0.27/bin/shutdown.sh 168  /app/apache-tomcat-8.0.27/bin/startup.sh

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
nginx+tomcat架构

在这里插入图片描述

数据库迁移
1、nginx负载安装数据库

yum install -y  mariadb-server

2、迁移数据库
tomcat01节点上 关闭tomcat并备份数据

  173  /app/apache-tomcat-8.0.27/bin/shutdown.sh 174  mysqldump -uroot  -p000000  -B zrlog >zrlog.sqlscp  zrlog.sql   10.0.0.3:/rootsystemctl stop  mariad

3、导入数据
nginx负载节点上 导入数据

mysql  -uroot -p000000 <zrlog.sql
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| zrlog              |
+--------------------+
授权允许网段访问grant all on *.* to root@'10.0.0.%' identified by "000000";

4、tomcat01节点 启动tomcat并访问测试

/app/apache-tomcat-8.0.27/bin/startup.sh

在这里插入图片描述

tomcat02部署
tomcat02删除站点数据

rm -rf /app/apache-tomcat-8.0.27/rm -rf /code/*启动tomcat/app/apache-tomcat-8.0.27/bin/startup.sh 

tomcat01数据复制到tomcat02

 scp -r   /app/apache-tomcat-8.0.27  10.0.0.12:/appscp  -r /code/*  10.0.0.12:/code/

在这里插入图片描述

修改站点目录信息 作为区分tomcat01 和tomcat02的标识

vim /code/ROOT/include/templates/default/header.jsp61                             <span class="slogan">tomcat02</span>vim /code/ROOT/include/templates/default/header.jsp
61                             <span class="slogan">tomcat01</span>

在这里插入图片描述

nginx节点安装nginx 配置负载均衡

vim zrlog.conf

upstream java {
server 10.0.0.11:8080;
server 10.0.0.12:8080;
}
server {
listen 80;
server_name zrlog.oldboyedu.com;
root html;
index index.html index.htm;
location / {proxy_pass http://java;proxy_set_header Host $http_host;}
}systemctl start  nginxsystemctl enable  nginx

nginx+tomcat架构实现https

1、上传证书

创建目录 存放证书

mkdir  /opt/cert/

2、修改nginx的zrlog.conf的配置文件

[root@lb01 cert]# cat  /etc/nginx/conf.d/zrlog.conf 
upstream java {
server 10.0.0.11:8080;
server 10.0.0.12:8080;
}
server {listen 443 ssl;ssl_certificate /opt/cert/Nginx/1_blog.oldqiang.com_bundle.crt;ssl_certificate_key /opt/cert/Nginx/2_blog.oldqiang.com.key;ssl_session_timeout 5m;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_ciphers ECDHE-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;ssl_prefer_server_ciphers on;root html;index  index.html index.htm;location / {proxy_pass  http://java/;proxy_set_header Host $http_host;}
}server {listen 80;server_name blog.oldqiang.com;location / { location / {return 302 https://blog.oldqiang.com$request_uri;}}
}

3、修改win本地host解析

10.0.0.3  blog.oldqiang.com

4、修改tomcat配置文件中的域名信息和nginx中一致

vim /app/apache-tomcat-8.0.27/conf/server.xml
129       <Host name="blog.oldqiang.com"  appBase="/code"211  /app/apache-tomcat-8.0.27/bin/shutdown.sh 212  /app/apache-tomcat-8.0.27/bin/startup.sh 

在这里插入图片描述

使用maven编译java项目

1、安装maven

rpm -ivh jdk-8u102-linux-x64.rpm
wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gztar xf apache-maven-3.6.0-bin.tar.gz
mv apache-maven-3.6.0 /usr/local/
ln -s /usr/local/apache-maven-3.6.0 /usr/local/maven
vim /etc/profile
export M2_HOME=/usr/local/maven
export PATH=${M2_HOME}/bin:$PATH
source /etc/profile[root@tomcat01 ~]# mvn -v
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /usr/local/maven
Java version: 1.8.0_102, vendor: Oracle Corporation, runtime: /usr/java/jdk1.8.0_102/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-957.el7.x86_64", arch: "amd64", family: "unix"

2、上传java源码 进行编译

java代码使用maven编译:jar包 war包 可能会是两种包之中的一个
注意:maven进行编译的时候,一定要在源码目录下 其他目录下找不到pom文件 会报错

mvn  package

执行编译后 会下载一些依赖 这些下载源是在国外
3、修改maven为国内源

vim /usr/local/maven/conf/settings.xml
160 <mirror>
161 <id>alimaven</id>
162 <name>aliyun maven</name>
163 <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
164 <mirrorOf>central</mirrorOf>165 </mirror>
166 <mirror>167 <id>alimaven</id>
168 <mirrorOf>central</mirrorOf>169 <name>aliyun maven</name>
170 <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
171 </mirror>

不需要重启 再次进行编译即可

mvn  package

在这里插入图片描述

会在目录下生成一个target目录 在这个目录下会有war包
将war包放入tomcat的站点目录下即可部署完成


http://chatgpt.dhexx.cn/article/rHWOiZQO.shtml

相关文章

不同转子磁链观测器观测性能比较

导读&#xff1a;本期文章主要是介绍电压型磁链观测器和电流型磁链观测器。两种磁链观测器运用到异步电机矢量控制中&#xff0c;外环磁链环用磁链观测器形成闭环&#xff0c;分析电压型和电流型磁链观测器的观测性能。 如果需要文章中的仿真模型&#xff0c;关注微信公众号&a…

永磁同步电机(PMSM)的转子结构剖析

永磁同步电机的转子包括永磁体、转子铁芯、转轴、轴承等。 具体来说&#xff0c;根据永磁体在转子铁芯中的位置可以分为表面式和内置式PMSM。 其中表面式PMSM转子结构又分为&#xff1a;表贴式和插入式。 内置式PMSM转子磁路结构分为&#xff1a;径向式、切向式和混合式。 …

制作种子怎么上传服务器,怎么制作BT种子 使用BitComet制作BT种子文件教程

类型:下载工具大小:17.5M语言:中文 评分:7.1 标签: 立即下载 使用BitComet制作torrent文件 打开torrent制作对话框 方法一:拖放要制作种子的文件或目录到BitComet 主窗口或悬浮窗 方法二:BitComet“主菜单”→“文件(F)”→“制作Torrent文件(M)” 弹出 制作torrent文件…

怎样把文件转成bt文件?

第一步&#xff1a; 在制作种子之前&#xff0c;先要把需要做&#xff1a;种的文件放于同一个文件夹中。然后打开BitComet&#xff0c;在"文件"菜单中选择"制作Torrent文件"选项&#xff0c;界面如图1所示. 传送门&#xff1a;http://www.bitcomet.com/en/…

TLE5012B磁编码器原理及优点,径向充磁磁铁的安装。AS5047、AS5048、AS5600、TLE5012、MA730

磁编码器以其独特的优点&#xff0c;在近两年的产品应用上十分流行。它体积小巧、安装方便、分辨率高、较光电编码器成本更低、不受灰尘油渍影响、可非接触安装、便于与电机集成一体实现伺服控制。相较于光电编码器&#xff0c;磁编码器的寿命几乎无限长&#xff0c;没有红外二…

使用Python3将BT种子转磁力链接

闲着没事&#xff0c;写了个小爬虫&#xff0c;爬了5万多BT种子。 5万多种子有近3个G的大小&#xff0c;开打文件夹巨卡&#xff0c;就想把种子转成磁力&#xff0c;这样&#xff0c;5万多种子也就一个TXT文件就可以存下了。 先网上找找别人是怎么干的&#xff0c; 发现都是…

种子文件转成为磁力链接 下载BT磁力转换小工具

可以将BT种子文件转成磁力链接&#xff0c;相信很多很多朋友都需要用到&#xff0c;毕竟种子是已附件文件形式存在的&#xff0c;还需要服务器存放&#xff0c;并且下载也需要 BT Tracker &#xff0c;现在的问题是&#xff0c;越来越多的服务器被干掉了&#xff0c;电驴的服务…

html怎么比较时间,比较时间大小的方法

java 日期怎么比较大小? 例子&#xff1a; String beginTimenew String("2017-06-09 10:22:22");String endTimenew String("2017-05-08 11:22:22"); 直接用Date自带方法before()和after()比较 SimpleDateFormat df new SimpleDateFormat("yyyy-MM-…

js 比较时间大小

reference: http://lichengyezi.iteye.com/blog/562786 Js代码 //var yourtimedocument.getElementById(begin_time).value; var yourtime2010-12-10 11:12; yourtime yourtime.replace("-","/");//替换字符&#xff0c;变成标准格式 var d2new…

用js比较时间大小

开发工具与关键技术&#xff1a;Visual Studio、js 作者&#xff1a;幻奏 撰写时间&#xff1a;2019.7.17对比时间的大小在很多项目里面都有用到&#xff0c;刚开始我还不会怎样比较时间的大小&#xff0c;后来上了老师的课之后&#xff0c;我才知道怎样比较时间的大小。 比较时…

Google play ASO 关键字指南

一篇 Google play ASO 入门指南&#xff1a; 译文一篇&#xff0c; 原文地址&#xff1a; https://www.apptamin.com/blog/aso-google-play-app-optimization/ 第一次在填写 Google play 简短说明和应用描述的时候你会感觉自己是无助的&#xff0c; 因为你只有很少的时间但是…

如何从零开始解读产品经理行业分析

上次一起了解了什么是产品经理&#xff0c;产品经理PM和PD在不同类型公司的作用。了解产品经理对当前的应用产品中的重要作用。是不是有点憧憬&#xff0c;其实憧憬是美好的&#xff0c;但是还是要走进现实具体怎么去做&#xff0c;一步一步脚踏实地的&#xff0c;一步一步走入…

ASO优化之在海外如何进行竞品分析

进行竞争对手研究&#xff0c;需要分析当前的市场形势&#xff0c;确定竞争对手表现的模式&#xff0c;并将其应用到我们应用营销策略中。不同的应用可以在直观的用户界面上进行简单的比较&#xff0c;很容易看到长期趋势。 在App Store和Google Play上获取竞争对手评论区的信…

如何撰写ASO优化行业数据报告,ASO推广数据分析

撰写各行业数据分析报告对我们来说是非常重要的&#xff0c;它能够提高我们的眼界&#xff0c;让我们不只是局限于我们自己的APP&#xff0c;可以让我们以上帝的视角来俯瞰全局。这对我们制定APP优化计划和未来发展规划具有战略性意义。下面我以运动健身类APP为例告诉大家应该从…

什么是ASO,GooglePlayASO优化的方法有哪些

ASO是为了提高该产品的搜索结果成绩,提升APP的下载量,针对GooglePlay来说,ASO就是优化APP页面。 什么是ASO ASO即APPStoreOptimization,是用于提高APP在应用市场排名的工具,其实也就是移动产品的SEO工作。 ASO是为了提高该产品的搜索结果成绩,提升APP的下载量,针对Goog…

ASO优化之关键词该如何组词选词

应用商店的优化受多重因素影响&#xff0c;主要因素之一就是应用的关键词以及搜索量。那么今天我们就具体来聊聊如何给关键词进行组词和选词。 1&#xff0c;通过搜索词、产品定位、产品介绍等维度分析竞品的主要功能&#xff0c;比如用户分类、定位、用户界面等等&#xff0c…

ASO代理业务浅析(五)aso未来的市场

ASO业务的未来 究其未来&#xff0c;溯其本源。 ASO行业有一个很重要的基础理论&#xff0c;是基于苹果的搜索排名机制&#xff08;此处省去三千字&#xff09;&#xff0c;但有个更重要的基础设施&#xff0c;是数据服务。**数据尤其是**研究院在这方面其实是有头部发言权的…

ASO优化之竞品分析该怎么做

竞品分析就是对竞争对手的产品进行借鉴和全方位的分析处理&#xff0c;取长补短&#xff0c;从而找到自己产品的改进点。今天我们通过应用商城里的APP&#xff0c;来给大家讲讲怎么做APP的竞品分析。 树立好清晰的目标&#xff0c;具体产品&#xff0c;具体分析&#xff0c;根…

「ASO优化服务」APP如何做数据分析

当下,逢运营必谈数据分析,APP运营更是如此。数据分析的用意本不在于数据本身,而是要打造一个数据反馈闭环。收集数据,设计基础数据指标,多维度交叉分析不同指标,以数据甄别问题,再反向作用产品,最终形成数据驱动产品设计的闭环。 从运营小白到产品经理,提到APP数据分…

ASO优化如何不花钱也能上榜

应用市场优化(App Store Optimization)简称ASO,是一项让开发者的APP更容易被用户在App Store内搜索到的APP推广技术。已越来越被重视。 ASO优化的排名因素由哪些?ASO优化可以快速达到排名靠前的目的吗? 一、ASO优化排名的七大因素 1、app关键词 2、app标题 3、app的应…