Tomcat实现java博客项目、状态页及常见配置介绍

目录

一、自建博客

1. 项目背景

2. 操作示例

二、状态页 

1. 概述

2. server status 信息状态页

3. manager app 项目管理状态页

4. host manger 虚拟主机管理状态页 

三、常见配置

1. 端口8005/tcp安全配置管理

2. tomcat端口号

3. 虚拟主机设置

4. Context配置


一、自建博客

1. 项目背景

在当今互联网时代,博客已经成为人们分享知识、观点和经验的重要平台。Java作为一种广泛应用于企业级应用开发的编程语言,具有强大的生态系统和丰富的工具库,因此使用Java构建自己的博客平台是一个常见的选择。

2. 操作示例

① 自建数据库yum仓库

[root@localhost ~]# vim /etc/yum.repos.d/mysql.repo
[mysql57-community]
name=MySQL 5.7 community server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/
enabled=1    #该仓库是启用状态,可以被 Yum 使用来获取软件包和元数据信息
gpgcheck=0   #不校验

② yum安装mysql

[root@localhost ~]# yum install -y mysql-community-server

③ 启动数据库,修改密码策略,修改密码

[root@localhost ~]# systemctl start mysqld
[root@localhost ~]# ss -natp | grep mysql
LISTEN     0      80          :::3306                    :::*                   users:(("mysqld",pid=2996,fd=21))
[root@localhost ~]# mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
[root@localhost ~]# grep password /var/log/mysqld.log 
2024-03-03T12:53:22.236160Z 1 [Note] A temporary password is generated for root@localhost: C?Cb!T8yVuho
2024-03-03T12:59:23.653530Z 2 [Note] Access denied for user 'root'@'localhost' (using password: NO)
[root@localhost ~]# mysql -uroot -p
Enter password:                                 #复制C?Cb!T8yVuho
mysql> set global validate_password_policy=0;   #复杂性没有要求
Query OK, 0 rows affected (0.01 sec)

mysql> set global validate_password_length=1;   #长度没有要求
Query OK, 0 rows affected (0.00 sec)

mysql> alter user root@'localhost' identified by 'abc123';  #修改密码
Query OK, 0 rows affected (0.00 sec)
修改密码也可以:
mysqladmin  -uroot  -p'C?Cb!T8yVuho'  password '新密码'

④ 创建数据库

[root@localhost ~]# mysql -u root -p'abc123'
mysql> grant all on blog.* to 'bloguser'@'%' identified by 'abc123';
mysql> grant all on blog.* to 'bloguser'@'localhost' identified by 'abc123';
mysql> flush privileges;

 ⑤ 准备项目包

[root@localhost ~]# cd /usr/local/tomcat/webapps/
[root@localhost webapps]# systemctl start tomcat.service
[root@localhost webapps]# ls
docs  examples  host-manager  jpress-v3.2.1  jpress-v3.2.1.war  manager  ROOT  test
[root@localhost webapps]# ln -s jpress-v3.2.1 jpress

⑥ 访问站点目录注册登录

二、状态页 

1. 概述

Tomcat状态页是一个Web页面,它提供了有关Tomcat运行状态和性能的信息。通过查看状态页,你可以了解Tomcat的线程池使用情况、JVM内存使用情况、当前正在运行的应用程序等信息。默认的管理页面被禁用,启用方法如下:

2. server status 信息状态页

① 默认情况下状态页是无法查看的

② 配置文件添加角色密码

[root@localhost ~]# cd /usr/local/tomcat/conf/
[root@localhost conf]# ls
Catalina         catalina.properties  jaspic-providers.xml  logging.properties  tomcat-users.xml  web.xml
catalina.policy  context.xml          jaspic-providers.xsd  server.xml          tomcat-users.xsd
[root@localhost conf]# vim tomcat-users.xml     #加下面两行,指定用户和密码
 44 <role rolename="manager-gui"/>
 45 <user username="tomcat" password="tomcat" roles="manager-gui"/>
[root@localhost conf]# systemctl restart tomcat.service
#修改全局配置文件需要重启服务生效

 ③ 本机登录查看

④ 远程查看状态页

[root@localhost ~]# cd /usr/local/tomcat/webapps/manager/META-INF/
[root@localhost META-INF]# ls
context.xml
[root@localhost META-INF]# vim context.xml
 20          allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|192\.\d+\.\d+\.\d+" />
#添加允许的192主机地址
[root@localhost META-INF]# systemctl restart tomcat.service

