Tomcat基础与Nginx的动静分离

一、TOMCAT基础功能

(一)自动解压war包

在配置文件中讲到,当接受到请求后,会匹配符合要求的Host,在配置文件中的Host只有一个,且规定了自动解压war包

自动解压war包

.war:WebApp打包,类zip格式文件,通常包括一个应用的所有资源,比如jsp,html,配置文件等

.jar:EJB类文件的打包压缩类zip格式文件,,包括很多的class文件, 网景公司发明

.rar:资源适配器类打包文件,目前已不常用

.ear:企业级WebApp打包,目前已不常用

传统应用开发测试后,通常打包为war格式,这种文件部署到Tomcat的webapps目录下,并默认会自动

建立两个文件,使用jar命令,压缩文件,并且以.war结尾

移动到该目录下后,会自动解压,形成目录文件

这个主站点目录比较特殊,在访问的URL没有任何上下文的情况下,默认以webapps/ROOT目录文主站点,如果有其它目录则以具体URL为主

(二)状态页

tomcat状态页是Apache Tomcat服务器提供的一个管理界面,通过这个页面可以查看和监控Tomcat运行时的状态信息。

状态页的相关文件也存放在webapps目录下

注释:tree需要安装: yum -y install tree

可以使用浏览器来访问查看

也可以直接输入/manager/status进行查看。但是会被拒绝访问

1.登录状态页

需要去修改配置文件,打开conf目录下tomcat-users.xml文件,并跳转到最后

#这些为注释的信息。它定义了Tomcat服务器中的角色(roles)和用户(users),以及这些
#用户所归属的角色。(角色的含义相当于用户组)
 
<role rolename="tomcat"/> 
#定义了一个名为 "tomcat" 的角色,这个角色可以对应于Tomcat服务器预定义的一些权限,比如
#访问管理界面或部署应用等。
 
<role rolename="role1"/> 
#定义了一个名为 "role1" 的自定义角色,可以根据实际需求赋予特定权限。
 
<user username="tomcat" password="<must-be-changed>" roles="tomcat"/> 
#定义了一个用户名为 "tomcat" 的用户,并设置了初始密码(这里需要在实际使用时替换为强密码)
#该用户归属于 "tomcat" 角色,因此拥有与该角色关联的所有权限。
 
<user username="both" password="<must-be-changed>" roles="tomcat,role1"/> 
#定义了一个用户名为 "both" 的用户,同样设置了初始密码。这个用户同时属于 "tomcat" 
#和 "role1" 两个角色,因此拥有这两个角色合并后的所有权限。
 
<user username="role1" password="<must-be-changed>" roles="role1"/> 
#定义了一个仅属于 "role1" 角色的用户。

了解这些信息后,将从拒绝界面复制的信息粘贴到配置文件的末尾,而后重启服务,使配置文件生效

这个时候,就可以使用虚拟机本机的浏览器去访问回环地址登录状态页

登录之后,就可以看到java虚拟机(JVM)的一些状态信息

PS Eden Space
'这是年轻代(Young Generation)的一部分,主要用于存储新创建的对象。当前已使用的内
存大小为210.02 MB,占其总容量(225.50 MB)的约93%。'
 
PS Old Gen
'这是老年代(Old Generation),存放长期存活或晋升过来的对象。当前已使用的内存大小
为25.57 MB,占其总容量(629.50 MB)的4%。'
 
PS Survivor Space
'同样是年轻代的一部分,用于保存在年轻代中经历过一次GC但尚未被回收的对象。当前已使用的
内存大小为7.54 MB,占其总容量(45.00 MB)的16%。'
 
Code Cache
'非堆内存区域,用于存储JIT编译后的机器码。当前已使用的内存大小为12.97 MB,占其最大可
扩展容量(240.00 MB)的5%。'
 
Compressed Class Space
'另一个非堆内存区域,当类空间过大时,经过压缩的类会被存放到此区域以节省内存。当前已使
用的内存大小为6.58 MB,占其最大容量(1024.00 MB)的0%,这里的“0%”可能是显示错误,因
为已经使用了6.58 MB的空间。'
 
Metaspace
'从Java 8开始取代了永久代(PermGen),用于存储类元数据信息。这里显示的最大容量为“-0.00 MB”,
这意味着Metaspace的大小可以动态调整,不受固定上限限制;当前已使用的内存大小为54.99 MB'

2.远程登录

修改完上面的配置文件后,只能使用本机去登录回环地址才可以访问,这也是在配置文件里就已经规定的,想要使用IP地址登录,还需要去修改manager目录下的META-INF/context.xml文件

在配置文件中,添加允许通过的字段,修改完毕后重新启动服务

这个时候再去使用该网段的地址去登录就可以了

由于状态页比较重要,在设置登录权限时需要注意哪些地址可以访问,一般不建议开启远程登录

