Tomcat的安装和虚拟主机和context配置

news2025/1/17 6:01:16

一、 安装Tomcat

注意:安装 tomcat 前必须先部署JDK

1. 安装JDK

  • 方法1:Oracle JDK 的二进制文件安装
[root@node5 ~]#  mkdir /data
[root@node5 ~]#  cd /data/
[root@node5 data]#  rz

[root@node5 data]#  ls
jdk-8u291-linux-x64.tar.gz
[root@node5 data]#  tar xf jdk-8u291-linux-x64.tar.gz
[root@node5 data]#  ln -s /data/jdk1.8.0_291  /usr/local/jdk
[root@node5 data]#  cd /usr/local/jdk/
[root@node5 jdk]#  ls
bin  COPYRIGHT  include  javafx-src.zip  jmc.txt  jre  legal  lib  LICENSE  man  README.html  release  src.zip  THIRDPARTYLICENSEREADME-JAVAFX.txt  THIRDPARTYLICENSEREADME.txt

[root@node5 jdk]#  vim /etc/profile.d/jdk.sh
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib/:$JRE_HOME/lib/
[root@node5 jdk]#  exit
[root@node5 ~]#  java -version
java version "1.8.0_291"
Java(TM) SE Runtime Environment (build 1.8.0_291-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.291-b10, mixed mode)
  • 方法2:Oracle JDK 的rpm安装
[root@node5 ~]#  cd /data
[root@node5 data]#  rz

[root@node5 data]#  ls
apache-tomcat-9.0.16.tar.gz  jdk-8u201-linux-x64.rpm
[root@node5 data]#  rpm -ivh jdk-8u201-linux-x64.rpm

[root@node5 data]#  vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH
[root@node5 data]#  . /etc/profile

[root@node5 data]#  java -version
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)

2. 安装Tomcat

[root@node5 data]#  ls
apache-tomcat-9.0.16.tar.gz  jdk-8u201-linux-x64.rpm
[root@node5 data]#  tar xf apache-tomcat-9.0.16.tar.gz
[root@node5 data]#  ls
apache-tomcat-9.0.16  apache-tomcat-9.0.16.tar.gz  jdk-8u201-linux-x64.rpm

[root@node5 data]#  ln -s /data/apache-tomcat-9.0.16 /usr/local/tomcat
[root@node5 data]#  cd /usr/local/tomcat/
[root@node5 tomcat]#  ls
bin  BUILDING.txt  conf  CONTRIBUTING.md  lib  LICENSE  logs  NOTICE  README.md  RELEASE-NOTES  RUNNING.txt  temp  webapps  work

[root@node5 tomcat]#  cd bin
[root@node5 bin]#  ls
bootstrap.jar  catalina-tasks.xml  commons-daemon.jar            configtest.sh  digest.sh     setclasspath.bat  shutdown.sh  tomcat-juli.jar       tool-wrapper.sh
catalina.bat   ciphers.bat         commons-daemon-native.tar.gz  daemon.sh      makebase.bat  setclasspath.sh   startup.bat  tomcat-native.tar.gz  version.bat
catalina.sh    ciphers.sh          configtest.bat                digest.bat     makebase.sh   shutdown.bat      startup.sh   tool-wrapper.bat      version.sh


方法1:执行自带脚本,不推荐!

[root@node5 bin]#  ./catalina.sh  start
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/java/jdk1.8.0_201-amd64
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.

[root@node5 bin]#  ss -natp |grep 8080
LISTEN     0      100         :::8080                    :::*                   users:(("java",pid=15931,fd=54))

方法2:

[root@node5 bin]#  useradd -s /sbin/nologin tomcat    //新建用户
[root@node5 bin]#  cd /usr/local/
[root@node5 local]#  chown tomcat:tomcat tomcat/ -R   //修改属主和属组

[root@node5 bin]#  cat > /usr/lib/systemd/system/tomcat.service <<EOF
> [Unit]
> Description=Tomcat
> After=syslog.target network.target
>
> [Service]
> Type=forking
> ExecStart=/usr/local/tomcat/bin/startup.sh
> ExecStop=/usr/local/tomcat/bin/shutdown.sh
> RestartSec=3
> PrivateTmp=true
> User=tomcat
> Group=tomcat
>
> [Install]
> WantedBy=multi-user.target
>
> EOF
[root@node5 local]#  systemctl daemon-reload
[root@node5 local]#  systemctl start tomcat
[root@node5 local]#  ss -natp |grep 8080
LISTEN     0      100         :::8080                    :::*                   users:(("java",pid=16475,fd=54))

二、 配置文件及核心组件

1. 配置文件

1.1 安装目录下文件

目录名字

