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.xml20          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.xml45 <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.mzph.cn/news/732174.shtml

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

相关文章

R语言自定义颜色

一、创建颜色梯度&#xff08;渐变色&#xff09; 在绘热图时&#xff0c;需要将数值映射到不同的颜色上&#xff0c;这时就需要一系列的颜色梯度colorRampPalette 函数支持自定义的创建一系列的颜色梯度。 代码示例&#xff1a; library(RColorBrewer)x <- colorRampPal…

【kubernetes】关于k8s集群的pod控制器

目录 一、deployment控制器 二、statefulset控制器 1、验证数据可以持久化 2、验证删除后名称不会改变&#xff0c;数据还会一直存在 3、验证扩容的创建过程是升序串行执行&#xff0c;并且自动创建pv 4、验证滚动更新的时候也是升序执行&#xff0c;数据持久化还在 5、验…

【排序算法】深入理解归并排序算法:从原理到实现

目录 1. 引言 2. 归并排序算法原理 3. 归并排序的时间复杂度分析 4. 归并排序的应用场景 5. 归并排序的优缺点分析 5.1 优点&#xff1a; 5.2 缺点&#xff1a; 6. Java、JavaScript 和 Python 实现归并排序算法 6.1 Java 实现&#xff1a; 6.2 JavaScript 实现&…

A5自媒体wordpress主题模板

一个简洁的wordpress个人博客主题&#xff0c;适合做个人博客&#xff0c;SEO优化效果挺不错的。 https://www.wpniu.com/themes/204.html

什么是ETL?什么是ELT?怎么区分它们使用场景

在大数据处理的领域中&#xff0c;ETL和ELT是两个经常被数据工程师提到的工具&#xff0c;而有很多数据工程师对这两种工具的区别和使用和定位有一定的模糊&#xff0c;其实它们分别代表了两种不同的数据集成方法。尽管这两种方法看起来都是从源系统提取数据&#xff0c;转换数…

2024AI在医疗领域中的辅助趋势与现有进展

2024 年 AI 辅助研发趋势随着人工智能技术的持续发展与突破&#xff0c;2024年AI辅助研发正成为科技界和工业界瞩目的焦点。从医药研发到汽车设计&#xff0c;从软件开发到材料科学&#xff0c;AI正逐渐渗透到研发的各个环节&#xff0c;变革着传统的研发模式。在这一背景下&am…

rabbitmq 基本总结

rabbitmq 的基本概念 vhost、broker、producer、 consumer、 exchange、 queue、 routing key rabbitmq 常用的队列类型&#xff0c;工作队列&#xff08;简单队列&#xff09;,pub/sub, routing key&#xff0c; topic 模式 <dependency><groupId>com.rabbitmq&l…

启动项目报502怎么处理呢?

您好&#xff0c;我是码农飞哥&#xff08;wei158556&#xff09;&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f4aa;&#x1f3fb; 1. Python基础专栏&#xff0c;基础知识一网打尽&#xff0c;9.9元买不了吃亏&#xff0c;买不了上当。 Python从入门到精…

蓝桥杯练习系统(算法训练)ALGO-982 最小距离

资源限制 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 最小距离 问题描述 数轴上有n个数字&#xff0c;求最近的两个数&#xff0c;即min(abs(x-y)) 输入格式 第一行包含一个整数n。   …

Redis的Lua脚本

Redis提供了Lua脚本功能&#xff0c;在一个脚本中编写多条Redis命令&#xff0c;确保多条redis命令执行时的原子性。&#xff08;让判断线程标识和释放锁原子执行&#xff09; 1.下载lua插件 2.创建lua文件 3.调用lua脚本 public void unlock() {//调用lua脚本原子性的判断线…

CSS中元素的层叠顺序

层叠顺序&#xff0c;英文称作 stacking order&#xff0c;表示元素发生层叠时有着特定的垂直显示顺序。下面是盒模型的层叠规则&#xff1a; 对于上图&#xff0c;由上到下分别是&#xff1a; &#xff08;1&#xff09;背景和边框&#xff1a;建立当前层叠上下文元素的背景…