注意:一般不建议开启远程访问,可以指定允许特定地址。

3. manager app 项目管理状态页

① 管理现有web应用程序

② 可视化部署

4. host manger 虚拟主机管理状态页 

① 配置文件添加角色密码

[root@localhost ~]# cd /usr/local/tomcat/conf/
[root@localhost conf]# vim tomcat-users.xml
 45 <role rolename="admin-gui"/>
 46 <user username="tomcat" password="tomcat" roles="manager-gui,admin-gui"/>
[root@localhost conf]# systemctl restart tomcat.service

② 添加远程查看状态页主机地址

[root@localhost META-INF]# cd /usr/local/tomcat/webapps/host-manager/META-INF/
[root@localhost META-INF]# ls
context.xml
[root@localhost META-INF]# vim context.xml 
20          allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|192\.\d+\.\d+\.\d+" />
[root@localhost META-INF]# systemctl restart tomcat.service 

③ 访问状态页

三、常见配置

1. 端口8005/tcp安全配置管理

8005是Tomcat的管理端口,默认监听在127.0.0.1上。无需验证就可发送SHUTDOWN (大小写敏感)这个字符串,tomcat接收到后就会关闭此Server。

① 关闭8005端口

[root@localhost ~]# telnet 127.0.0.1 8005  #优雅的关闭
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
SHUTDOWN
Connection closed by foreign host.

此管理功能建议禁用,可将SHUTDOWN改为一串猜不出的字符串实现;或者将port设为-1等无效端口,将关闭此功能此行不能被注释(!表示注释),否则无法启动tomcat服务

② 示例:修改配置文件

[root@localhost ~]# vim /usr/local/tomcat/conf/server.xml
22 <Server port="8005" shutdown="xxxxxxxxxxxx">
或者
22 <Server port="-1" shutdown="SHUTDOWN">

2. tomcat端口号

8080: 默认接收 http 请求的端口

8005: 安全端口,可以关闭tomcat

8009: apache 和 tomcat 联动 AJP 协议

3. 虚拟主机设置

可能有时候多个项目需要运行,肯定不可能是一台服务器上运行多个 Tomcat 服务,这样会消耗太多的系统资源。此时,就需要使用到Tomcat虚拟主机。

现在新增两个域名希望通过这两个域名访问到不同的项目内容:

① 创建虚拟主机相关目录

[root@localhost ~]# mkdir /data/web{1,2,3}/ROOT/ -p #默认页面在ROOT目录下
[root@localhost ~]# echo web1 > /data/web1/ROOT/index.html
[root@localhost ~]# echo web2 > /data/web2/ROOT/index.html
[root@localhost ~]# echo web3 > /data/web3/ROOT/index.html
[root@localhost ~]# chown -R tomcat.tomcat /data/

② 修改全局配置文件

[root@localhost ~]# vim /usr/local/tomcat/conf/server.xml
165       <Host name="www.a.com"  appBase="/data/web1"
166             unpackWARs="true" autoDeploy="true">
167       </Host>
168       <Host name="www.b.com"  appBase="/data/web2"
169             unpackWARs="true" autoDeploy="true">
170       </Host>
171       <Host name="www.c.com"  appBase="/data/web3"
172             unpackWARs="true" autoDeploy="true">
173       </Host>
#找到host主机项,注意根目录中一定要有ROOT这是默认的主目录
#注意默认的结束</HOST>这段要在默认结束的后面加上
[root@localhost ~]# systemctl restart tomcat.service

 ③ 客户端添加域名解析

[root@localhost ~]# vim /etc/hosts
192.168.190.102 www.a.com www.b.com www.c.com

④ 客户端访问对应域名

[root@localhost ~]# curl www.a.com:8080
web1
[root@localhost ~]# curl www.b.com:8080
web2
[root@localhost ~]# curl www.c.com:8080
web3

4. Context配置

Context是Tomcat中用于配置Web应用程序的组件。每个Web应用程序都必须在一个Context中进行配置。Context元素用于指定Web应用程序的上下文路径、Web应用程序的基本目录、类加载器、Session管理器等等。在Context中,你可以配置Web应用程序的各种行为,例如安全性、会话管理、JNDI 等等。

Context作用:

  • 路径映射:将url映射至指定路径,而非使用appBase下的物理目录,实现虚拟目录功能
  • 应用独立配置,例如单独配置应用日志、单独配置应用访问控制

 格式:

