Linux服务器教程之九Tomcat 服务器部署

举报
tea_year 发表于 2025/01/18 14:50:33 2025/01/18
【摘要】 Tomcat 的核心组件, 用于处理请求并返回数据。Catalina 是其具体的实现。Engine:表示整个 Catalina 的 Servlet 引擎,用来管理多个虚拟站点,一个 Service 最多只能有一个 Engine。但是一个 Engine 可以包含多个 Host。Host:表示一个主机地址,或者说一个站点,一个 Host 下有可以配置多个 Context。

任务目标

1、能够描述Tomcat的使用场景

2、能够简单描述Tomcat的工作原理

3、能够实现部署安装Tomcat

4、能够实现配置Tomcat的service服务和自启动*

5、能够实现Tomcat的Host的配置

6、能够实现Nginx反向代理Tomcat

7、能够实现Nginx负载均衡到Tomcat


一、JAVA概念

1.1java容器

用于存放与运行java代码的环境,web中间件

*java**容器*
Tomcat 最常用,较重,功能完善.
Jetty 轻量,功能较少.
Weblogic jBoss 用于Oracle数据库环境使用,Weblogic属于甲骨文.
东方通 国产java容器.

1.2 3.1 *JVM-JRE-JDK*⭐⭐⭐⭐⭐

1份代码处处运行与使用. 代码的可移植性

JVM: java 虚拟机中,运行java代码的地方


image-20240820000154671.png


1724120186312.png


二、Tomcat介绍


1、简介

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat支持最新的Servlet和JSP规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

同类软件:

jboss jetty

weblogic ORACLE 商业用付费 EJB企业支持 重载配置

websphere IBM 商业授权

Resin是CAUCHO公司的产品,是一个非常流行的application server,对servlet和JSP提供了良好的支持,性能也比较优良,resin自身采用JAVA语言开发。

2、工作原理图示

wps2.jpg


coyote是tomcat的Connector框架的名字,简单说就是coyote来处理底层的socket,并将http请求、响应等字节流层面的东西,包装成Request和Response两个类(这两个类是tomcat定义的,而非servlet中的ServletRequest和ServletResponse),供容器使用

1、用户点击网页内容,请求被发送到本机端口8080,被在那里监听的Coyote HTTP/1.1 Connector获得。

2、Connector把该请求交给它所在的Service的Engine来处理,并等待Engine的回应。

3、Engine获得请求localhost/test/index.jsp,匹配所有的虚拟主机Host。

4、Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机),名为localhost的Host获得请求/test/index.jsp,匹配它所拥有的所有的Context。Host匹配到路径为/test的Context(如果匹配不到就把该请求交给路径名为“ ”的Context去处理)。

5、path=“/test”的Context获得请求/index.jsp,在它的mapping table中寻找出对应的Servlet。Context匹配到URL PATTERN为*.jsp的Servlet,对应于JspServlet类。

6、构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet()或doPost().执行业务逻辑、数据存储等程序。

7、Context把执行完之后的HttpServletResponse对象返回给Host。

8、Host把HttpServletResponse对象返回给Engine。

9、Engine把HttpServletResponse对象返回Connector。

10、Connector把HttpServletResponse对象返回给客户Browser。

3、规划

*环境*
web03 192.168.xx.9/172.16.1.9 tomcat
web04 192.168.xx.10/172.16.1.10 tomcat
db01 192.168.xx.51/172.16.1.51 mariadb不动了
db02 192.168.xx.52/172.16.1.52 mysql

三、安装和配置

1、安装方式介绍

①yum方式安装 加载epel源,版本目前为tomcat7.0

②二进制方式安装 直接下载,部署好java环境,即可运行(推荐)

③源码方式安装 需要下载Apache Ant进行编译安装

2、二进制安装

①上传获取软件

mkdir -p    /app/tools/
tar  xf  jdk-8u341-linux-x64.tar.gz -C /app/tools/
ll /app/tools/
ln -s /app/tools/jdk1.8.0_341/ /app/tools/jdk

1724121044461.png

②部署java环境**

#tomcat配置环境变量的两种方式  三种使用其中一种即可
#第一种tomat依赖JAVA_HOME环境变量
shell > echo "export JAVA_HOME=/app/tools/jdk/bin/" >> /etc/profile
​
#第二种tomcat依赖java环境变量,建议!!!
export JAVA_HOME=/app/tools/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
​
​
#第三中tomcat依赖JRE_HOME变量
shell > echo "export JRE_HOME=/app/tools/jdk/java/jre" >> /etc/profile
shell > . /etc/profile

如果配置JAVA_HOME路径配置到jdk下就可以,不需要配置到bin下。

如果配置java的环境环境变量PATH,就指定到bin下。

如果启动tomcat,遇到如下问题

