玩转Tomcat:从安装到部署

文章目录

  • 一、什么是 Tomcat
  • 二、Tomcat 的安装与使用
    • 2.1 下载安装
    • 2.2 目录结构
    • 2.3 启动 Tomcat
  • 三、部署程序到 Tomcat
    • 3.1 Windows环境
    • 3.2 Linux环境


一、什么是 Tomcat

一看到 Tomcat,我们一般会想到什么?没错,就是他,童年的回忆:

但实际上,在 Java 中的 Tomcat 却是它:

Tomcat 是一个开源的 Java Servlet 容器,由 Apache 软件基金会开发和维护。Tomcat 全称是 Apache Tomcat,它被广泛用于部署 Java Web 应用程序

简单来说,Tomcat 是一个 Web 服务器,用于处理 Java Servlet 的请求和响应。而 Servlet 是 Java 编写服务端的程序,用于处理客户端(通常是浏览器)发送的请求,并向客户端返回响应。

Tomcat 提供了一个运行环境,让开发者能够将自己编写的 Servlet 程序部署到服务器上,从而使 Web 应用程序能够在 Tomcat 服务器上运行。同时,Tomcat 支持 HTTP 协议,可以通过浏览器访问部署在 Tomcat 上的 Web 应用程序

更重要的一点就是,Tomcat 是免费并且开源的,因此受到了广泛的欢迎和使用。它在 Java Web 开发中扮演着重要的角色,为开发者提供了一个稳定可靠的运行环境。

二、Tomcat 的安装与使用

2.1 下载安装

Tomcat 官网下载地址:https://tomcat.apache.org/download-80.cgi。

这里我选择安装的版本是 Tomcat 8:

选择.zip类型的压缩包进行下载,然后解压放在一个全英文的文件路径下即可。(没错,安装就是这么简单!)

另外值得一提的是,Tomcat 的安装在 Windows 和 Linux 系统下的安装方法基本一样,即下载压缩包,然后解压即可。

2.2 目录结构

解压完成后,可以看到 Tomcat 的目录结构如下:

对 Tomcat 目录结构的简要说明:

  1. bin:包含可执行脚本和命令,用于启动和停止 Tomcat 服务器。其中最常见的文件是 startup.sh(或 startup.bat,Windows 下)用于启动 Tomcat,以及shutdown.sh(或 shutdown,Windows 下)用于停止 Tomcat。
  2. conf:包含了 Tomcat 的配置文件,这些配置文件用于配置 Tomcat 服务器的各种参数和属性。其中最重要的是 server.xml,它包含了 Tomcat 主要的配置,如端口号、连机器配置、虚拟主机等。
  3. lib:包含了 Tomcat 服务器运行时需要的 Java 类库。这些类库包括 Tomcat 自身的类库,以及用于支持 Servlet 和 JSP(JavaServer Pages)的相关类库。
  4. logs:包含了 Tomcat 服务器的日志文件,如访问日志、错误日志等。
  5. webapps:用于部署 Web 应用程序的目录。将 Java Web 程序打包成 WAR 文件(Web 应用归档文件),然后将 WAR 文件放在这个目录下,Tomcat 会自动将其部署并运行。
  6. work:包含了 Tomcat 在运行时生成的临时工作文件。这些文件用于储存 JSP 页面的编译结果以及其他临时数据。
  7. temp:包含了 Tomcat 的临时文件。它主要用于存储上传文件时的临时数据,以及一些其他的临时文件。

lib目录结构:

webapps目录结构:

2.3 启动 Tomcat

在 Linux 环境中,执行 bin 目录下的 startup.sh 启动 Tomcat:

可以使用命令 netstat -anp | grep 端口号查看 Tomcat 是否成功启动:

关于 Tomcat 使用的端口号说明:

在Tomcat服务器中,8080端口和8005端口是两个常见的默认端口,其用途分别如下:

  1. 8080端口:默认情况下,Tomcat 使用8080端口作为 HTTP 连接器(HTTP Connector)的默认端口。HTTP 连接器负责处理 HTTP 请求,允许用户通过 HTTP 协议访问部署在 Tomcat 上的 Web 应用程序。例如,当在浏览器中输入"http://127.0.0.1:8080/"(Tomcat 已在本地运行),就会看到 Tomcat 的默认欢迎页面或已部署的Web应用程序。
  2. 8005端口:8005端口是 Tomcat 服务器的 “Shutdown Port” (关闭端口)。它用于接收来自管理工具或者脚本的关闭命令,以优雅的方式来关闭 Tomcat 服务器。通过发送一个关闭命令到8005端口,Tomcat 将停止接受新的 HTTP 请求,并在当前的请求处理完成后正常关闭,确保未完成的请求能够顺利处理完毕

在 Windows 系统下,可以通过双击 bin 目录下的 startup.bat 文件来启动 Tomcat 服务器:

当命令行出现的最后一条消息如下,表明启动 Tomcat 成功:

出现乱码的原因:

  • Tomcat 默认按照 UTF-8 的编码方式处理中文,而 Windows 的 cmd 默认是 GBK 编码,所有会出现乱码的情况。
  • 如果使用 Linux 或者 IDEA 中的终端来启动 Tomcat,则没有乱码问题。
  • 此处,Windows上出现的乱码不建议处理,因为涉及到修改cmd编码规则的问题。(大概率,Tomcat 也不值得在 Windows 上面运行)

另外最重要的一件事情是,如果想要运行 Tomcat 服务器,首先保证系统上已经安装好了 JDK,并正确的配置了环境变量。

三、部署程序到 Tomcat

这里以我的一个博客系统为例,分别将其打包部署到 Windows 和 Linux 环境下的 Tomcat 服务器。

3.1 Windows环境

将博客系统打包成 WAR 形式的文件:

然后将其复制到 Tomcat 的 webapps 目录下,然后启动 Tomcat 服务器:

此时,Tomcat 会自动将 WAR 包文件进行解压,此时就部署完成了,就可以通过浏览器来访问该程序:

3.2 Linux环境

将程序部署在 Linux 环境中的操作和在 Windows 一模一样,只需要将刚才哪个 WAR 包拷贝到 Tomcat 的 webapps 目录下即可:

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

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

相关文章

安全基础 --- html标签 + 编码

html标签 &#xff08;1&#xff09;detail标签 <details>标签用来折叠内容&#xff0c;浏览器会折叠显示该标签的内容。 <1> 含义&#xff1a; <details> 这是一段解释文本。 </details> 用户点击这段文本&#xff0c;折叠的文本就会展开&#x…

MySQL_2.6【高级查询2】详细讲解

目录 一、多表查询 1、笛卡尔积现象 2、等值连接查询 3、自连接查询 4、内连接查询 5、外连接 二、子查询 1、单列子查询 2、单行子查询 3、多行子查询 4、多列子查询 5、关联子查询【了解】 6、子查询的综合应用 加油&#xff01;&#xff01;&#xff01; 一、多…

Sklearn学习-iris数据集学习

Sklearn学习-逻辑回归&#xff08;iris数据集&#xff09; 使用load_iris加载数据集&#xff0c;查看包含的keys查看数据的列名&#xff0c;分类目标的名称获取data和target&#xff0c;并打印各自的shape拆分训练集和测试集使用逻辑回归训练。在测试集上计算准确率在测试集上实…

【云原生】Docker容器资源限制(CPU/内存/磁盘)

目录 ​编辑 1.限制容器对内存的使用 2.限制容器对CPU的使用 3.block IO权重 4.实现容器的底层技术 1.cgroup 1.查看容器的ID 2.在文件中查找 2.namespace 1.Mount 2.UTS 3.IPC 4.PID 5.Network 6.User 1.限制容器对内存的使用 ⼀个 docker host 上会运⾏若⼲容…

React几种避免子组件无效刷新的方案

您好&#xff0c;如果喜欢我的文章&#xff0c;可以关注我的公众号「量子前端」&#xff0c;将不定期关注推送前端好文~ 前言 一个很常见的场景&#xff0c;React中父组件和子组件在一起&#xff0c;子组件不依赖于父组件任何数据&#xff0c;但是会一起发生变化。 在探究原…

平面设计软件都有哪些?推荐这7款

优秀的平面广告设计可以给产品带来良好的效益&#xff0c;正确传播品牌的价值和色调&#xff0c;而功能强大、使用方便的平面广告设计软件是创造优秀平面广告设计的关键。本文推荐7款备受好评的平面广告设计软件&#xff0c;易于使用&#xff01; 1.即时设计 即时设计是国内一…

如何通过企业工商信息初步判断企业是否靠谱?

银行、投资机构等对企业进行融资、授信、合作时&#xff0c;需要如何评估企业的可靠性。企业工商信息作为企业的基础信息&#xff0c;是初步判断企业是否靠谱的重要依据之一&#xff0c;通过对企业工商信息的综合分析&#xff0c;我们可以了解企业的经营状况、财务实力、法律风…

Bug记录: CUDA error_ device-side assert triggered

Bug记录&#xff1a; CUDA error: device-side assert triggered 在接触AIGC算法的过程中偶尔会遇到这样的bug&#xff1a;RuntimeError: CUDA error: device-side assert triggered return torch._C._cuda_synchronize() RuntimeError: CUDA error: device-side assert trig…

python在不同坐标系中绘制曲线