#映射指定路径
<Context path="/test" docBase="/data/test" reloadable="true" />
#映射站点的根目录
<Context path="/" docBase="/data/website" reloadable="true" />
#还可以添加日志等独立的配置
<Context path="/test" docBase="/data/test" reloadable="true" >
  <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_test_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Context>

说明:

  • path:指的是访问的URL路径,如果path与appBase下面的子目录同名,context的docBase路径优先更高
  • docBase:可以是磁盘文件的绝对路径,也可以是相对路径(相对于Host的appBase)
  • reloadable:true表示如果WEB-INF/classes或META-INF/lib目录下.class文件有改动,就会将WEB应用重新加载。生产环境中,建议使用false来禁用。

示例: 

① 添加web文件

[root@localhost ~]# cd /data
[root@localhost data]# mkdir test
[root@localhost data]# echo test > test/index.html

② 修改配置文件

[root@localhost ~]# vim /usr/local/tomcat/conf/server.xml
165       <Host name="www.a.com"  appBase="/data/web1"
166             unpackWARs="true" autoDeploy="true">
167             <Context path="/test" docBase="/data/test" reloadable="false" />
168       </Host>
#如果访问www.a.com/test/那么就替换成"/data/test
[root@localhost ~]# systemctl restart tomcat.service

③ 客户端访问

[root@localhost ~]# curl www.a.com:8080/test/
test

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024年第一届CS2major,新胶囊即将发行,需要提前做哪些布局

2024年第一届CS2major&#xff0c;将会在3月17日哥本哈根开始。 所以&#xff1a; 1、新的胶囊大概率会在3月10日左右发布。 2、网传战队挂坠&#xff0c;不知道是否会出现&#xff1f;&#xff08;原本出现过战队布章包&#xff0c;由于销量太差&#xff0c;第二届就取消了…

【Qt】Qwidget的常见属性

目录 一、Qwidget核心属性 二、enable属性 三、geometry属性 四、 WindowFrame的影响 五、windowTitle属性 六、windowIcon属性 七、qrc文件管理资源 八、windowOpacity属性 九、cursor属性 十、font属性 十一、toolTip属性 十二、focusPolicy属性 十三、styleShe…

Mysql面试总结

基础 1. 数据库的三范式是什么&#xff1f; 第一范式&#xff1a;强调的是列的原子性&#xff0c;即数据库表的每一列都是不可分割的原子数据项。第二范式&#xff1a;要求实体的属性完全依赖于主关键字。所谓完全 依赖是指不能存在仅依赖主关键字一部分的属性。第三范式&…

redis09 集群(cluster)

思维草图 为什么要使用集群 单台redis内存容量的限制单台redis并发写量太大有性能瓶颈 redis集群认识 redis集群是对redis的水平扩容&#xff0c;即启动N个redis节点&#xff0c;将整个数据分布存储在这个N个节点中&#xff0c;每个节点存储总数据的1/N。 如下图&#xff1…

LVS负载均衡集群+NAT部署

一. LVS集群相关知识 1. 集群和分布式 系统性能扩展方式&#xff1a; Scale UP&#xff1a;垂直扩展&#xff0c;向上扩展,增强&#xff0c;性能更强的计算机运行同样的服务 升级单机的硬件设备 Scale Out&#xff1a;水平扩展&#xff0c;向外扩展,增加设备&#xff0c;并行…

光影交织:汽车穿越隧道的视觉盛宴

在繁忙的城市中&#xff0c;隧道成为了连接两端的重要通道。而对于汽车来说&#xff0c;穿越隧道不仅是一次简单的空间转移&#xff0c;更是一场融合了视觉、技术与安全的独特体验。 当汽车缓缓驶入隧道&#xff0c;外界的光线逐渐减弱&#xff0c;隧道内部的光线开始发挥作用。…

c++中多种类型sort()排序的用法(数组、结构体、pair、vector)

c中多种类型sort排序的用法 一、对数组排序1、默认排序2、自定义排序 二、对结构体进行排序三、对pair进行排序1、默认排序2、自定义排序 四、对vector进行排序1、默认排序2、去重排序3、自定义排序 一、对数组排序 1、默认排序 默认从小到大进行排序 #include <bits/std…

如何解决幻兽帕鲁/Palworld服务器联机游戏时的丢包问题?

