Tomcat运维
目录
一、Tomcat简介
二、系统环境说明
1、关闭防火墙,selinux
2、安装JDK
3、安装Tomcat
三、Tomcat目录介绍
1、tomcat主目录介绍
2、webapps目录介绍
3、Tomcat配置介绍(conf)
4、Tomcat的管理
四、Tomcat 配置管理页面(了解)
server.xml配置文件
五、WEB站点部署
1、使用war包部署web站点
2、自定义默认网站目录
六、Tomcat多实例配置
1、复制程序文件
2、启动tomcat多实例
3、负载均衡配置
一、Tomcat简介
Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。
Tomcat和Nginx、Apache(httpd)、Web服务器一样,具有处理HTML页面的功能不过Tomcat处理静态HTML的能力不如Nginx/Apache服务器。
一个tomcat默认并发是200(官方),可以修改,但实际用的时候也就200并发左右。
使用方案:

建议使用Nginx和Tomcat配合,Nginx处理静态,Tomcat处理动态程序 方案三中后端Tomcat可以运行在单独的主机,也可以是同一台主机上的多实例
Tomcat官网:
Tomcat好帮手---JDK
JDK是 Java 语言的软件开发工具包,JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。
JDK下载面页:
Java Downloads | Oracle
安装时候选择tomcat软件版本要与程序开发使用的版本一致。jdk版本要进行与tomcat保持一致。
二、系统环境说明
1、关闭防火墙,selinux
systemctl stop firewalld && setenforce 0
2、安装JDK
上传jdk1.8到服务器。安装jdk
tar xzf jdk-8u191-linux-x64.tar.gz -C /usr/local/
mv /usr/local/jdk1.8.0_191 /usr/local/jdk
echo "export PATH=/usr/local/jdk/bin:$PATH" >> /etc/profile
source /etc/profile
3、安装Tomcat
创建一个目录用于存放tomcat
mkdir /data/application -pcdwget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.49/bin/apache-tomcat-8.5.49.tar.gz

wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.49/bin/apache-tomcat-8.5.49.tar.gz --no-check-certificatetar xzf apache-tomcat-8.5.49.tar.gz -C /data/application/cd /data/application/mv apache-tomcat-8.5.49/ tomcat
设置环境变量
echo "export PATH=/data/application/tomcat/bin:$PATH" >> /etc/profilesource /etc/profile

三、Tomcat目录介绍
1、tomcat主目录介绍

2、webapps目录介绍

3、Tomcat配置介绍(conf)

4、Tomcat的管理

我们已经设置了环境变量所以直接 : startup.sh 启动 shutdown.sh 关闭
但是如果布置多个实例,就要去对应的tomcat包里面启动和关闭
注意:tomcat未启动的情况下使用shutdown脚本,会有大量的输出信息。