①没有安装jre jdk

②环境变量没有配置

③启动的软件找不到需要的java相关软件


③部署tomcat

# tar xf apache-tomcat-9.0.65.tar.gz  -C /app/tools/
ln -s /app/tools/apache-tomcat-9.0.65/ 
/app/tools/tomcat
/app/tools/tomcat/bin/version.sh #检查jdk,tomcat信息
​

软件部署之后的目录结构

image-20240820004158721.png


3、目录介绍

image-20240820004558072.png


bin 存放启动和关闭Tomcat的脚本文件

conf 存放Tomcat服务器的各种全局配置⽂文件,其中最重要的是server.xml和web.xml

lib 存放Tomcat服务器所需的各种JAR文件

logs 存放Tomcat执行时的日志文件

temp 此目录是tomcat存放的临时文件

webapps tomcat默认存放应用程序的目录,好比apache的默认网页存放路径是/var/www/html一样

work 用于存放JSP应用程序在部署时编译后产生的class文件

项目代码目录

image-20240820004644306.png


docs tomcat文档

examples tomcat自带的一个独立的web应用程序例子

host-manager tomcat的主机管理应用程序

manager tomcat的管理应用程序

ROOT 指tomcat的应用程序的根,如果应用程序部署在ROOT中,则

可直接通过http://ip:port 访问到

配置文件目录

image-20240820004731202.png


catalina.policy 配置tomcat对文件系统中目录或文件的读、写执行等权限,及对一些内存,session等的管理权限

catalina.properties 配置tomcat的classpath等

context.xml tomcat的默认context容器

logging.properties 配置tomcat的日志输出方式

server.xml tomcat的主配置文件 host配置

tomcat-users.xml tomcat的角色(授权用户)配置文件

web.xml tomcat的应用程序的部署描述符文件

4、启动bin目录

tomcat的相关管理命令在$prefix/bin目录下

经常使用的命令:

catalina.sh 主命令脚本

configtest.sh 检测配置文件

shutdown.sh 关闭

startup.sh 启动

version.sh 查看版本

image-20240820005037834.png

①测试启动tomcat

shell >./bin/startup.sh
shell > ps aux |grep tomcat
shell > netstat -lntp |grep 8080

image-20240820005728914.png

②查看页面效果

image-20240820005823925.png


③测试关闭tomcat

image-20240820010013981.png


5、systemctl管理配置文件⭐⭐⭐⭐⭐⭐

服务管理指令

存放在/usr/lib/systemd/system/xxxx.service 分为3个部分.

修改或设置systemctl配置要进行重新加载配置

①编辑启动脚本,生成tomcat.pid

*systemctl**配置文件的结构*
[Unit] 指定注释信息,依赖(先后顺序)
Description 说明与注释
After 在这里指定的服务之后运行. network.target
[Service] 用于指定服务开启命令,关闭命令,重启命令.
Type=notify 指定类型 simple 或forking即可
ExecStart 服务启动命令
ExecStop 服务关闭命令
ExecReload 重启命令
EnvironmentFile 配置环境变量的文件(一般对于编译安装,二进制安装需要加上)
[Install] 内容固定,用于指定运行级别.
WantedBy=multi-user.target 运行级别,一般都是多用户模式.
#systemctl cat命令可以用来查看配置文件
systemctl cat sshd
​
​
#在/etc/sysconfig下设置tomcat
vim /etc/sysconfig/tomcat
​
JAVA_HOME=/app/tools/jdk
PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:/usr/bin/:/user/sbin/:/usr/local/bin/:/usr/local/sbin/
​
#编辑配置文件cat /usr/lib/systemd/system/tomcat.service
[Unit]
Description=JAVAEE Web Container
After=network.target
​
[Service]
Type=forking
EnvironmentFile=/etc/sysconfig/tomcat
ExecStart=/app/tools/tomcat/bin/startup.sh
ExecReload=/app/tools/tomcat/bin/shutdown.sh && sleep 2 && /app/tools/tomcat/bin/startup.sh
ExecStop=/app/tools/tomcat/bin/shutdown.sh
​
[Install]
WantedBy=multi-user.target
​
​
#需要重新加载一下
systemctl daemonreload

总结

Tomcat 的核心组件, 用于处理请求并返回数据。Catalina 是其具体的实现。

Engine:表示整个 Catalina 的 Servlet 引擎,用来管理多个虚拟站点,一个 Service 最多只能有一个 Engine。但是一个 Engine 可以包含多个 Host。

Host:表示一个主机地址,或者说一个站点,一个 Host 下有可以配置多个 Context。

Context:表示一个 web 应用,一个 Web 应用可以包含多个 Wrapper

Wrapper:表示一个 Servlet,是容器中的最底层组件。


【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。