如何解决幻兽帕鲁/Palworld服务器联机游戏时的丢包问题&#xff1f; 等待服务器维护&#xff1a;首先&#xff0c;确保网络连接稳定&#xff0c;然后查看游戏官方或社区论坛&#xff0c;了解是否有服务器维护的消息。这是解决丢包问题的一种直接且有效的方法。 更新显卡驱动&a…

讲讲地理人,可能没有想过的就业方向!建议收藏

先说下大家比较熟悉的就业去向&#xff0c;也是绝大多是人会优先考虑并规划的就业方向。 1、考编制&#xff0c;去初、高中做地理老师。这是师范类高校或女生主要的就业方向&#xff0c;一般都是重点高中&#xff0c;待遇、社会地位都还不错。 2、去大专院校或本科院校做老师、…

解决uni-app中使用webview键盘弹起遮挡input输入框问题

这个平平无奇的回答&#xff0c;可能是全网最靠谱的解决方案。 这里我用的是vue3 setup .vue文件的方式 <view> <web-view :fullscreen"false" :webview-styles"{top: statusBarHeight40,height:height,progress: {color: green,height:1px } }"…

Claude 3 模型发布,压力来到OpenAI这边了~

Anthropic 发布了 Claude 3 系列&#xff0c;包含了三款模型 各具特色&#xff0c;旨在为用户提供更智能、更快速、更高效的选择&#xff0c;可以说是是迄今为止最快、最强大的人工模型&#xff01; Anthropic 一度是 OpenAI 最强力的竞争对手&#xff01; 随着 Claude3 的发…

基于Springboot的高校实习信息发布网站的设计与实现(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的高校实习信息发布网站的设计与实现&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xf…

2023 2024年全国职业院校技能大赛中职组网络建设与运维赛项服务器Linux部分教程解析

欢迎合作 需要资料请私 Rocky 9 包含各种常考服务(包括新题型KVM等)

类与对象(二)--类的六个默认成员函数超详细讲解

目录 1.类的默认六个成员函数✒️ 2.构造函数 2.1构造函数的概念✒️ 2.2构造函数的特性✒️ 3.析构函数 3.1析构函数的概念✒️ 3.2析构函数的特征✒️ 4.拷贝构造函数 4.1拷贝构造函数的概念✒️ 4.2拷贝构造函数的特征✒️ 4.3思考❓ 4.4深拷贝和浅拷贝⭐️…

【[STM32]标准库-自定义BootLoader】

[STM32]标准库-自定义BootLoader BootloaderBootloader的实现BOOTloader工程APP工程 Bootloader bootloader其实就是一段启动程序&#xff0c;它在芯片启动的时候最先被执行&#xff0c;可以用来做一些硬件的初始化或者用作固件热更新&#xff0c;当初始化完成之后跳转到对应的…

CDN是什么?CDN能为我们做什么?

CDN 概念 CDN&#xff0c;全称为 Content Delivery Network&#xff0c;意为内容分发网络&#xff0c;是一种通过在全球各地部署服务器节点来加速内容传输的网络架构。 传统上&#xff0c;当用户访问一个网站或应用时&#xff0c;请求会直接发送到托管网站的服务器。但是&…

[前端][死循环]问题发现[easyui]

文章目录 问题描述问题细节 解决思路综合分析 解决办法 问题描述 页面点击按钮跳转弹窗页面回显出数据 此弹窗页面中有年份&#xff0c;类型等&#xff0c;当选中年份/类型会重新触发回显方法(onSelect 中调用方法)&#xff0c;回显对应年份/类型得数据 问题细节 最开始调试…

linux小记(1)

基本概念&#xff1a;不依靠扩展名来区分文件类型 好处&#xff1a;除了文本文件其他所有windows文件都无法在Linux下运行&#xff0c;包括病毒木马。 坏处&#xff1a;所有的软件都需要对linux单独开发 习惯用后缀来区分文件&#xff0c;方便管理。 -压缩包&#xff1a;*.…

Springboot配置MySQL数据库

Springboot配置MySQL数据库 一、创建springboot项目&#xff0c;并添加如下依赖 <dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope> </dependency>二、在applica…

从事测绘地信,你需要这些插件、软件、小工具、图源...

特别声明&#xff0c;本篇是来自公众号GIS前沿的资源&#xff0c;看着比较好&#xff0c;特别给大家推荐。加粗样式 今天&#xff0c;我们又来汇总了一些工作中实用的插件、小工具、数据等等&#xff0c;小助手又来帮你提高工作效率了****。 因为小助手每年都会总结一次&…
最新文章