Web服务器-Tomcat

作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

我们上一大章介绍了Kubernetes的知识,本章节我们进入中间件的讲解,这里会包含很多不同的类型组件,中间件的第一个大类我这里定义的是Web服务器。由于目前使用最广泛的Web服务器是Nginx,所以我们这里的讲解主要以Nginx服务器为主。

我们前面介绍两个Web服务器:Nginx和Apache,今天我们来介绍另外一个Web服务器:Tomcat。

互联网早期的网站大多都是ASP或者PHP的,少部分比较注重安全的网站会选择jsp,而这个jsp就是运行在Tomcat里面。

以前的网站很多都是集中在一起的,并不区分前端还是和后端。通过网页url就知道是什么语言,但是随着技术的迭代和进步出现了前后端分离,这个时候从url里面已经看不出来网站才有的什么语言。尤其是移动互联网的崛起让我们更加感知不到后端情况。

Tomcat介绍

Tomcat是由Apache软件基金会下属的Jakarta项目开发的一个Servlet容器,它是实现Java Servlet和JavaServer Pages (JSP) 技术的一个开源软件。Tomcat服务器提供了可以运行Java Web应用程序的环境,它是一个轻量级、易于扩展的Web容器,

JDK安装

由于Tomcat是基于Java语言,所以我们需要先安装Java环境。这里有2个选:,一个是选择Oracle的官方JDK(比较麻烦的时候是需要注册才能下载);另外一个就是采用开源的Open-JDK(在大部分情况下,这2个是没区别的)。但是我也遇到过需要使用Oracle的JDK才能用的情况,我这里以最的简单的方式安装就选择Open-JDK。

bash 复制代码
#默认源有4个版本,可选,具体要根据应用程序需求来选择
#我这里就以java8来安装
yum -y install java-1.8.0-openjdk.x86_64

出现这样则安装成功。

java 复制代码
[root@localhost ~]# java -version
openjdk version "1.8.0_412"
OpenJDK Runtime Environment (build 1.8.0_412-b08)
OpenJDK 64-Bit Server VM (build 25.412-b08, mixed mode)

Tomcat安装

Tomcat的版本和JDK版本有关系的,我这里选了一个Tomcat9,为了加强理解,我这里选择使用二进制安装Tomcat。

bash 复制代码
wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.104/bin/apache-tomcat-9.0.104.tar.gz
tar xvf apache-tomcat-9.0.104.tar.gz 
cd apache-tomcat-9.0.104
./bin/startup.sh 

如果启动失败可以去查看日志./logs/catalina.out。常见的问题找不到JDK,尤其是当JDK是采用Oracle的官方JDK。

Tomcat使用

这里需要介绍WAR包和JAR包。WAR可以理解是前后端不分离的包,包含了应用程序,HTML,CSS等资源,他需要依赖Tomcat或者类似的Servlet容器(我见过jboss)中运行。而jar包则不依赖Web容器,只要有java环境就可以通过Java命令直接启动(也可以理解他里面自带了Tomcat)目前的Java主流框架java spring xxx 基本上都是采用jar包方式。

同一个应用程序既可以打包成war包,也可以打包成jar包,具体看业务需求。

这里我使用后面涉及到持续集成会用到一个软件Jenkins来测试Tomcat。

bash 复制代码
#该版本兼容tomcat9和jdk8 
wget https://get.jenkins.io/war-stable/2.7.4/jenkins.war

把这个文件放置到tomcat的webapps目录下,Tomcat会自动读取并解压。会产生如下日志。

less 复制代码
18-Apr-2025 00:12:42.191 INFO [Catalina-utility-2] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [/root/apache-tomcat-9.0.104/webapps/jenkins.war] has finished in [29] ms
18-Apr-2025 00:13:02.194 INFO [Catalina-utility-1] org.apache.catalina.startup.HostConfig.undeploy Undeploying context [/jenkins]
18-Apr-2025 00:13:02.196 INFO [Catalina-utility-1] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive [/root/apache-tomcat-9.0.104/webapps/jenkins.war]
18-Apr-2025 00:13:06.540 INFO [Catalina-utility-1] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
Jenkins home directory: /root/.jenkins found at: $user.home/.jenkins
18-Apr-2025 00:13:07.346 INFO [Catalina-utility-1] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [/root/apache-tomcat-9.0.104/webapps/jenkins.war] has finished in [5,150] ms
18-Apr-2025 00:13:07.735 INFO [pool-6-thread-2] jenkins.InitReactorRunner$1.onAttained Started initialization
18-Apr-2025 00:13:07.746 INFO [pool-6-thread-2] jenkins.InitReactorRunner$1.onAttained Listed all plugins
18-Apr-2025 00:13:09.319 INFO [pool-6-thread-2] jenkins.InitReactorRunner$1.onAttained Prepared all plugins
18-Apr-2025 00:13:09.331 INFO [pool-6-thread-2] jenkins.InitReactorRunner$1.onAttained Started all plugins
18-Apr-2025 00:13:09.375 INFO [pool-6-thread-1] jenkins.InitReactorRunner$1.onAttained Augmented all extensions
18-Apr-2025 00:13:11.416 INFO [pool-6-thread-1] jenkins.InitReactorRunner$1.onAttained Loaded all jobs
18-Apr-2025 00:13:11.468 INFO [Download metadata thread] hudson.model.AsyncPeriodicWork$1.run Started Download metadata
18-Apr-2025 00:13:11.990 INFO [SSHD.init] org.jenkinsci.main.modules.sshd.SSHD.start Started SSHD at port 43031
18-Apr-2025 00:13:11.990 INFO [pool-6-thread-2] jenkins.InitReactorRunner$1.onAttained Completed initialization
bash 复制代码
#访问地址,自动解压成jenkins目录
 http://192.168.31.127:8080/jenkins

运维小路

一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!

关注微信公众号《运维小路》获取更多内容。

相关推荐
Linux运维技术栈1 天前
CVE-2026-91403 高危漏洞修复:Rocky Linux 9 多版本 JDK 环境清理实操
java·linux·运维
云上先途11 天前
企业 AI 服务部署周期多久,会不会影响原有业务运转?
大数据·运维·人工智能
执伞人ONLY1 天前
AI知识库自动化知识加工没做对,人工整理永远追不上知识产生
运维·人工智能·自动化
slongzhang_1 天前
linux 递归删除源码文件|递归删除目录下 *.js,但排除 *.min.js
linux·开发语言·javascript
叼烟扛炮1 天前
Linux 学习笔记(三十三):线程互斥——互斥锁(Mutex)与死锁
linux·运维·服务器·笔记·学习·1024程序员节
无足鸟ICT1 天前
【RHCA+】who命令(查看已登陆用户)
linux·运维·服务器
Escalating_xu1 天前
【Linux 网络编程】应用层协议 HTTP(下):Header、连接管理与 C++ HTTP 服务器
linux·服务器·网络
RacentCLM1 天前
证书即服务CaaS:从申请、续期到部署的自动化链路拆解
运维·数据库·自动化·ssl
注塑机数据采集联网1 天前
注塑机生产管控MES系统应用
大数据·运维·服务器·人工智能·物联网
海宇服务1 天前
零信任架构实战:基于海宇全国车辆配置查验构建自动化二手商用车出厂参数建档网关
运维·人工智能·架构·自动化·1024程序员节