Tomcat常见配置(基础功能、虚拟主机、搭建博客)

目录

一、Tomcat基础功能

1、自动解压war包

2、Tomcat工具界面

2.1 Server Status (服务器状态)

2.1.1 本地登录状态页

2.1.2 远程登录状态页

2.2 Manager App (管理应用程序)

2.3 Host Manager (主机管理器)

3、Context 配置

二、配置虚拟主机

三、搭建 JPress 博客

1、Tomcat操作

2、mysql操作

3、浏览器访问安装


一、Tomcat基础功能

1、自动解压war包

Tomcat所用到的打包格式

.warWebApp打包,类zip格式文件,通常包括一个应用的所有资源,比如 jsp、html、配置文件等
.jarEJB类文件的打包压缩类zip格式文件,包括很多的class文件, 网景公司发明
.rar资源适配器类打包文件,目前已不常用
.ear企业级WebApp打包,目前已不常用

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

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

操作: 

(1)切换到需要打包的目录,然后新建两个网页文件并写入内容

[root@localhost ~]#mkdir /mnt/test
[root@localhost ~]#cd /mnt/test
[root@localhost app1.2]#vim test.html
<h1> test </h1>

[root@localhost app1.2]#vim test.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<! DOCTYPE html>
<html>
<head>
        <meta charset="utf-8">
        <title>welcome</title>
</head>
<body>

 (2)打包成 war 包,并拷贝到网页根目录,之后不必手动解压,会自动解压

[root@localhost mnt]#jar cvf /mnt/app1.2.war *
[root@localhost mnt]#cp app1.2.war /usr/local/tomcat/webapps/
[root@localhost mnt]#ll /usr/local/tomcat/webapps/

(3)客户端浏览器测试访问

客户端浏览器:
http://172.16.12.10:8080/test/test.html
http://172.16.12.10:8080/test/test.jsp

注:

如果需要下线的话,就得同时删除 test 和 test.war 包,如果只删除 test ,那么会重启Tomcat服务会再次生成

2、Tomcat工具界面

2.1 Server Status (服务器状态)

这个页面提供了对部署在Tomcat服务器上的应用程序的管理功能,包括启动、停止、重新加载应用程序,查看应用程序的会话和JVM信息等

 可以通过浏览器访问来进行查看

但点击“Server Status”,却发现被拒绝访问

只有tomcat服务器本机访问 127.0.0.1:8080,再点击“Server Status”,输入用户名和密码后,才能看到状态页,这是由于tomcat默认的配置,只允许本机访问127.0.0.1:8080/manager/statu

2.1.1 本地登录状态页

相关指令详解:

#这些为注释的信息。它定义了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" 两个角色,因此拥有这两个角色合并后的所有权限。

现在配置tomcat本机查看状态页的用户名和密码

[root@localhost tomcat]#pwd
/usr/local/tomcat
[root@localhost tomcat]#vim conf/tomcat-users.xml
<role rolename="manager-gui"/>
<user username="tomcat" password="123" roles="manager-gui"/>

拥有用户名和密码后,tomcat服务器本地可登录查看状态页 

2.1.2 远程登录状态页

现在想要使用远端登录状态页,还需要去修改manager/META-INF/context.xml文件,去允许远端的IP地址能够访问

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

 客户端测试:

注:

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

2.2 Manager App (管理应用程序)

这个界面提供了对部署在Tomcat服务器上的应用程序的管理功能。您可以在这里部署新的应用程序、重新加载已部署的应用程序、启动或停止应用程序、删除应用,以及查看应用程序的会话信息

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

  • 部署应用:上传WAR文件到Tomcat服务器,并部署为新的Web应用程序
  • 重新加载应用:无需停止整个服务器或卸载再部署,即可更新已部署应用的内容
  • 启动和停止应用:控制单个Web应用的启动与停止状态
  • 删除应用:从Tomcat服务器中移除已经部署的Web应用程序
  • 查看应用列表和状态:列出所有部署在Tomcat服务器上的Web应用程序及其当前运行状态(如是否正在运行、部署路径等信息)

2.3 Host Manager (主机管理器)

这个界面允许您管理Tomcat服务器上的虚拟主机。您可以在这里添加、删除和管理虚拟主机,以及设置虚拟主机的属性和配置

允许远程登录主机管理器:

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

现在想要使用远端登录状态页,仍需要去修改host-manager/META-INF/context.xml文件,去允许远端的IP地址能够访问

客户端测试:

3、Context 配置

位于tomcat/conf/context.xml

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来禁用

二、配置虚拟主机

[root@localhost tomcat]#pwd
/usr/local/tomcat
[root@localhost tomcat]#vim conf/server.xml
      </Host>
        <Host name="www.a.com"  appBase="/mnt/a"
             unpackWARs="true" autoDeploy="true">
      </Host>

        <Host name="www.b.com"  appBase="/mnt/b"
             unpackWARs="true" autoDeploy="true">
      </Host>

        <Host name="www.c.com"  appBase="/mnt/c"
             unpackWARs="true" autoDeploy="true">
      </Host>
[root@localhost tomcat]#systemctl restart tomcat.service