(三)服务管理界面

Apache Tomcat的Manager App界面是一个基于Web的管理工具,用于管理和监控部署在Tomcat服务器上的Web应用程序。访问路径为/manager/html

通过Manager App,管理员可以执行以下操作:

   1.部署应用:上传WAR文件到Tomcat服务器,并部署为新的Web应用程序。

   2.重新加载应用:无需停止整个服务器或卸载再部署,即可更新已部署应用的内容。

   3.启动和停止应用:控制单个Web应用的启动与停止状态。

   4.删除应用:从Tomcat服务器中移除已经部署的Web应用程序。

   5.查看应用列表和状态:列出所有部署在Tomcat服务器上的Web应用程序及其当前运行状态(如是否正在运行、部署路径等信息)

(四)Host虚拟主机
Apache Tomcat中的虚拟主机(Virtual Hosts)是指在同一台物理服务器上通过不同的域名或IP地址来运行多个独立的Web应用程序。这种方式使得一个Tomcat实例可以为多个网站提供服务,每个网站对应一个虚拟主机。

1.设置虚拟主机
需要在配置文件(conf/server.xml)中添加Host信息
2.建立站点目录与文件

使用客户端进行访问

二、实现动静分离与负载均衡

Nginx 负载均衡模式: ●rr 负载均衡模式: 每个请求按时间顺序逐一分配到不同的后端服务器,如果超过了最大失败次数后(max_fails,默认1),在失效时间内(fail_timeout,默认10秒),该节点失效权重变为0,超过失效时间后,则恢复正常,或者全部节点都为down后,那么将所有节点都恢复为有效继续探测,一般来说rr可以根据权重来进行均匀分配。

●least_conn 最少连接: 优先将客户端请求调度到当前连接最少的服务器。

●ip_hash 负载均衡模式: 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题,但是ip_hash会造成负载不均,有的服务请求接受多,有的服务请求接受少,所以不建议采用ip_hash模式,session 共享问题可用后端服务的 session 共享代替 nginx 的 ip_hash(使用后端服务器自身通过相关机制保持session同步)。

●fair(第三方)负载均衡模式: 按后端服务器的响应时间来分配请求,响应时间短的优先分配。

●url_hash(第三方)负载均衡模式: 基于用户请求的uri做hash。和ip_hash算法类似,是对每个请求按url的hash结果分配,使每个URL定向到同一个后端服务器,但是也会造成分配不均的问题,这种模式后端服务器为缓存时比较好。

Nginx 服务器:192.168.80.10:80
Tomcat服务器1:192.168.80.100:80
Tomcat服务器2:192.168.80.101:8080  192.168.80.101:8081

1.部署Nginx 负载均衡器
systemctl stop firewalld
setenforce 0

yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make

useradd -M -s /sbin/nologin nginx

cd /opt
tar zxvf nginx-1.12.0.tar.gz -C /opt/

cd nginx-1.12.0/
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-file-aio \                                    #启用文件修改支持
--with-http_stub_status_module \                    #启用状态统计
--with-http_gzip_static_module \                    #启用 gzip静态压缩
--with-http_flv_module \                            #启用 flv模块,提供对 flv 视频的伪流支持
--with-http_ssl_module                                #启用 SSL模块,提供SSL加密功能
--with-stream                                        #启用 stream模块,提供4层调度
----------------------------------------------------------------------------------------------------------
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-file-aio --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_module --with-stream

make && make install

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

vim /lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecrReload=/bin/kill -s HUP $MAINPID
ExecrStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target

chmod 754 /lib/systemd/system/nginx.service
systemctl start nginx.service
systemctl enable nginx.service


2.部署2台Tomcat 应用服务器
systemctl stop firewalld
setenforce 0

tar zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local/

vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_91
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin:$PATH

source /etc/profile

tar zxvf apache-tomcat-8.5.16.tar.gz

mv /opt/apache-tomcat-8.5.16/ /usr/local/tomcat

/usr/local/tomcat/bin/shutdown.sh 
/usr/local/tomcat/bin/startup.sh

netstat -ntap | grep 8080

3.动静分离配置
(1)Tomcat1 server 配置
mkdir /usr/local/tomcat/webapps/test
vim /usr/local/tomcat/webapps/test/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test1 page</title>   #指定为 test1 页面
</head>
<body>
<% out.println("动态页面 1,http://www.test1.com");%>
</body>

</html>

三、使用tomcat搭建博客

(一)安装mysql

安装好tomcat后安装mysql数据库,由于本地yum的mysql安装包版本比较老旧,所以不推荐直接使用yum安装,可以自己搭建一个yum仓库

而后再使用yum安装,需要注意安装包的名字不要输错:

1.修改mysql密码