端口:
8005:这个端口负责监听关闭Tomcat的请求 shutdown:向以上端口发送的关闭服务器的命令字符串。
8009: 与其他http服务通信接口。(也可以没有)
8080: 建立http也就是客户端访问连接用。可以修改
查看日志:
tail -f /data/application/tomcat/logs/catalina.out
扩展:解决Tomcat启动慢的方法
Tomcat启动慢主要原因是生成随机数的时候卡住了,导致tomcat启动不了。
yum install rng-tools # 安装rngd服务(熵服务,增大熵池)
systemctl start rngd # 启动服务
四、Tomcat 配置管理页面(了解)
vim /usr/local/tomcat/conf/tomcat-users.xml
添加:(</tomcat-users> #一定要包含在这个标签"里面")
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<user username="user" password="password" roles="tomcat,manager-gui,manager-script,admin-gui,admin-script"/>
vim /usr/local/tomcat/webapps/host-manager/META-INF/context.xml vim /usr/local/tomcat/webapps/manager/META-INF/context.xml
修改为如图所示:

server.xml配置文件
主配置文件 server.xml
<?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWN"><!--port: 指定用于接受关闭命令的端口号shutdown: 指定关闭命令,可自定义,与启动脚本中的命令相对应--><Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /><!--Listener: 用于配置全局监听器,此处为使用APR库进行性能优化的监听器className: 监听器类的完全限定名SSLEngine: 指定是否启用SSL引擎--><Listener className="org.apache.catalina.core.JasperListener" /><!--Listener: JSP引擎的监听器,用于编译和加载JSP页面className: 监听器类的完全限定名--><GlobalNamingResources><!--全局命名资源的配置部分,这里包含了一个可编辑的用户数据库的资源配置--><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" /><!--Resource: 定义了一个资源name: 资源的名称,这里为"UserDatabase"auth: 认证方式,Container表示使用容器的身份验证type: 资源的类型,这里为"org.apache.catalina.UserDatabase"description: 资源的描述信息factory: 创建资源的工厂类的完全限定名pathname: 用户数据库文件的路径,这里为"conf/tomcat-users.xml"--></GlobalNamingResources><Service name="Catalina"><!--Service: Tomcat服务的配置name: 服务名称--><Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" /><!--Connector: 配置用于接受HTTP请求的连接器port: 监听的端口号protocol: 使用的协议connectionTimeout: 连接超时时间redirectPort: 重定向端口,用于HTTPS连接--><!-- 其他连接器的配置 --><Engine name="Catalina" defaultHost="localhost"><!--Engine: Web容器引擎的配置name: 引擎名称defaultHost: 默认的主机名--><Realm className="org.apache.catalina.realm.LockOutRealm"><!--Realm: 安全领域的配置className: 安全领域实现类的完全限定名--><Realm className="org.apache.catalina.realm.UserDatabaseRealm"resourceName="UserDatabase"/><!--嵌套的Realm配置,这里使用UserDatabaseRealm作为默认的安全领域resourceName: 资源名称,对应于conf/tomcat-users.xml文件中的UserDatabase--></Realm><Host name="localhost" appBase="webapps"unpackWARs="true" autoDeploy="true"><!--Host: 虚拟主机的配置name: 主机名appBase: Web应用程序的基础路径unpackWARs: 是否自动解压部署的WAR文件autoDeploy: 是否自动部署Web应用程序--><!-- 其他虚拟主机的配置 --><Valve className="org.apache.catalina.valves.AccessLogValve"directory="logs" prefix="localhost_access_log." suffix=".txt"pattern="%h %l %u %t "%r" %s %b" /><!--Valve: 用于记录访问日志className: 完全限定名directory: 日志存储的目录prefix: 日志文件名的前缀suffix: 日志文件名的后缀pattern: 日志格式--></Host><!-- 其他虚拟主机的配置 --></Engine></Service>
</Server>
Connector主要参数说明
port:指定服务器端要创建的端口号,并在这个端口监听来自客户端的请求。
protocol:连接器使用的协议,支持HTTP和AJP。AJP(Apache Jserv Protocol)专用于tomcat与apache建立通信的.
redirectPort:指定服务器正在处理http请求时收到了一个SSL传输请求后重定向的端口号
maxThreads:接收最大请求的并发数
connectionTimeout 指定超时的时间数(以毫秒为单位)
host参数详解

host:表示一个虚拟主机
name:指定主机名
appBase:应用程序基本目录,即存放应用程序的目录.一般为appBase="webapps",相对于CATALINA_HOME而言的,也可以写绝对路径。
unpackWARs:如果为true,则tomcat会自动将WAR文件解压,否则不解压,直接从WAR文件中运行应用程序
autoDeploy:在tomcat启动时,是否自动部署
五、WEB站点部署
上线的代码有两种方式:
第一种方式是直接将程序目录放在webapps目录下面,这种方式大家已经明白了,就不多说了。(放在webapps目录下的ROOT目录里面,浏览器访问ip:8080后面不需要指定目录,否则访问需要指定,例如:ip:8080/jenkins)
第二种方式是使用开发工具将程序打包成war包,然后上传到webapps目录下面。(这种会自动解压缩)
1、使用war包部署web站点
wget http://updates.jenkins-ci.org/download/war/2.129/jenkins.war
cd /data/application/tomcat #进入tomcat目录
cp -r webapps/ /opt/ #将原来的发布网站目录备份
cd webapps/
rm -rf * #清空发布网站里面的内容
cp /root/jenkins.war . #将war包拷贝到当前目录
关闭服务,手动解压 unzip jenkins.war 完了在启动服务
#这里配置上传大于50M的文件
/usr/local/tomcat/webapps/manager/WEB-INF/web.xml<!-- 50 MiB max -->

2、自定义默认网站目录
修改默认发布目录:
mkdir /data/application/webapp #创建发布目录
vim /data/application/tomcat/conf/server.xml
将原来的:

改为:

然后重启服务(先关闭,再启动),把war包拷贝到新的发布目录,它会自动解压缩
六、Tomcat多实例配置
多实例(多进程):同一个程序启动多次,分为两种情况:
第一种:一台机器跑多个站点;
第二种:一个机器跑一个站点多个实例,配合负载均衡
1、复制程序文件
cd /data/application/
cp -r tomcat/ tomcat_2#修改端口,以启动多实例。多实例之间端口不能一致sed -i 's#8005#8012#;s#8080#8082#' tomcat_2/conf/server.xmlecho 8081 >> tomcat/webapps/ROOT/index.jsp
echo 8082 >> tomcat_2/webapps/ROOT/index.jsp
2、启动tomcat多实例
去各自tomcat里面启动
3、负载均衡配置
下载一个nginx
upstream testweb {server 192.168.50.114:8081 weight=1 max_fails=1 fail_timeout=2s;server 192.168.50.114:8082 weight=1 max_fails=1 fail_timeout=2s;
}server {listen 80;server_name localhost;access_log /var/log/nginx/proxy.access.log main;location / {proxy_pass http://testweb;proxy_set_header Host $host:$server_port;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;} error_page 500 502 503 504 /50x.html;location = /50x.html {root /usr/share/nginx/html;}
}
配置完检查语法,然后开启,直接浏览器访问ip,无需指定端口
相关文章:
Tomcat运维
目录 一、Tomcat简介 二、系统环境说明 1、关闭防火墙,selinux 2、安装JDK 3、安装Tomcat 三、Tomcat目录介绍 1、tomcat主目录介绍 2、webapps目录介绍 3、Tomcat配置介绍(conf) 4、Tomcat的管理 四、Tomcat 配置管理页面(了解) …...
前端开发基于Qunee绘制网络拓扑图总结-02
1、渲染连线颜色 *关键函数一定要调用:graph.invalidate()* graph.forEach(function(element) {if (element instanceof Q.Edge) {let arr [#549BF1, #AA8A6E, #8F54F1,#5A70BC,#BCBF5C, #BC5A76, #67B4D4,#B4C9EF, #676AD4, #A86EAA,#5CBF7F, #EFB4B4];let inde…...
牛客——中位数图(连续子数组和二维前缀和)
链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网 题目描述 给出1~n的一个排列,统计该排列有多少个长度为奇数的连续子序列的中位数是b。中位数是指把所有元素从小到大排列后,位于中间的数。 输入描述: 第一行为两个正…...
Java:搭建eladmin复习mvn、springboot、vue等
目录 1.源码平台后端: 2.源码平台前端: 3.操作系统:centos7.9 4.mysql:5.7.x 安装 5.redis:5.0.X 6.maven:3.8 7.java:1.8: 8.nodejs:16.x 9.通过mvn打包eladmin后端 10.npm打包前端项目进行部署 11.访问测试…...
JavaScript入门
第二个知识点:javascript的基本语法 定义变量 在JavaScript里面,没有int,string 之类的数据类型,只有 var var num 1; var string "天玄地号"; 在javascript中,写完一句语句之后可以不加分号ÿ…...
Redis单机-主从集群-哨兵集群-分片集群 搭建教程
Redis集群 本章是基于CentOS7下的Redis集群教程,包括: 单机安装RedisRedis主从Redis分片集群 1.单机安装Redis 首先需要安装Redis所需要的依赖: yum install -y gcc tclredis-6.2.4.tar.gz 然后将Redis安装包上传到虚拟机的任意目录&am…...
湘潭大学-计算机网络-补考
背景 卷面分23,平时分85,各占百分之50,最终54,遗憾挂科 大学第一次补考 计划 首先把湖科大教书匠的计算机网络视频看一遍,并做一些笔记 然后看教材 刚看到老师说最好的复习资料是书和课后作业(想起来…...
SOME/IP SD 协议介绍(五)使用SOME/IP-SD宣布非SOME/IP协议的协议。
使用SOME/IP-SD宣布非SOME/IP协议的协议。 除了SOME/IP之外,车辆内部还使用其他通信协议,例如用于网络管理、诊断或闪存更新。这些通信协议可能需要传递服务实例或具有事件组。 对于非SOME/IP协议,应使用特殊的服务ID,并使用配置…...
svn 安装路径
SVN客户端安装(超详细) 一、SVN客户端安装 1、下载安装包地址:https://tortoisesvn.net/downloads.html 此安装包是英文版的,还可以下载一个语言包,在同界面的下方 一直点击下一步,直到弹出选择红框 然…...
Skywalking trace UI页面中字段信息详解,包括端点、跨度类型和Peer
刚上手Skywalking的同学可能对 trace UI 页面信息中的字段信息不是很了解,在这里就给大家一一讲解,重点关注端点、跨度类型和Peer 服务 :服务的名称 实例:服务对应的实例 端点:端点(Endpoint) 对于特定服务所接收的请求路径, 如…...
【 USRP 相控阵】X波段相控阵开发平台用户指南
包装 一共三件。 1、AD9081-FMCA-EBZ AD9081 MxFE Evaluation Board, https://www.analog.com/eval-ad9081 AD9081 的全功能评估板使用 ACE 软件进行控制的 PC 软件HMC7044 的板载时钟用于管理套件和 FPGA 时钟选择切换到外部直接时钟 AD9081-FMCA-EBZ 评估板包括以各种模…...
C++关键词auto详解
顾得泉:个人主页 个人专栏:《Linux操作系统》 《C从入门到精通》 《LeedCode刷题》 键盘敲烂,年薪百万! 一、小思考 随着我们对于C的不断学习,遇到的程序越来越复杂,程序中用到的类型也越来越复杂…...
【GPU驱动开发】- GPU架构流程
前言 不必害怕未知,无需恐惧犯错,做一个Creator! 一、总述 GPU(Graphics Processing Unit,图形处理单元)是一种专门用于处理图形和并行计算的处理器。GPU系统架构通常包括硬件和软件层面的组件。 总体流…...
UE5在VisualStudio升级后产生C++无法编译的问题
往期的虚幻引擎项目在VS更新后,编译时会报错,这一般出现在VS升级之后,UE对于VC的编译器定位没有更新导致; 有出现如下问题: 问题1: Running I:/EPCI/Epic Games/UE_5.3/Engine/Build/BatchFiles/Build.ba…...
目标检测:1预备知识
开始涉及目标检测内容,总结一下学习记录 1、目标检测的基本概念 (一)什么是目标检测 目标检测(Object Detection) 的任务是找出图像中所有感兴趣的目标(物体),不同于分类和回归问题…...
【Linux取经路】进程控制——进程等待
文章目录 一、进程创建1.1 初识 fork 函数1.2 fork 函数返回值1.3 写时拷贝1.4 fork 的常规用法1.5 fork 调用失败的原因1.6 创建一批进程 二、进程终止2.1 进程退出场景2.2 strerror函数2.3 errno全局变量2.4 程序异常2.5 进程常见退出方法2.6 exit 函数2.7 _exit 函数和 exit…...
虹科干货 | 如何使用nProbe Cento构建100 Gbit NetFlow 传感器
本文是一份全面的指南,解释了如何使用nProbe Cento构建一个高效的100 Gbit NetFlow传感器。旨在帮助大家充分利用NetFlow技术,以监控和分析高速网络流量。 当需要监控分布式网络,了解流经上行链路或关键网段的网络流量时,NetFlow…...
Web前端入门 - HTML JavaScript Vue
ps:刚开始学习web前端开发,有什么不正确、不标准的内容,欢迎大家指出~ Web简介 90年代初期,Web1.0,静态页面,不和服务器交互,网页三剑客指Dreamweaver、Fireworks、Flash2000年代中期…...
(Sping Xml方式整合第三方框架)学习Spring的第十天
Spring整合mybatis 1 . 导入Mybatis整合Spring的相关坐标 <dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.2.13.RELEASE</version></dependency><dependency><…...
单片机驱动多个ds18b20
目录 1设计内容 2ds18b20介绍 2.1传感器引脚及原理图 2.2寄存器配置 3程序实现 3.1配置初始化 3.2配置寄存器 3.3ROM读取 3.4温度读取 1设计内容 通过51单片机,读取总线上挂载的多个ds18b20的温度信息。 如下图,成功读取到3路温度数据。 2ds18…...
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...
浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...
【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...
MySQL JOIN 表过多的优化思路
当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...
MinIO Docker 部署:仅开放一个端口
MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...
基于PHP的连锁酒店管理系统
有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...
STM32---外部32.768K晶振(LSE)无法起振问题
晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…...