[root@localhost ~]#mkdir -p /mnt/{a..c}/ROOT
[root@localhost ~]#echo "welcome to www.a.com" > /mnt/a//ROOT/index.html
[root@localhost ~]#echo "welcome to www.b.com" > /mnt/b//ROOT/index.html
[root@localhost ~]#echo "welcome to www.c.com" > /mnt/c//ROOT/index.html

客户端测试:

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

三、搭建 JPress 博客

1、Tomcat操作

(1)首先需要安装Tomcat,这里参考https://blog.csdn.net/m0_71815887/article/details/136382688?spm=1001.2014.3001.5502

(2)事先准备JPress包,并拷贝到规定Tomcat应用程序目录

[root@localhost ~]#cd /opt
[root@localhost opt]#cp jpress-v3.2.1.war /usr/local/tomcat/webapps/
[root@localhost webapps]#ln -s jpress-v3.2.1 jpress

2、mysql操作

(1)安装mysql数据库并启动

首先系统yum仓库的版本不够新,需要重新替换yum仓库,并安装mysql

[root@localhost ~]#cat >/etc/yum.repos.d/mysql.repo <<EOF
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/
enabled=1
gpgcheck=0
EOF

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

(3) 修改数据库密码

 yum安装的mysql是有初始密码的,现在需要修改这个初始密码

[root@localhost ~]#mysql -uroot -p

#使用grep命令,过滤出错误日志中的初始密码
[root@localhost ~]#grep password /var/log/mysqld.log

[root@localhost ~]#mysql -uroot -p"XkVKYU_08ikS"
set global validate_password_policy=0;
set global validate_password_length=1;
#修改密码策略
alter user root@'localhost' identified by 'abc123';
#重新设定密码

注:

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

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

validate_password_length:设置全局密码最小长度

(4)建立数据库用户并授予权限

[root@localhost webapps]#mysql -uroot -p"abc123"
CREATE DATABASE blog;
GRANT all ON blog.* TO 'bloguser'@'%' IDENTIFIED BY 'admin123';
GRANT all ON blog.* TO 'bloguser'@'localhost' IDENTIFIED BY 'admin123';
flush privileges;

3、浏览器访问安装

浏览器访问:
http://172.16.12.10:8080/jpress/install

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

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

相关文章

就业班 2401--2.29 Linux Day8--存储管理2(LVM)+swap+磁盘阵列raid

&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;小伙伴们一定要看到最后&#xff0c;有彩蛋呢^--^ 一、存储管理Ⅱ 逻辑卷LVM &#xff08;Logical Volume Manager&#xff08;逻辑卷管理&#xff09;的简写&#xff09; LVM管理 lvm概念&#xf…

网络编程作业day4

广播模型&#xff1a; 发送端&#xff1a; #include <myhead.h> int main(int argc, const char *argv[]) {//创建套接字int sfdsocket(AF_INET,SOCK_DGRAM,0);if(sfd-1){perror("socket error");return -1;}//设置套接字允许广播属性int broadcast1;if(sets…

MySQL 用户账号迁移

文章目录 前言1. 工具安装1.1 下载安装包1.2 编译安装 2. 用户迁移后记 前言 有一个典型的使用场景&#xff0c;就是 RDS 下云大多数都是通过 DTS 进行数据传输的&#xff0c;用户是不会同步到自建数据库的。需要运维人员在自建数据库重新创建用户&#xff0c;如果用户数量很多…

springboot,druid动态数据源切换

关键字&#xff1a;springboot&#xff0c;druid数据库连接池&#xff0c;两个数据源&#xff08;可以切换成多个&#xff09;&#xff0c;事务管理 关于druid简介传送门&#xff1a;https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98 具体分为四…

LeetCode148.排序链表

题目 给你链表的头结点 head &#xff0c;请将其按 升序 排列并返回 排序后的链表 。 示例 输入&#xff1a;head [4,2,1,3] 输出&#xff1a;[1,2,3,4] 输入&#xff1a;head [-1,5,3,4,0] 输出&#xff1a;[-1,0,3,4,5] 输入&#xff1a;head [] 输出&#xff1a;[] 思路…

STM32CubeIDE基础学习-新建STM32CubeIDE基础工程

STM32CubeIDE基础学习-新建STM32CubeIDE基础工程 前言 有开发过程序的朋友都清楚&#xff0c;后面开发是不需要再新建工程的&#xff0c;一般都是在初学时或者有特殊需要的时候才需要新建项目工程的。 后面开发都是可以在这种已有的工程上添加相关功能就行&#xff0c;只要前…

sylar高性能服务器-日志(P43-P48)内容记录

文章目录 P43&#xff1a;Hook01一、HOOK定义接口函数指针获取接口原始地址 二、测试 P44-P48&#xff1a;Hook02-06一、hook实现基础二、class FdCtx成员变量构造函数initsetTimeoutgetTimeout 三、class FdManager成员变量构造函数get&#xff08;获取/创建文件句柄类&#x…

华工的各类型PPT模板