在之前介绍LNAP的时候,就将讲解过如何修改密码,但是之前是编译安装,只是安装一些基础功能,一些安全环境与优化,没有yum做的全,比如初始密码,编译安装的时候初始密码为空,而yum安装是有初始密码的

可以使用grep过滤错误日志中的关键字进行查看

这个密码是随机生成的,有时候会有一些特殊字符,在使用该密码登录的时候,需要使用引号,将密码引起来

登录进去之后,可以修改密码,或者直接使用mysqladmin -u root -p password修改密码

但在修改密码前需要了解validate_password_policy 和 validate_password_length这两个参数

validate_password_policy: 这个参数用于指定密码验证策略的严格程度。其可选值包括0、1和2,默认值根据MySQL版本的不同可能会有所变化。值的含义如下:

0:只检查密码长度。
1(默认):检查密码长度以及字符种类(数字、小写字母、大写字母和特殊字符)。
2:最严格的策略,除了长度和字符种类外,还增加了其他复杂度要求,例如禁止使用常见密码。

validate_password_length 设置全局密码最小长度
2.建立数据库用户并授予权限

(二)建立博客

需要将博客系统的压缩包放在tomcat服务默认的站点目录下

此时就可以使用浏览器去访问博客系统了

输入创建的数据库、用户及密码

这个时候就可以进行编辑管理文章等一些列操作了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/724705.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

stl的基本知识学习

1.vector&#xff1a; 2.set&#xff1a; 3.map&#xff1a; 4.栈&#xff1a; 5.队列&#xff1a; 6. unordered_map与unordered_set: 7. 位运算&#xff1a; 8.cctype&#xff1a; 导图&#xff1a;

ARM中专用指令(异常向量表、异常源、异常返回等)

状态寄存器传送指令 CPSR寄存器 状态寄存器传送指令:访问&#xff08;读写&#xff09;CPSR寄存器 读CPSR MRS R1, CPSR R1 CPSR 写CPSR MSR CPSR, #0x10 0x10为User模式&#xff0c;且开启IRQ和FRQ CPSR 0x10 在USER模式下不能随意修改CPSR&#xff0c;因为USER模式…

VMvare17安装centos8安装宝塔面板 教程

阿里镜像站&#xff1a;https://mirrors.aliyun.com/centos centos-8-isos-x86_64安装包下载_开源镜像站-阿里云 https://mirrors.aliyun.com/centos/8/isos/x86_64/CentOS-8.5.2111-x86_64-dvd1.iso 将上面的链接复制到迅雷进行高速下载 vmvare安装配置教程安装教程 CentOS…

动态规划(算法竞赛、蓝桥杯)--线性DP股票买卖含冷冻期

1、B站视频链接&#xff1a;E24 线性DP 股票买卖含冷冻期_哔哩哔哩_bilibili #include <bits/stdc.h> using namespace std; const int N100010; int w[N],f[N][3];int main(){int n;cin>>n;for(int i1;i<n;i)cin>>w[i];f[0][1]-1e7;f[0][0]-1e7;f[0][2]…

Django学习记录08——图表及文件上传案例

1.图表Echarts的应用 Apache ECharts 1.1 使用方法 引用echarts.js即可到官方文档中查询使用 1.2 常用图标的使用 图表展示页面的部署&#xff08;主要展示折线图、柱状图、饼图&#xff09; {% block content %}<div class"container"><div class&qu…

Docker安装MySQL镜像实战分享

今天我们对Docker安装MySQL镜像进行实战分享&#xff0c;以更深入的了解容器的使用场景。我们在云付服务器Ubuntu环境上已经安装好了Docker&#xff0c;接下来我们开始安装mysql5.7版本&#xff0c;安装mysql有两种思路&#xff0c;直接拉取mysql镜像和自己做mysql镜像&#xf…

对猫毛过敏还想养猫怎么办?除毛好的宠物空气净化器品牌推荐

许多朋友喜欢猫咪&#xff0c;但与猫咪相处一段时间后&#xff0c;他们可能会出现鼻塞、打喷嚏和眼泪不断的情况。让我们来科普一下如何让那些容易过敏的家人与猫咪更好地相处吧。为什么会过敏呢&#xff1f;因为猫咪的唾液中含有一种叫做Fel d1的蛋白质&#xff0c;通过舔毛散…

GEE 依照范围裁剪 下载Sentinel-2数据

0. GEE介绍 Google Earth Engine&#xff08;GEE&#xff09; 是由Google开发的一种云端平台&#xff0c;旨在提供强大的地理空间数据处理和分析工具。GEE集成了大量的遥感影像数据和地理空间数据集&#xff0c;以及高性能的计算资源&#xff0c;使用户能够在云端高效地进行大规…

GDB调试入门笔记