功能

bin

存放启动和关闭 Tomcat 的脚本文件,比较常用的是 catalina.sh、startup.sh、shutdown.sh 三个文件

conf

存放 Tomcat 服务器的各种配置文件,比较常用的是 server.xml、context.xml、tomcat-users.xml、web.xml 四个文件。

lib

存放 Tomcat 服务器的 jar 包,一般不作任何改动,除非连接第三方服务,比如 redis,那就需要添加相对应的 jar 包

logs

存放 Tomcat 日志 catalina.out

temp

存放 Tomcat 运行时产生的文件

webapps

存放项目资源的目录

work

Tomcat 工作目录,一般清除 Tomcat 缓存的时候会使用到(升级版本时注意要删除里面的缓存)

  • bin

  • conf

  • lib

  • logs

  • temp

  • webapps

  • work

1.2 conf 子目录文件

文件名

说明

server.xml

主配置文件 全局生效

web.xml

每个webapp只有“部署"后才能被访问,它的部署方式通常由web.xml进行定义,其存放位置为WEB-INF/目录中;此文件为所有的webapps提供默认部署相关的配置,每个web应用也可以使用专用配置文件,来覆盖全局文件

context.xml

用于定义所有web应用均需加载的Context配置,此文件为所有的webapps提供默认配置,每个web应用也可以使用自已专用的配置,它通常由专用的配置文件context.xml来定义,其存放位置为WEB-INF/目录中,覆盖全局的文件

tomcat-users.xml

用户认证的账号和密码文件

catalina.policy

当使用security选项启动omcat时,用于为tomcat设置安全策略

catalina.properties

Tomcat环境变量的配置,用于设定类加载器路径,以及一些与JVM调优相关参数

logging.properties

Tomcat日志系统相关的配置,可以修改日志级别和日志路径等

注意:配置文件对于大小写敏感

2. 组件

2.1 组件分层和分类

  • 顶级组件
    • Server,代表整个Tomcat容器,一台主机可以启动多tomcat 实例 ,需要确保端口不要产生冲突
  • 服务类组件
    • Service,实现组织Engine和Connector,建立两者之间关联关系, service 里面只能包含一个Engine
  • 连接器组件
    • Connector,有HTTP(默认端口8080/tcp)、HTTPS(默认端口8443/tcp)、AJP(默认端口8009/tcp)协议的连接器,AJP(Apache Jserv protocol)是一种基于TCP的二进制通讯协议。
  • 容器类
    • Engine、Host(虚拟主机)、Context(上下文件,解决路径映射)都是容器类组件,可以嵌入其它组件,内部配置如何运行应用程序。
  • 内嵌类
    • 可以内嵌到其他组件内,valve、logger、realm、loader、manager等。以logger举例,在不同容器组件内分别定义。
  • 集群类组件
    • listener、cluster

2.2 核心组件

名称

说明

server

服务器,Tomcat运行的进程实例,一个Server中可以有多个service,但通常就一个

service

服务,用来组织Engine(引擎)和Connector(连接器,端口)的对应关系,一个service中只有一个Engine

connector

连接器,负责客户端的HTTP、HTTPS、AJP等协议连接。一个Connector只属于某一个Engine

Engine

即引擎,用来响应并处理用户请求。一个Engine上可以绑定多个Connector

Host

即虚拟主机,可以实现多虚拟主机,例如使用不同的主机头区分

Context

应用的上下文,配置特定url路径映射和目录的映射关系: url => directory

范例:多个组件关系 conf/server.xml

<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">    //此处建议将8005端口号修改为-1或0
   <Service name="Catalina">
     <Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"
               redirectPort="8443" />
       <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
          <Engine name="Catalina" defaultHost="localhost">
             <Host name="localhost"  appBase="webapps"unpackWARs="true" autoDeploy="true">
           <Context >
                <Context />
 </Host>
    </Engine>
  </Service>
</Server>

3. 磁盘文件和访问的url对应关系

                           等于访问
102.168.204.50:8080  ----------------> /usr/local/tomcat/webapps/ROOT/index.jsp
102.168.204.50:8080/blog  -----------> /usr/local/tomcat/webapps/blog/index.jsp

ROOT 和 blog 是同级项目文件
ROOT 是默认的项目,可以省略不写,其他的项目不可以省略

webapps 才是主站点
如果是访问的是ROOT下的文件,url可以省略ROOT,否则不行

4. 主页文件的优先级

  • index.html
  • index.htm
  • index.jsp
[root@localhost conf]# vim /usr/local/tomcat/conf/web.xml
//此文件末尾定义了优先级,可以在站点的目录下配置
<welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
   
