Tomcat基础及与Nginx实现动静分离,搭建高效稳定的个人博客系统

目录

引言

一、TOMCAT基础功能

(一)自动解压war包

(二)状态页

1.登录状态页

2.远程登录

(三)服务管理界面

(四)Host虚拟主机

1.设置虚拟主机

2.建立站点目录与文件

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

(一)配置nginx代理服务器

(二)建立访问数据文件

(三)使用客户机进行访问

三、使用tomcat搭建博客

(一)安装mysql

1.修改mysql密码

2.建立数据库用户并授予权限

(二)建立博客


引言

在互联网世界中,网站的性能优化和架构设计至关重要,特别是对于内容驱动型的个人博客而言,合理的资源分配和请求处理策略能够显著提升用户体验。其中,“动静分离”是一种常见的服务器部署策略,它将动态内容(如PHP、Java Servlet等生成的内容)和静态内容(如HTML、CSS、JavaScript、图片等文件)分由不同的服务器或服务进行处理,从而提高整体性能。本文将详细介绍如何使用Apache 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为主

例如,如果直接访问your_sever/,则它的默认路径为webapps/ROOT/idnex文件

如果指定访问目录的话,如data,那么它的访问路径为webapps/data/*

同在webapps目录下的两个目录下的访问资源文件内容不一样

(二)状态页

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

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

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

也可以直接输入/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文件

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

比如允许192.168.83段的地址去登录查看状态页,就在allow后面加上192.168.83.\d(点前面

的"\表示转义符)

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

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

(三)服务管理界面

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.建立站点目录与文件

使用客户端进行访问

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

准备五台服务器与一台客户机

客户机192.168.83.1
NGINX代理服务器192.168.83.50
NGINXweb服务器1192.168.83.30
NGINXweb服务器2192.168.83.40
TOMCAT应用服务器1192.168.83.60
TOMCAT应用服务器2192.168.83.100

(一)配置nginx代理服务器

1.首先定义好地址池

默认轮询权重为1:1

2.区分不同类型的文件进行代理

(二)建立访问数据文件

tomcat服务默认访问的界面为安装路径下的/webapps/ROOT/的index.jsp文件,为了区分,自定义一个index.jsp文件内容

(三)使用客户机进行访问

三、使用tomcat搭建博客

(一)安装mysql

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

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

yum -y install mysql-community-server

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/715753.shtml

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

相关文章

使用QEMU搭建U-Boot+LinuxKernel+busybox+NFS嵌入式开发环境

目录 0.课程大纲1.为什么要使用QEMU学习嵌入式QEMU简介使用QEMU可以做哪些事情?当前嵌入式行业现状如何适应这种变化使用QEMU学习嵌入式有哪些好处?驱动开发技能为什么要学习Linux 2.搭建嵌入式开发基本环境2.1.安装u-boot-tools2.2.安装交叉编译工具什么是ABI和EABI 3.QEMU安…

三、基准时钟、生成时钟、虚拟时钟的约束和意义

**前言&#xff1a;**前面从理论角度出发学习了时序分析的基本原理&#xff0c;本篇从设计的角度学习如何合理添加时钟约束。 文章目录 一、基准时钟&#xff08;base clock&#xff09;和生成时钟(generate clock)二、基准时钟的约束1.完成综合&#xff08;run implementatio…

linux的通信方案(SYSTEM V)

文章目录 共享内存(Share Memory)信号队列&#xff08;Message Queue&#xff09;信号量(semaphore) 进程间通信的核心理念&#xff1a;让不同的进程看见同一块资源 linux下的通信方案&#xff1a; SYSTEM V 共享内存(Share Memory) 特点&#xff1a;1.共享内存是进程见通信最…

排序(4)——堆排序

目录 堆排序&#xff08;回顾&#xff09; 基本思路 代码实现 向下调整排序 AdjustDown 建堆排序 时间复杂度 特性总结 堆排序&#xff08;回顾&#xff09; 重点回顾戳&#x1f449;堆排序 基本思路 堆排序(Heapsort)是指利用堆积树&#xff08;堆&#xff09;这种数…

鸿蒙系统开发适配注意事项

鸿蒙操作系统&#xff08;HarmonyOS&#xff09;的软件适配涉及到一些特定的注意事项&#xff0c;以确保应用程序在该操作系统上的正常运行和最佳性能。以下是适配鸿蒙软件时需要注意的一些关键问题&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的…

MySQL篇—执行计划介绍(第二篇,总共三篇)

☘️博主介绍☘️&#xff1a; ✨又是一天没白过&#xff0c;我是奈斯&#xff0c;DBA一名✨ ✌✌️擅长Oracle、MySQL、SQLserver、Linux&#xff0c;也在积极的扩展IT方向的其他知识面✌✌️ ❣️❣️❣️大佬们都喜欢静静的看文章&#xff0c;并且也会默默的点赞收藏加关注❣…

Python 编辑工具 Jupyter notebook

Jupyter notebook Jupyter Notebook是基于网页的用于交互计算的应用程序。其可被应用于全过程计算&#xff1a;开发、文档编写、运行代码和展示结果。——Jupyter Notebook官方介绍 官网&#xff1a;Project Jupyter | Home Jupyter Notebook 是一个开源的交互式计算环境&#…

网页版图像处理软件开发服务:助您项目在市场竞争中脱颖而出

在当今数字化时代&#xff0c;图像处理在各个行业中扮演着重要的角色&#xff0c;虎克专注于提供定制化的网页版图像处理软件开发服务&#xff0c;为您的项目保驾护航。 1.网页版图像处理软件的定制化需求 1.1行业特定功能 针对不同的业务需求&#xff0c;深入了解行业特点&…

springboot基于web的酒店客房管理系统论文

基于web的酒店客房管理系统 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了酒店客房管理系统的开发全过程。通过分析酒店客房管理系统管理的不足&#xff0c;创建了一个计算机管理酒店客房管理系统的方案。文…

springboot网站开发-idea开发环境下无法开启调试Debug模式

springboot网站开发-idea开发环境下无法开启调试Debug模式的解决办法。 近期在写后端代码的时候&#xff0c;发现&#xff0c;无法开启调试模式。网上查询了一下资料&#xff0c;发现需要做如下修改即可开启调试模式。 如图所示&#xff0c;把里面的选项&#xff0c;都放弃勾选…

SQLPro Studio:数据库管理的革命性工具 mac版

SQLPro Studio是一款强大的数据库管理和开发工具&#xff0c;它旨在提供高效、便捷和安全的数据库操作体验。无论是数据库管理员、开发人员还是数据分析师&#xff0c;SQLPro Studio都能满足他们在数据库管理、查询、设计和维护方面的需求。 SQLPro Studio mac版软件获取 首先…

B树系列(详解)

目录 一、B-树 二、B树 三、B*树 四、时间复杂度 五、Mysql与B树系列 一、B-树 首先再说B树的性质以及其他的之前&#xff0c;先要说一声&#xff0c;好多人都把这个树叫B减树&#xff0c;其实不是&#xff0c;他就叫B树&#xff0c;至于原因我觉的没必要再这个名字上纠结…

docker 转为docker-compose(composerize 命令)

可以使用Composerize将Docker命令转换为Docker Compose文件。 例如&#xff1a;将docker run命令转换为Docker Compose格式&#xff0c;只需用Composerize运行它&#xff0c;如下所示&#xff1a; composerize docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/…

【JavaSE】异常

异常概述 异常指的是程序在执行的过程中&#xff0c;出现的非正常情况&#xff0c;如果不处理最终会导致JVM的非正常停止。 在Java中&#xff0c;使用不同的类来表示不同的异常&#xff08;正所谓万物皆对象&#xff0c;因此异常也使用类来表示&#xff09;。一旦程序出现某种…

【HTML】HTML基础5(特殊字符)

目录 特殊字符的作用 常用的特殊字符 使用效果 特殊字符的作用 例如 当我在两个文字间打出空格时 <p>“银河护卫队”系列 在漫威电影宇宙中一直是异数般的存在&#xff0c;不仅因为影片主角是一群反英雄&#xff0c;<strong>与超级英雄相比显得格格不入<…

LeetCode 刷题 [C++] 第347题.前 K 个高频元素

题目描述 给你一个整数数组 nums 和一个整数 k &#xff0c;请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。 题目分析 据题意可知&#xff0c;我们需要先遍历整个数组&#xff0c;并统计每个数字出现的次数&#xff0c;保存在哈希表中&#xff1b;对元素…

synchrosized 的可重入特性、死锁、哲学家就餐问题以及解决死锁的方法等干货

文章目录 &#x1f490;synchrosized的可重入特性关于死锁&#xff1a;哲学家就餐问题&#x1f4a1;如何避免/解决死锁 &#x1f490;synchrosized的可重入特性 可重入特性&#xff1a;当一个线程针对一个对象同时加锁多次&#xff0c;不会构成死锁&#xff0c;这样的特性称为…

前端学习第一天-html基础

达标要求 网页的形成过程 常用的浏览器及常见的浏览器内核 web 标准三层组成 什么是HTML 熟练掌握HTML文档结构 熟练掌握HTML常用标签 1. 初识web前端 Web前端是创建Web页面或App等前端界面呈现给用户的过程。 Web前端开发是从网页制作演变而来&#xff0c;早期网站主…

sklearn.preprocessing.RobustScaler(解释和原理,分位数,四分位差)

提示&#xff1a;sklearn.preprocessing.RobustScaler&#xff08;解释和原理&#xff0c;分位数&#xff0c;四分位差&#xff09; 文章目录 [TOC](文章目录) 一、RobustScaler 是什么&#xff1f;二、代码1.代码2.输出结果 总结 提示&#xff1a;以下是本篇文章正文内容&…

ELK学习

ELK 一、ELK介绍 &#x1f604; “ELK”是三个开源项目的首字母缩写&#xff0c;这三个项目分别是&#xff1a;Elasticsearch、Logstash 和 Kibana。Elasticsearch 是一个搜索和分析引擎。Logstash 是服务器端数据处理管道&#xff0c;能够同时从多个来源采集数据&#xff0…