tomcat总结笔记
文章目录
- Tomcat
- 1、什么是tomcat?
- 2、rpm安装jre环境
- 3、源码安装jdk环境
- 4、安装tomcat --源码安装
- 5、相关目录文件
- webapps
- Tomcat 配置文件目录介绍(conf)
- tomcat的相关管理命令在$prefix/bin目录下
- 实战1、:配置nginx动静分离
- 实战2、配置基于tomcat的虚拟主机配置
- 实战3、配置jforum论坛部署
- 配置tomcat服务启动脚本
- 基于域名访问的host配置
- 服务器状态查看
- 二进制升级
Tomcat
1、什么是tomcat?
Tomcat是用于发布和解析JSP(Java Server Page)网页(基于JAVA语言开发的代码),将Tomcat称为JAVA容器,Tomcat软件本身基于JAVA语言开发。
端口号:8080
主配置文件:/usr/local/tomcat/conf/server.xml
三个端口:
8080 – 默认tomcat访问端口
8005 – 用于关闭tomcat的(SHUTDOWN 必须要大写,小写不管用)
8009 – AJP端口 用于Apache和Tomcat内部通讯端口
2、rpm安装jre环境
# rpm -ivh jdk-8u301-linux-x64.rpm
在/etc/profile下写入
export JAVA_HOME=/usr/java/jdk1.8.0_301-amd64 #这里安装路径自动定位在这里
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/fre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HMOE/jre/bin:$PATH
[root@hd2 ~]# source /etc/profile
#查看java版本
[root@hd2 ~]# java -version
3、源码安装jdk环境
1、安装JDK—源码安装
1、系统环境说明
# cat /etc/redhat-release 系统信息
# uname -a 查看系统信息
# getenforce
# systemctl status firewalld.service
2 、安装 JDK
# mkdir /usr/local/java 安装工作目录
# tar xzf jdk-8u60-linux-x64.tar.gz
# mv jdk1.8.0_192 /usr/local/java/jdk
# 设置环境变量
# vim /etc/profile
export JAVA_HOME=/usr/local/java/jdk #指定java安装目录
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH #用于指定java系统查找命令的路径
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar #类的路径,在编译运行java程序时,如果有调用到其他类的时候,在classpath中寻找需要的类。
# source /etc/profile #让环境变量生效
2、测试jdk是否安装成功
# java -version
4、安装tomcat --源码安装
# tar xvf apache-tomcat-9.0.11.tar.gz
# mkdir /usr/local/tomcat
# mv apache-tomcat-9.0.11 /usr/local/tomcat
# 设置环境变量
# echo 'export TOMCAT_HOME=/usr/local/tomcat'>>/etc/profile
# source /etc/profile
# chown -R root.root /usr/java/jdk1.8.0_301-amd64/ /usr/local/tomcat/ # 注意授权,统一权限
2、检查tomcat是否安装成功
# /usr/local/tomcat/apache-tomcat-9.0.11/bin/startup.sh
# netstat -naput | grep tomcat(8080)
5、相关目录文件
*├── bin #存放tomcat管理脚本 (操作命令)
*├── conf # tomcat 配置文件
├── lib # web应用调用的jar包存放路径
├── LICENSE
*├── logs # tomcat 日志存放目录,catalina.out 为主要输出日志
├── NOTICE
├── RELEASE-NOTES
├── RUNNING.txt
├── temp # 存放临时文件
*├── webapps # web程序存放目录
└── work # 存放编译产生的.java 与 .class文件
webapps
├── docs # tomcat 帮助文档
├── examples # web应用实例
├── host-manager # 主机管理
├── manager # 管理
└── ROOT # 默认站点根目录
Tomcat 配置文件目录介绍(conf)
├── Catalina
├── catalina.policy 配置tomcat对文件系统中目录或文件的读、写执行等权限,及对一些内存,session等的管理权限
├── catalina.properties 配置tomcat的classpath等
├── context.xml tomcat的默认context容器
├── logging.properties 配置tomcat的日志输出方式
├── logs
*├── server.xml # tomcat 主配置文件
├── server.xml.bak
├── server.xml.bak2
*├── tomcat-users.xml # tomcat 管理用户配置文件
├── tomcat-users.xsd
└── web.xml tomcat的应用程序的部署描述符文件
tomcat的相关管理命令在$prefix/bin目录下
/usr/local/tomcat/bin
catalina.sh 主命令脚本
configtest.sh 检测配置文件
shutdown.sh 关闭
startup.sh 启动
version.sh 查看版本
netstat -naput | grep 8080 查看tomcat
实战1、:配置nginx动静分离
192.168.1.12 -- Tomcat1 & Tomcat2
192.168.1.11 -- Nginx
多实例
[root@hd2 ~]# mv /usr/local/tomcat /usr/local/tomcat1
[root@hd2 ~]# cp -a /usr/local/tomcat1/ /usr/local/tomcat2
主配置文件
[root@hd2 ~]# vim /usr/local/tomcat2/apache-tomcat-9.0.11/conf/server.xml<Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" />
改为<Connector port="8081" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" /><Server port="8005" shutdown="SHUTDOWN">
改为<Server port="8006" shutdown="SHUTDOWN">
开启两个tomcat
[root@hd2 ~]# /usr/local/tomcat1/apache-tomcat-9.0.11/bin/startup.sh
Tomcat started.
[root@hd2 ~]# /usr/local/tomcat2/apache-tomcat-9.0.11/bin/startup.sh
Tomcat started.
查看
[root@hd2 ~]# ps -ef | grep tomcat
tomcat默认访问目录
/usr/local/tomcat2/webapps下 ROOT目录
建立index.jsp测试代码
<html>
<body>
<h1>JSP Test Page tomcat2 </h1>
<%=new java.util.Date()%>
</body>
</html>安装Nginx 并创建虚拟主机
[root@hd1~]# wget http://www.nginx.org/download/nginx-1.14.2.tar.gz
[root@hd1 ~]# yum -y install openssl-devel
[root@hd1 ~]# useradd www
[root@hd1 ~]# tar -xvf nginx-1.14.2.tar.gz
[root@hd1 ~]# cd nginx-1.14.2
[root@hd1 ~]# ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-http_ssl_module
[root@Hd2-LB nginx-1.14.2]#make && make install
修改配置文件,创建虚拟主机
[root@hd1 ~]# cd /usr/local/nginx/conf/
[root@hd1 ~]# mv nginx.conf nginx.conf.bak
[root@hd1 ~]# egrep -v "#|^$" nginx.conf.bak > nginx.conf
[root@hd1 ~]# vim nginx.conf
worker_processes 1;
events {worker_connections 1024;
}
http {include mime.types;default_type application/octet-stream;sendfile on;
keepalive_timeout 65;
#这是我们自己添加的一个子配置文件路径include /usr/local/domain/*;
}
[root@hd1 ~]# mkdir /usr/local/domain
[root@hd1 ~]# vim /usr/local/domain/bbs.a.conf
upstream tomcat_web {server 192.168.1.12:8080 weight=1 max_fails=2 fail_timeout=15;server 192.168.1.12:8081 weight=1 max_fails=2 fail_timeout=15;}
server {listen 80;server_name bbs.a.com;location / {root html;index index.html index.htm;proxy_set_header Host $host;proxy_pass http://tomcat_web;}location ~* .*\.(html|htm|js|png|jpg|gif|css|jpeg|txt|gz|bz2|zip|bmp|doc|xls|docx)$ {root /var/www/html;expires 30d;}
}
#location ~* 表示不区分大小写匹配 .*\.(html|htm)$ 正则表达式表示以.html或htm结尾的所有网页
启动nginx
[root@hd1 ~]# /usr/local/nginx/sbin/nginx
[root@hd1 ~]# mkdir /var/www/html -p
[root@hd1 ~]# cd /var/www/html
[root@hd1 ~]# echo "wo shi nginx web" >index.html
重启tomcat
[root@hd2 ~]# /usr/local/tomcat1/bin/shutdown.sh
[root@hd2 ~]# /usr/local/tomcat1/bin/startup.sh
[root@hd2 ~]# /usr/local/tomcat2/bin/shutdown.sh
[root@hd2 ~]# /usr/local/tomcat2/bin/startup.sh测试一下负载均衡集群
这里的ip是nginx的ip
[root@hd1 ~]# curl 192.168.8.139/index.jsp
<html>
<body>
<h1>JSP Test Page tomcat1 </h1>
Thu Jul 29 21:47:01 CST 2021
</body>
</html>
[root@hd1 ~]# curl 192.168.8.139/index.html
wo shi nginx web
实战2、配置基于tomcat的虚拟主机配置
Tomcat配置文件,一对Host标签就是一个虚拟主机,即相当于一个nginx中的server模块
基于tomcat1的多虚拟主机配置 两个网站分别是:www.a.com 和www.b.com
#autoDeploy=true 表示自动部署(jvm)
#unpackWARs=true 表示自动解压war包
#"表示双引号[root@hd2 ~]# vim /usr/local/tomcat1/conf/server.xml<Host name="www.a.com" appBase="webapps/a"unpackWARs="true" autoDeploy="true"><Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="localhost_access_log" suffix=".txt"pattern="%h %l %u %t "%r" %s %b" /></Host><Host name="www.b.com" appBase="webapps/b"unpackWARs="true" autoDeploy="true"><Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="localhost_access_log" suffix=".txt"pattern="%h %l %u %t "%r" %s %b" /></Host>
#日志格式对比(重要)
含义 tomcat nginx
客户端ip地址 %h $remote_addr
时间 %t $time_local
请求 %r $request
状态码 %S $status
资源大小 %b $body_bytes_sent
跳转 %{Referer}i $http_referer
客户端 %{User-Agent}i $http_user_agent
真实客户端ip %{X-Forwarded-For} $http_x_forwarded_for配置两个虚拟站点的环境
[root@hd2 ]# cd /usr/local/tomcat1/webapps/
[root@hd2 webapps]# mkdir a/ROOT b/ROOT -p
[root@Hd2 webapps]# echo "wo shi t a" >a/ROOT/index.html
[root@Hd2 webapps]# echo "wo shi t b" >b/ROOT/index.html
[root@Hd2 webapps]# /usr/local/tomcat1/bin/shutdown.sh
[root@Hd2 webapps]# /usr/local/tomcat1/bin/startup.sh
配置windows主机的hosts文件设置内容如下:
/windows/system32/drivers/etc/hosts
192.168.0.12 www.a.com www.b.com
测试
curl 192.168.8.138:8080
curl www.a.com:8080
实战3、配置jforum论坛部署
#将war包上传到/root目录之下
[root@hd2 ROOT]# pwd
/usr/local/tomcat1/webapps/a/ROOT
[root@hd2 ROOT]# mv /root/jforum-2.7.0.war .
[root@hd2 ROOT]# jar xf jforum-2.6.2.war重启tomcat
[root@hd2 ~]# /usr/local/tomcat1/bin/shutdown.sh
[root@hd2 ~]#/usr/local/tomcat1/bin/startup.sh
配置tomcat服务启动脚本
tomcat提供了方便的启动命令脚本,但是却没有提供服务器中经常管理使用的service脚本。可以自行编写服务管理脚
本
1.编辑启动脚本,生成tomcat.pid
# cd /usr/local/tomcat1/apache-tomcat-9.0.11/bin/
# vim catalina.sh
137gg 跳转到137行
在PRGDIR下面添加
CATALINA_PID=/var/run/tomcat.pid
2.
基于域名访问的host配置
1、建立项目目录并写入测试文件
# cd /usr/local/tomcat/webapps/
# mkdir devops/ROOT -p
# cd /devops/ROOT
# touch index.html
# echo "this is tomcat.devops.com"
2、编辑/usr/local/tomcat/conf/server.xml
# vim /usr/local/tomcat/conf/server.xml
添加
<Host name="localhost" appBase="webapps/devops">
</Host>
name可以写成域名
<Host name="tomcat.devops.com" appBase="webapps/devops">
</Host>
3、检测配置并重启
# service tomcat configtest
# service tomcat restart
4、访问主机解析域名
# vim /etc/hosts
192.168.8.138 tomcat.devops.com
5、测试
服务器状态查看
1.去掉访问ip限制
vim /usr/local/tomcat1/apache-tomcat-9.0.11/webapps/manager/META-INF/context.xml
注释掉
2、创建用户和密码开启访问权限
vim /usr/local/tomcat/conf/tomcat-users.xml
加入
二进制升级
TERM, INT(快速退出,当前的请求不执行完成就退出) -s stop
QUIT (优雅退出,执行完当前的请求后退出) -s quit
HUP (重新加载配置文件,用新的配置文件启动新worker进程,并优雅的关闭旧的worker进程) -s reload
USR1 (重新打开日志文件) -s reopen
USR2 (平滑的升级nginx二进制文件 拉起一个新的主进程 旧主进程不停止)
WINCH (优雅的关闭worker进程)1、nginx的升级
# ps -ef | grep 80(nginx)
# kill -USR2 nginx主进程号 平滑的启动一个进程 升级操作
# kill -WINCH nginx子进程号 优雅的关闭子进程
# kill -QUIT nginx主进程 优雅的关闭主进程
#修改路由
echo "1" >/proc/sys/net/ipv4/ip forward①编译安装新版本
# shell > tar xvf nginx-1.16.0.tar.gz
# shell > cd nginx-1.16.0
# shell > ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module
# shell > make && make install
②新旧版本同时运行
# shell > kill -USR2 主进程号
③停止掉旧进程
# shell > kill -WINCH 旧的工作进程号
# shell > kill -QUIT 旧的主进程号
在nginx中,默认提供了平滑升级的操作,只需要执行以下命令
#注意先configure 在nginx源码包执行
# shell > make install && make upgrade
相关文章:
tomcat总结笔记
文章目录 Tomcat1、什么是tomcat?2、rpm安装jre环境3、源码安装jdk环境4、安装tomcat --源码安装5、相关目录文件webappsTomcat 配置文件目录介绍(conf)tomcat的相关管理命令在$prefix/bin目录下 实战1、:配置nginx动静分离实战2、配置基于t…...

中断向量控制器(NVIC)
1. 什么是中断 在处理器中,中断是一个过程,即CPU在正常执行程序的过程中,遇到外部/内部的紧急事件需要处理,暂时中止当前程序的执行,转而去为处理紧急的事件,待处理完毕后再返回被打断的程序处继续往下执行…...

QT配置FFmpeg出现错误原因
文章目录 QT配置ffmpeg出现: undefined reference to "avcodec_version"没有配置环境变量QT和FFmpeg的版本不对应直接添加FFmpeg的头文件没有在.pro文件添加路径 QT 程序异常退出没有在debug文件里面存放dll库 QT配置ffmpeg出现: undefined re…...
列出使用Typescript的一些优点?
使用Typescript有以下优点: 类型安全:Typescript是一种静态类型语言,它要求在编码阶段明确定义变量和函数的类型。这种类型安全可以减少在运行时出现错误的可能性,并提高代码的可读性和可维护性。代码可读性和可维护性࿱…...
如何做好测试?(四)集成测试(Integration Testing, IT)
1. 集成测试的详细介绍: 集成测试(Integration Testing, IT),是一种软件测试方法,旨在验证不同组件、模块或子系统之间的交互和集成是否正常工作。它侧重于测试系统的组件之间的接口和数据传递,以确保它们…...
二叉树前序、中序、后序遍历(递归法、迭代法)
前序遍历:(练习题) 迭代法一: int TreeSize(struct TreeNode* root){return rootNULL?0:TreeSize(root->left)TreeSize(root->right)1; }int* preorderTraversal(struct TreeNode* root, int* returnSize){if(rootNULL){*…...

npm ,yarn 更换使用国内镜像源,淘宝源
背景 文章首发地址 在平时开发当中,我们经常会使用 Npm,yarn 来构建 web 项目。但是npm默认的源的服务器是在国外的,如果没有梯子的话。下载速度会特别慢。那有没有方法解决呢? 其实是有的,设置国内镜像即可&#x…...

真正理解浏览器渲染更新流程
浏览器渲染更新过程 文章目录 浏览器渲染更新过程帧维度解释帧渲染过程一些名词解释Renderer进程GPU进程rendering(渲染) vs painting(绘制)⭐位图纹理Rasterize(光栅化) 1. 浏览器的某一帧开始:vsync2. Input event handlers3. requestAnimationFrame4. 强制重排(可…...

市场调研的步骤与技巧:助你了解市场需求
在当今快速发展的市场中,进行有效的市场研究对于了解消费者的行为、偏好和趋势至关重要。适当的市场研究可以帮助公司获得对目标受众的有价值的见解,创造更好的产品和服务,并提高客户满意度。今天,小编和大家一起讨论一下怎么做市…...
ansible的个人笔记使用记录-个人心得总结
1.shell模块使用,shell模块------执行命令,支持特殊符 ansible all -m shell -a yum -y install nginx ansible all -m shell -a systemctl restart nginx ansible all -m shell -a systemctl stop nginx && yum -y remove nginx2. file模块…...

相机数据恢复!详细步骤解析(2023新版)
和朋友在外面旅游用相机拍了好多有意义的照片和视频,但是导入电脑后不知道是被我删除了还是什么原因,这些照片都不见了,请问有方法恢复吗?” 在数字摄影时代,我们依赖相机记录珍贵的瞬间。然而,相机数据丢失…...

LNK2001: unresolved external symbol __imp___std_init_once_begin_initialize 问题解决
LNK2001: unresolved external symbol __imp___std_init_once_begin_initialize 解决 文章目录 问题背景方法一:使用预编译指令方法二:使用相同的环境 参考链接附录 问题背景 Visual Studio 2019 对 CMakeLists.txt 的支持不是很好,使用 “文…...

修改switch Nand无线区码 以支持高频5G 信道
环境:NS switch 问题:日版,港版无法连接大于44信道的5G WIFI 解决办法:修改PRODINFO.dec的WIFI 区域码 背景:我的switch是最早买的港版的一批,WIFI 只能连接日本的信道,家里的路由器是国行的&am…...

基于SpringBoot的课程答疑系统
目录 前言 一、技术栈 二、系统功能介绍 学生信息管理 科目类型管理 老师回答管理 我的收藏管理 学生问题 留言反馈 交流区 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息互联网信息的飞速发展,无纸化作业变成了一种趋势&#x…...
JAVA中的泛型
一、泛型的概念 泛型是JAVA中的一个重要的概念,它允许你在编译时指定数据类型,从而使得代码更加灵活,更加通用。通过泛型,你可以在通用代码上操作不同数据类型,使得代码更加具有通用性。 二、泛型的使用场景 1、泛型…...
日撸代码300行:第73天(固定激活函数的BP神经网络,训练与测试过程理解)
进一步梳理理解了一下正向和反向传播。Forward 是利用当前网络对一条数据进行预测的过程,BackPropagation 是根据误差进行网络权重调节的过程。 完整的代码在72天,这里只粘贴Forward和BackPropagation两个方法。 /*** *********************************…...

css中常用单位辨析
辨析 px:像素;css中最普遍最常用的单位,不管在何种设备或分辨率上,1px始终代表屏幕上的一个像素。 %:百分比;基于父元素相对属性的百分比。 em:当前字体大小的倍数;基于父元素字体…...
Unity 一些常用特性收集
常用的类的特性 特性效果[Serializable]可序列化,作为一个子属性显示在Inspector面板[RequireComponent(typeof(CoomponnetName))]该类挂载的游戏物体,需要要有对应的组件[DisallowMultipleComponent]不允许挂载多个该类或其子类[ExecuteInEditMode]允许…...

select实现服务器并发
select的TCP服务器代码 #include <stdio.h> #include <unistd.h> #include <string.h> #include <sys/types.h> #include <sys/socket.h> #include <arpa/inet.h> #include <netinet/in.h> #include <sys/select.h> #include…...

【Spring底层原理】BeanFactory的实现
🐌个人主页: 🐌 叶落闲庭 💨我的专栏:💨 c语言 数据结构 javaEE 操作系统 Redis 石可破也,而不可夺坚;丹可磨也,而不可夺赤。 容器实现 一、BeanFactory实现的特点1.1 Be…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...

使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...

Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...

1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...