项目特殊要求可以写在子配置文件中   
[root@localhost blog]#chown -R tomcat:tomcat  WEB-INF/   //修改权限

tomcat虚拟主机

#创建虚拟主机前,必须先创建相关目录,否则创建虚拟机不成功
mkdir /data/web{1,2,3}/ROOT/   -pv
echo  web1 > /data/web1/ROOT/index.html
echo  web2 > /data/web2/ROOT/index.html
echo  web3> /data/web3/ROOT/index.html
chown -R tomcat.tomcat /data/


#修改配置文件
vim /usr/local/tomcat/conf/server.xml 
#找到  host  主机项   ,注意  根目录中 一定要有  ROOT  这是默认 的主目录
#注意 默认的   结束    </HOST>  这段要在  默认结束的后面加上
<Host name="www.a.com"  appBase="/data/web1"
            unpackWARs="true" autoDeploy="true">
            </Host>

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

      <Host name="www.c.com"  appBase="/data/web3"
            unpackWARs="true" autoDeploy="true">
            </Host>

systemctl restart tomcat

Context配置

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>

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

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

相关文章

基于springboot+vue+uniapp的语言课学习系统小程序

开发语言&#xff1a;Java框架&#xff1a;springbootuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#…

数据恢复篇:计算机格式化后如何恢复照片

您想了解如何从已格式化的笔记本电脑或台式机中恢复已删除的照片吗&#xff1f;这篇文章解释了如何使用最佳格式照片恢复软件来做到这一点。格式化计算机后&#xff0c;您可以通过简单的步骤恢复已删除的图像。 将照片保存在笔记本电脑或 PC 硬盘上是很常见的。与相机存储卡和…

02-《石莲》

石 莲 石莲&#xff08;学名&#xff1a;Sinocrassula indica A.Berger&#xff09;&#xff0c;别名因地卡&#xff0c;为二年生草本植物&#xff0c;全株无毛&#xff0c;具须根。花茎高15-60厘米&#xff0c;直立&#xff0c;常被微乳头状突起。茎生叶互生&#xff0c;宽倒披…

“吃饭大学”!中国大学食堂排行TOP10(含西电)

同学们们&#xff0c;考研择校考虑的因素除了学术&#xff0c;地理位置等方面&#xff0c;你们还会考虑哪些因素呢&#xff1f;小研作为一个吃货&#xff0c;必定会考虑的一个因素当然是大学的食堂美食啊~ 那中国超级好吃的大学食堂在哪&#xff1f;一起来看看有没有你的目标院…

文华均线交叉多空买卖点-支撑压力自动画线-波浪AB画线指标公式

A1:MA(C,5); A2:MA(C,10); MA1:MA(A1,15); MA2:MA(A2,15); JC:CROSS(MA1,MA2); SC:CROSSDOWN(MA1,MA2); N:1; JC1:BARSLAST(JC)N; SC1:BARSLAST(SC)N; VERTLINE(SC,COLORRED),DOT; VERTLINE(JC,COLORGREEN),DOT; H1:VALUEWHEN(SC,HHV(H,JC1)),COLORRED;//当前死叉到…

(4.2)Sourcegraph(Chrome插件)——github实现源码阅读

一、下载 下载方式参考&#xff1a;如何安装 Chrome 插件&#xff1f;以 Show_Rank 为例 下载链接一&#xff1a;从Chrome应用商店直接搜索&#xff0c;https://chromewebstore.google.com/detail/sourcegraph/dgjhfomjieaadpoljlnidmbgkdffpack?utm_sourceext_app_menu 如…

“论单元测试方法及应用”写作框架,软考高级论文,系统架构设计师论文

论文真题 1、概要叙述你参与管理和开发的软件项目,以吸你所担的主要工作。 2、结给你参与管理和开发的软件项目&#xff0c;简要叙述单元测试中静态测试和动态测试方法的基本内容。 3、结给你惨与管理和研发的软件项目,体阐述在玩测试过程中,如何确定白盒测试的覆盖标准,及如…

【SQL】已解决:SQL错误(208):对象名‘STRING_SPLIT‘无效

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决&#xff1a;SQL错误&#xff08;208&#xff09;&#xff1a;对象名‘STRING_SPLIT‘无效 在使用SQL Server进行数据库操作时&#xff0c;遇到错误&#xff08;208&#xff…

详细配置SQL Server的链接服务器(图文操作Mysql数据库)

目录 前言1. MySQL ODBC 驱动2. 配置 SQL Server 链接服务器3. 彩蛋前言 此处配置以及安装没有什么理论知识 所以直奔主题,跟着以下步骤配置安装即可 需求:准备在10.197.0.110中链接外部的10.197.0.96的mysql数据源 已默认在10.197.0.96中安装了MySQL数据库并且知道其连接信…