【Qt】四种绘图设备详细使用

绘图设备有4个: **绘图设备是指继承QPainterDevice的子类————**QPixmap QImage QPicture QBitmap(黑白图片) QBitmap——父类QPixmapQPixmap图片类&#xff0c;主要用来显示&#xff0c;它针对于显示器显示做了特殊优化&#xff0c;依赖于平台的&#xff0c;只能在主线程…

Linux系统——web服务拓展练习

目录 一、实验环境搭建 1. Centos 7-5——Client 2. Centos 7-1——网关服务器 3. Centos 7-2——Web1 4. Centos 7-3——Web2 5. Centos 7-4——Nginx 二、在Nginx服务器上搭建LNMP服务&#xff0c;并且能够对外提供Discuz论坛服务&#xff1b;在Web1、Web2服务器上搭建…

数据集下载汇总

国家数据网 https://data.stats.gov.cn/ 国家数据是国家统计局发布统计信息的网站&#xff0c;包含了我国经济、民生、农业、工业、运输、旅游、教育、科技、卫生等多个方面的数据&#xff0c;并且在月度、季度、年度都有覆盖&#xff0c;较为全面和权威&#xff0c;对于社会…

【数据库-黑马笔记】基础-函数和约束

本文参考b站黑马数据库视频,总结详细全面的笔记 ,可结合视频观看27~36集 MYSQL 的基础知识框架如下 目录 一、 函数 1、字符串函数 2、数值函数 3、日期函数 4、流程函数 5、小结: 二、约束 1、概述 2、 约束演示 3、外键约束 4、外键删除更新行为 5、小结: …

如何查看自己电脑显卡的内存

ctrlaltdelete 打开任务管理器&#xff0c;然后打开性能页面,你会看到一个GPU内存&#xff0c;这个是自己GPU的内存&#xff0c;也叫专用GPU内存&#xff0c;而那个共享GPU 内存是不够用的时候借用电脑的内存。 下面是专用GPU内存和共享GPU内存的具体区别 专用GPU内存和共享GPU…

HarmonyOS 数据持久化 关系型数据库之 增删改逻辑编写

好 上文 HarmonyOS 数据持久化 关系型数据库之 初始化操作 我们讲了 关系型数据库初始化 那么 本文 我们来编写 增删改 相关代码 打开我们的项目 打开到 我们之前写的这个 relationalClass 类 然后 我们在 initTaskDB 下面再定义一个函数 叫 addTask 的函数 用来执行添加逻辑 …

【论文笔记】Mamba: Linear-Time Sequence Modeling with Selective State Spaces

原文链接&#xff1a;https://arxiv.org/abs/2312.00752 1. 引言 基石模型&#xff08;FM&#xff09;的主干网络通常是序列模型&#xff0c;处理任意的输入序列。但现代FM主要基于Transformer这一序列模型&#xff0c;及其核心的注意力。但是&#xff0c;自注意力仅能在上下…

EVMProxyInspect:一款功能强大的多链EVM代理检测工具

关于EVMProxyInspect EVMProxyInspect是一款针对以太坊EVM代理的检测工具&#xff0c;该工具可以帮助广大研究人员在多链生态中检测EVM代理。 该工具能够展示类似etherscan这样的工具是如何检测代理的&#xff0c;并且允许我们自行进行代理检测。需要注意的是&#xff0c;该工…

Python:在 Ubuntu 上安装 pip的方法

目录 1、检测是否已安装pip 2、更新软件源 3、安装 4、检测是否安装成功 pip和pip3都是Python包管理工具&#xff0c;用于安装和管理Python包。 在Ubuntu上&#xff0c;pip和pip3是分别针对Python2和Python3版本的pip工具。 pip3作用&#xff1a;自动下载安装Python的库文…