文章目录 平面直角坐标系空间直角坐标系极坐标地理坐标 平面直角坐标系 回顾我们的数据可视化的学习历程&#xff0c;其实始于笛卡尔坐标系的创建&#xff0c;并由此建立了数与形的对应关系。在笛卡尔坐标系中随便点上一点&#xff0c;这个点天生具备坐标&#xff0c;从而与数…

CloudDriver一款将各种网盘云盘挂在到电脑本地变成本地磁盘的工具 教程

平时我们的电脑可能由于大量的文件资料之类的导致存储空间可能不够&#xff0c;所以我们可以选择将网盘我们的本地磁盘用来存放东西。 CloudDrive 是一款可以将 115、阿里云盘、天翼云盘、沃家云盘、WebDAV 挂载到电脑中&#xff0c;成为本地硬盘的工具&#xff0c;支持 Window…

sql-从一个或多个表中向一个表中插入 多行

INSERT还可以将SELECT语句查询的结果插入到表中&#xff0c;此时不需要把每一条记录的值一个一个输入&#xff0c;只需 要使用一条INSERT语句和一条SELECT语句组成的组合语句即可快速地从一个或多个表中向一个表中插入 多行。 基本语法格式如下&#xff1a; INSERT INTO 目标表…

短视频平台视频怎么去掉水印?

短视频怎么去水印&#xff0c;困扰很多人&#xff0c;例如&#xff0c;有些logo水印&#xff0c;动态水印等等&#xff0c;分享操作经验&#xff1a; 抖音作为中国最受欢迎的社交娱乐应用程序之一&#xff0c;已成为许多人日常生活中不可或缺的一部分。在使用抖音过程中&#x…

数据结构--基础知识

数据结构是什么&#xff1f; 数据结构是计算机科学中研究数据组织、存储和管理的方法和原则。它涉及存储和操作数据的方式&#xff0c;以便能够高效地使用和访问数据。 相关内容 基本组成 数组&#xff08;Array&#xff09;&#xff1a;数组是一种线性数据结构&#xff0c;…

K8S暴露pod内多个端口

K8S暴露pod内多个端口 一、背景 公司统一用的某个底包跑jar服务&#xff0c;只暴露了8080端口 二、需求 由于有些服务在启动jar服务后&#xff0c;会启动多个端口&#xff0c;除了8080端口&#xff0c;还有别的端口需要暴露&#xff0c;我这里就还需要暴露9999端口。 注&a…

matlab进阶:求解在约束条件下的多元目标函数最值(fmincon函数详解)

&#x1f305;*&#x1f539;** φ(゜▽゜*)♪ **&#x1f539;*&#x1f305; 欢迎来到馒头侠的博客&#xff0c;该类目主要讲数学建模的知识&#xff0c;大家一起学习&#xff0c;联系最后的横幅&#xff01; 喜欢的朋友可以关注下&#xff0c;私信下次更新不迷路&#xff0…

Vue 基础语法(二)

一、背景&#xff1a; 我们对于基础语法&#xff0c;说白了就是实现元素赋值&#xff0c;循环&#xff0c;判断&#xff0c;以及事件响应即可&#xff01; 二、v-bind 我们已经成功创建了第一个 Vue 应用&#xff01;看起来这跟渲染一个字符串模板非常类似&#xff0c;但是 V…

vue中在使用keep-alive时,会出现在页面跳转后el-tooltip或el-dropdown不消失的问题以及解决方法

一、 问题复现 跳转前&#xff1a; 跳转后&#xff1a; 二、分析 由于在vue中使用了keep-alive&#xff0c;页面在切换时&#xff0c;上一个页面的实例被缓存了&#xff0c;跳转后并没有销毁&#xff0c;所以才会残留 tooltip或dropdown&#xff0c;所以有以下解决思路&am…

[运维|系统] Centos设置本地编码

以下是在CentOS上更改系统编码的一般步骤&#xff1a; 使用locale命令查看当前的系统编码&#xff1a; locale如果需要更改系统编码&#xff0c;可以使用类似下面的命令来生成相应的locale设置&#xff08;以UTF-8为例&#xff09;&#xff1a; sudo localedef -i en_US -f …

这就是ChatGPT,走进我们的生活!

这就是ChatGPT&#xff0c;走进我们的生活&#xff01; 早在年初&#xff0c;合作导师将我叫过去&#xff0c;让我了解学习一下ChatGPT&#xff0c;看能不能对我们的生活有所帮助。一直使用着国内镜像&#xff0c;五月份我才注册了OpenAI的账户。如今&#xff0c;打开购物商城购…

docker小记-容器中启动映射端口号但访问不到

在docker容器中是每一个容器隔离分开的。 每个容器视为一个独立的环境&#xff0c;当在外部环境访问不到的时候就是说明端口号还是没映射到。 之前使用的映射说白了就是将docker中的独立的ip地址端口号映射到主机的ip地址和端口号。这一步没有成功。 docker inspect 容器名 …