隐私计算实训营第二期第12基于隐语的VisionTransformer框架

01 MPCViT&#xff1a;安全且高效的MPC友好型 Vision Transformer架构 总体框架&#xff1a; 首先分析了ViT产生较大延时的原因&#xff0c;思考能否去除这些操作。 然后&#xff0c;对比不同的注意力机制&#xff0c;发现它们中有的具有很好的效率&#xff0c;有的则具有很…

WebRtc实现1V1音视频通话

简介 WebRTC&#xff0c;名称源自网页实时通信&#xff08;Web Real-Time Communication&#xff09;的缩写&#xff0c;是一个支持网页浏览器进行实时语音通话或视频聊天的技术&#xff0c;是谷歌 2010 年以 6820 万美元收购 Global IP Solutions 公司而获得的一项技术。 WebR…

YOLO系列笔记(十八)—— YOLOv1和YOLOv2总结与对比

YOLOv1和的v2总结与对比 YOLOv1主要思想算法架构主干网络损失函数 训练过程网络预测主要成果优化方向 YOLOv2算法架构主干网络损失函数 相较之前的优化添加Batch Normalization引入锚框&#xff08;Anchor Boxes&#xff09;机制引入DarkNet-9多尺度输入训练 网络训练第一阶段&…

数据结构--队列(图文)

队列是一种特殊的线性表&#xff0c;其核心特点是先进先出。 概念及特点&#xff1a; 概念 队列是一种只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作的线性表。进行插入操作的一端被称为队尾&#xff08;Tail 或 Rear&#xff09;&#xff0c;进行删除…

使用ChatGLM3自带的网页客户端

【图书推荐】《ChatGLM3大模型本地化部署、应用开发与微调》-CSDN博客 通过简单的代码领略一下ChatGLM3大模型_chatglm3 history怎么写-CSDN博客 除了我们上面使用自定义的gradio组件完成网页客户端的搭建&#xff0c;智谱AI的ChatGLM3在创建之初就本着“方便用户&#xff0c…

小韩厂涨乌托邦公式源码

小韩厂涨&乌托邦&公式源码已经测试通过,可以发布云平台自行编辑 DRAWGBK(C>0, RGB(50,60,250),RGB(17,21,89),0,11,0); H1:=MAX(DYNAINFO(3),DYNAINFO(5)); L1:=MIN(DYNAINFO(3),DYNAINFO(6)); P1:=H1-L1; 阻力:=L1+P1*7/8,COLORGREEN; 支撑:=L1+P1*0.5/8,COLORRED;…

java学习 - 消息中间件简介 + RabbitMQ下载安装

消息与消息中间件 消息是指应用之间传输的数据消息中间件是一个提供高性能高可靠的消息传输交换的平台 消息传递的方式 点对点通讯 - P2P 基于队列实现队列使异步通讯成为可能 发布订阅模式 - Pub/Sub 有个节点&#xff0c;称为主题消息发布者将消息发布到这个节点上订阅者…

spring boot(学习笔记第十一课)

spring boot(学习笔记第十一课) Session共享&#xff0c;JPA实现自动RESTful 学习内容&#xff1a; Session共享JPA实现自动RESTful 1. Session共享 Session共享面临问题 spring boot默认将session保存在web server的内存里面&#xff0c;会产生什么问题呢。 如上图所示&#…

web全屏api,实现元素放大全屏,requestFullscreen,exitFullscreen

全屏api 主要方法 document.exitFullscreen(); 退出页面全屏状态&#xff0c;document是全局文档对象 dom.requestFullscreen(); 使dom进入全屏状态&#xff0c;异步&#xff0c;dom是一个dom元素 dom.onfullscreenchange&#xff08;&#xff09;; 全…

阿里云centos7.9 挂载数据盘到 www目录

一、让系统显示中文 参考&#xff1a;centos7 怎么让命令行显示中文&#xff08;英文-&#xff1e;中文&#xff09;_如何在命令行中显示中文-CSDN博客 1、输入命令&#xff1a;locale -a |grep "zh_CN" 可以看到已经存在了中文包 2、输入命令&#xff1a;sudo vi…

51单片机第21步_将TIM0用作两个8位定时器同时将TIM1用作波特率发生器

本章重点讲解将TIM0用作两个8位定时器&#xff0c;同时将TIM1用作波特率发生器。 当定时器T0在方式3时&#xff0c;T1不能产生中断&#xff0c;但可以正常工作在方式0、1、2下&#xff0c;大多数情况下&#xff0c;T1将用作串口的波特率发生器。 1、定时器0工作在模式3框图&a…