华工的各类型PPT模板&#xff0c;包括原创的PPT及改良内容的PPT&#xff0c;适合科研/比赛/组会汇报等 前言各种毕业答辩夏令营答辩复试答辩奖学金答辩比赛/项目答辩组会汇报 前言 设计不易&#xff0c;排版不易&#xff0c;内容编排不易 待更新项目1 原创声明&#xff1a;不经…

17 easy 290. 单词规律

//给定一种规律 pattern 和一个字符串 s &#xff0c;判断 s 是否遵循相同的规律。 // // 这里的 遵循 指完全匹配&#xff0c;例如&#xff0c; pattern 里的每个字母和字符串 s 中的每个非空单词之间存在着双向连接的对应规律。 // // // // 示例1: // // //输入: patte…

Kubernetes 学习总结(46)—— Pod 不停重启问题分析与解决

我们在做性能测试的时候&#xff0c;往往会发现我们的pod服务&#xff0c;频繁重启&#xff0c;通过kubectl get pods 命令&#xff0c;我们来逐步定位问题。 现象:running的pod&#xff0c;短时间内重启次数太多。 定位问题方法:查看pod日志 kubectl get event …

攻防世界 php_rce

已经给了开发框架了用的是ThinkPHP V5 所以我们直接搜这个框架爆出来的漏洞就好了 可以得到这里面有个远程rce payload url/index.php?s/index/\think\app/invokefunction&functioncall_user_func_array&vars[0]system&vars[1][]dir 然后我们就可以命令执行了…

【大厂AI课学习笔记NO.63】模型的维护

说是模型的维护&#xff0c;其实这堂课都是在讲“在工业环境中开发和部署机器学习模型的流程”。 上图来自于我的笔记思维脑图&#xff0c;已经上传&#xff0c;要链接的访问的主页查看资源。 一路走来&#xff0c;我们学习了数据管理、模型学习、模型验证、模型部署等重要的步…

Elixir 依赖 (deps) 调试的小技巧

最近使用 Elixir 有点多, 经常需要观察一些依赖 (Deps) 的实现, 比如想加个日志打印点 IO.inspect 啥的观察下某个变量&#xff0c;才能更好的理解某个 Elixir 的依赖。这里介绍下一些调试的方式: 这里以 yeshan333/ex_integration_coveralls 为例子. 我们先 clone 项目到本地…

每日五道java面试题之mysql数据库篇(四)

目录&#xff1a; 第一题&#xff1a; Hash索引和B树所有有什么区别或者说优劣呢?第二题&#xff1a;数据库为什么使用B树而不是B树&#xff1f;第三题&#xff1a;B树在满足聚簇索引和覆盖索引的时候不需要回表查询数据&#xff1f;第四题&#xff1a;什么是聚簇索引&#xf…

案例介绍:汽车维修系统的信息抽取技术与数据治理应用(开源)

一、引言 在当今汽车产业的快速发展中&#xff0c;软件已经成为提升车辆性能、安全性和用户体验的关键因素。从车载操作系统到智能驾驶辅助系统&#xff0c;软件技术的进步正在重塑我们对汽车的传统认知。我有幸参与了一个创新项目&#xff0c;该项目专注于开发和集成先进的汽…

每日一题 — 盛水最多的容器

11. 盛最多水的容器 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 因为体积是长度乘高&#xff0c;所以运用双指针&#xff0c;一个在最左&#xff0c;一个在最右&#xff0c;每次都记录体积 V &#xff0c;然后比较左边的长度和右边的长度&#xff0c;左边的长度…

浅析扩散模型与图像生成【应用篇】(五)——SDEdit

5. SDEdit: Guided Image Synthesis and Editing With Stochastic Differential Equations 该文提出一种基于SDE扩散模型的引导图像生成和编辑方法。通过使用者在原图上给出一些引导&#xff0c;比如在图像上涂鸦或者增加一个图块&#xff0c;甚至可以不给定原图&#xff0c;直…

图像剪辑|Linux|ImageMagick的初步使用--素描,毛玻璃等特效

前言&#xff1a; ImageMagick在图像剪辑领域的地位基本等同于FFmpeg&#xff0c;和FFmpeg基本一样&#xff0c;在Linux下使用此工具的原因是该工具可以使用shell脚本批量剪辑&#xff0c;在Windows下就会比较麻烦一些了 那么&#xff0c;本文主要是记录一下ImageMagick的一些…

简单聊聊http协议头参数之Content-Type和http状态码 415错误

大家好&#xff0c;我是G探险者。 今天聊一下http的状态码&#xff0c;415错误&#xff0c;因为项目里面使用了httpclient进行了远程服务调用&#xff0c;调用发送时&#xff0c;会有一个http header的参数设置。由于参数设置的问题经常会出现错误&#xff0c;导致调用失败&am…

基于51单片机微波炉简易控制仿真设计数码管显示proteus仿真+程序+设计报告+讲解视频)

基于51单片机微波炉简易控制仿真设计数码管显示 1. 主要功能&#xff1a;2. 讲解视频&#xff1a;3. 仿真4. 程序代码延时函数定时器初始化定时器中断产生PWM显示函数 5. 设计报告6. 设计资料内容清单&&下载链接资料下载链接&#xff1a; 基于51单片机微波炉简易控制仿…