文章目录 What&#xff1f;WhyHow安装GDB安装命令查看是否安装成功调试简单的程序预备一个程序调试 使用breakinfolistnextprintstep一些小技巧在gdb前shell日志功能watch point| catch point 调试core调试一个运行的程序 What&#xff1f; GDB是什么&#xff1f; 全称GNU sym…

1、MQ_介绍、优缺点、类型等

MQ介绍 1. MQ概述 MQ&#xff08;Message Queue&#xff09;&#xff1a;消息队列&#xff0c;是基础数据结构中FIFO&#xff08;first in first out&#xff09;的一种数据结构。一般用来解决流量削峰、应用解耦、异步处理等问题&#xff0c;实现高性能&#xff0c;高可用&a…

鸿蒙实战开发:数据交互【RPC连接】

概述 本示例展示了同一设备中前后台的数据交互&#xff0c;用户前台选择相应的商品与数目&#xff0c;后台计算出结果&#xff0c;回传给前台展示。 样例展示 基础信息 RPC连接 介绍 本示例使用[ohos.rpc]相关接口&#xff0c;实现了一个前台选择商品和数目&#xff0c;后台…

【大数据】-- 创建 Paimon 外部表

如今&#xff0c;在数据湖三剑客&#xff08;delta lake、hudi、iceberg&#xff09;之上&#xff0c;又新出一派&#xff1a; apache paimon。我们恰好在工作中遇到&#xff0c;以下介绍在 dataworks 上&#xff0c;使用 maxcompute odps sql 创建 apache paimon 外部表的一些…

Claude3深夜震撼发布!模型特点分析,附使用教程

Claude3深夜震撼发布&#xff01;模型特点分析&#xff0c;附使用教程 引言 最新发布的Claude3引起了广泛关注&#xff0c;这次发布一举推出了三个不同类型的模型&#xff0c;分别是Claude 3 Haiku、Claude 3 Sonnet和Claude 3 Opus。每个模型都具有独特的特点和能力&#xff…

深色系可视化界面看腻了,来点浅色系?安排,20页来了。

只要不放在大屏上展示&#xff0c;贝格前端工场还是非常推崇浅色系的可视化界面&#xff0c;把它作为配色的首选 。浅色系可视化界面具有以下几个优势&#xff1a; 清晰明了 浅色系界面通常使用明亮的颜色&#xff0c;如白色、浅灰色等&#xff0c;使界面元素更加清晰可见。这…

Python 开发图形界面程序

用 Python 语言开发图形界面的程序&#xff0c;有2种选择&#xff1a; Tkinter 基于Tk的Python库&#xff0c;这是Python官方采用的标准库&#xff0c;优点是作为Python标准库、稳定、发布程序较小&#xff0c;缺点是控件相对较少。 PySide2/PySide6 基于Qt 的Python库&#x…

机器学习-面经(part7、无监督学习)

机器学习面经系列的其他部分如下所示&#xff1a; 机器学习-面经&#xff08;part1&#xff09; 机器学习-面经(part2)-交叉验证、超参数优化、评价指标等内容 机器学习-面经(part3)-正则化、特征工程面试问题与解答合集机器学习-面经(part4)-决策树共5000字的面试问题与解答…

【ArcGIS超级工具】基于ArcPy的矢量数据批量自动化入库工具

最近&#xff0c;有很多做规划的朋友私信我&#xff0c;想让我帮忙开发一款ArcGIS自动化脚本工具&#xff0c;实现点、线、面的自动化入库操作&#xff0c;帮他们在平时的内业数据处理工作中减少机械式重复性的工作&#xff0c;提高工作效率。为此&#xff0c;我详细了解了下目…

这本书太好了!150页就能让你上手大模型应用开发

如果问个问题&#xff1a;有哪些产品曾经创造了伟大的奇迹&#xff1f;ChatGPT 应该会当之无愧入选。仅仅发布 5 天&#xff0c;ChatGPT 就吸引了 100 万用户——当然&#xff0c;数据不是关键&#xff0c;关键是其背后的技术开启了新的 AI 狂潮&#xff0c;成为技术变革的点火…

数据结构与算法学习【算法思想之二分法基础】

文章目录 数据结构与算法学习【算法思想之二分查找基础】本文学习目标或巩固的知识点 最基础的二分查找&#x1f7e2;通过题目可知题解结果验证 数据结构与算法学习【算法思想之二分查找基础】 本文学习目标或巩固的知识点 学习二分法类题目 巩固基础的二分法 提前说明&#…

Jmeter之Ramp-up Period(in seconds)

1、Ramp-up Period概念 &#xff08;in seconds&#xff09;–并发用户启动周期&#xff0c;告知JMeter 要在多长时间内启动全部Vuser用户。 2、为什么需要有“ramp-up period”&#xff0c;立即启动所有的并发用户数不是更好&#xff1f; 对于绝大多数的网址或应用&#xf…