Tomcat详解 一:tomcat的部署

这篇具有很好参考价值的文章主要介绍了Tomcat详解 一:tomcat的部署。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. Tomcat的相关介绍

1.1 Tomcat简介

Tomcat 是 Java 语言开发的,Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器

Tomcat 属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试 JSP 程序的首选。

一般来说,Tomcat 虽然和 Apache 或者 Nginx 这些 Web 服务器一样,具有处理 HTML 页面的功能,然而由于其处理静态 HTML 的能力远不及 Apache 或者 Nginx,所以 Tomcat 通常是作为一个 Servlet 和 JSP 容器,单独运行在后端。

1.2 Tomcat的核心组件

  • Web 容器:完成 Web 服务器的功能。
  • Servlet 容器:名字为 catalina,用于处理 Servlet 代码。
  • JSP 容器:用于将 JSP 动态网页翻译成 Servlet 代码。

1.2.1 Web容器

Tomcat 是 Web 应用服务器,也是一个 Servlet/JSP 容器。Tomcat 作为 Servlet 容器,负责处理客户请求,把请求传送给 Servlet,并将 Servlet 的响应传送回给客户。

1.2.2 Servlet容器

Servlet 是Java Servlet 的简称,可以理解为是一个服务连接器,是用 Java 编写的服务器端程序,具有独立于平台和协议的特性,
简单的理解:servlet 就是一个中间件,包含了接口和方法,将客户端和数据库连接,从而实现动态网页的创建

1.2.3 JSP容器

JSP 全称 Java Server Pages,是一种动态网页开发技术。它使用 JSP 标签在HTML网页中插入 Java 代码。标签通常以 <% 开头,以 %> 结束。

JSP 是一种 Java servlet,主要用于实现 Java web 应用程序的用户界面部分。

JSP 通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。

1.3 Tomcat的功能组件

Tomcat 的核心功能有两个,分别是负责接收和反馈外部请求的连接器 Connector,和负责处理请求的容器 Container
其中连接器和容器相辅相成,一起构成了基本的 web 服务 Service。
每个 Tomcat 服务器可以管理多个 Service。

1.3.1 connector连接器

暴露监听端口,接收客户端发来的请求和返回响应消息给客户端

1.3.2 container容器

负责处理用户请求的业务逻辑。
由4个子容器组成(engine、host、context、wrapper),子容器之间是父子关系

1.3.2.1 子容器及其相关功能
  • engine:引擎,管理多个虚拟主机,一个container只有一个engine
  • host:代表一个虚拟主机
  • context:代表一个 Web 应用,包含多个 Servlet 封装器
  • wrapper:servlet封装器,每一 Wrapper 封装着一个 Servlet,负责对象实例的创建、执行和销毁功能

1.4 主要作用

  • 可以作为 Web 应用服务器,处理静态 Web 页面, 如 html 页面,但性能一般
  • 还可以作为 Servlet/JSP 容器,处理 java 语言开发的 jsp 动态页面应用程序,这也是 tomcat 主要的应用场景

1.5 Tmocat处理请求的过程

Tomcat详解 一:tomcat的部署,tomcat,java

1、用户在浏览器中输入网址,请求被发送到本机端口 8080,被在那里监听的 Connector 获得;
2、Connector 把该请求交给它所在的 Service 的 Engine(Container)来处理,并等待 Engine 的回应;
3、请求在 Engine、Host、Context 和 Wrapper 这四个容器之间层层调用,最后在 Servlet 中执行对应的业务逻辑、数据存储等。
4、执行完之后的请求响应在 Context、Host、Engine 容器之间层层返回,最后返回给 Connector,并通过 Connector 返回给客户端。

客户端请求过程:
客户端浏览器——> connector(暴露的8080端口) ——>container(engine)——>host ——>context——>wrapper

container(engine) 根据域名发送给对应的虚拟主机
host 根据用户访问的URL路径
context 根据URL路径对应的Web应用
wrapper 根据应用程序处理业务逻辑

2. Tomcata服务部署

2.1 安装并配置JDK

systemctl stop firewalld
setenforce 0
#关闭防火墙和selinux

#将所需源码包传到/opt目录下
jdk-8u201-linux-x64.rpm
apache-tomcat-9.0.16.tar.gz

Tomcat详解 一:tomcat的部署,tomcat,java

#rpm安装JDK
cd /opt
rpm -ivh jdk-8u201-linux-x64.rpm 

Tomcat详解 一:tomcat的部署,tomcat,java

rpm -ql jdk1.8 | tail -n 1
#查看安装路径

Tomcat详解 一:tomcat的部署,tomcat,java

cd /usr/java/jdk1.8.0_201-amd64/ ;ls
文件名 功能
bin 存放 Java 可执行文件的目录
include 存放 Java 开发头文件的目录
jre 存放 Java 运行时环境的目录
LICENSE JDK 许可证文件
README.html JDK 的直观说明文档(HTML 格式)
src.zip JDK 的源代码压缩包
THIRDPARTYLICENSEREADME.txt 第三方许可证文档
COPYRIGHT JDK 的版权信息
javafx-src.zip JavaFX 源代码压缩包
lib 存放 JDK 和 JavaFX 库文件的目录
man 存放 JDK 手册页(man page)文件的目录
release JDK 的版本信息
THIRDPARTYLICENSEREADME-JAVAFX.txt JavaFX 第三方许可证文档

Tomcat详解 一:tomcat的部署,tomcat,java

java -version 
#查看目前JDK版本

Tomcat详解 一:tomcat的部署,tomcat,java

2.2 设置JDK环境变量

#查看全局配置文件
vim /etc/profile

Tomcat详解 一:tomcat的部署,tomcat,java

vi /etc/profile.d/java.sh

export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64   
#java家目录
export JRE_HOME=$JAVA_HOME/jre
#jre家目录
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
#指向java工具包和环境包
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
#java环境变量

#linux查找可执行文件是根据PATH变量从左往右查找,找到即停止
#所以需要将安装版本的路径放在$PATH前面

`CLASSPATH` 是一个环境变量,用于指定 Java 程序运行时的类路径。类路径是指计算机中存储 Java 类文件和库文件的路径。当 Java 程序运行时,虚拟机会搜索类路径上指定的路径,以找到所需的类文件和库文件,以便正确加载和执行程序。


#CLASSPATH和 PATH是必需的,而JAVA_HOME和JRE_HOME是为了方便修改,只需要修改JAVA_HOME

Tomcat详解 一:tomcat的部署,tomcat,java

source /etc/profile.d/java.sh
#调用Java脚本

java -version
#查看当前JDK版本

Tomcat详解 一:tomcat的部署,tomcat,java

#测试
任意Java脚本,测试是否成功

Tomcat详解 一:tomcat的部署,tomcat,java

javac HelloWorld.java
#编译

Tomcat详解 一:tomcat的部署,tomcat,java

java -cp . HelloWorld #执行脚本

Tomcat详解 一:tomcat的部署,tomcat,java

---------------------------------热知识-------------------------------------------------------------------
JDK :java development kit (java开发工具)
JRE :java runtime environment (java运行时环境)
JVM :java virtuak machine (java虚拟机),使java程序可以在多种平台上运行class文件。
CLASSPATH:告诉jvm要使用或执行的class放在什么路径上,便于JVM加载class文件。
tools.jar:是系统用来编译一个类的时候用到的,即执行javac的时候用到。
dt.jar:dt.jar是关于运行环境的类库,主要是swing包。
----------------------------------------------------------------------------------------------------------

2.3 安装Tomcat并用systemctl启动

2.3.1 路径启动

#解压tomcat安装包
cd /opt
tar xf apache-tomcat-9.0.16.tar.gz  
#解压缩源码包 

Tomcat详解 一:tomcat的部署,tomcat,java

cp -r apache-tomcat-9.0.16/ /usr/local/tomcat
#将源码包目录拷贝至/usr/local/下并重命名为tomcat
#简化路径,方便管理mv apache-tomcat-9.0.16 /usr/local/tomcat

Tomcat详解 一:tomcat的部署,tomcat,java

#启动Tomcat的方法,省略路径
startup.sh          #后台启动tomcat
catalina.sh start   #后台启动tomcat
catalina.sh run     #前台启动 tomcat

#关闭Tomcat的方法:
shutdown.sh      #关闭tomcat

#查看tomcat是否启动:
ss -natp |grep 8080

Tomcat详解 一:tomcat的部署,tomcat,java

2.3 2 为tomcat添加进systemd服务

#先关闭服务
/usr/local/tomcat/bin/shutdown.sh

Tomcat详解 一:tomcat的部署,tomcat,java

#添加用户设置属主属组
useradd -s /sbin/nologin tomcat
chown tomcat:tomcat /usr/local/tomcat/ -R
#新建.service服务文件
vi /etc/systemd/system/tomcat.service


[Unit]
Description=Tomcat
#After=syslog.target network.target remote-fs.target nss-lookup.target
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
#重新加载服务,并开启,查看是否成功启动
systemctl daemon-reload
systemctl start tomcat
ss -ntap |grep 8080
或
systemctl status tomcat

Tomcat详解 一:tomcat的部署,tomcat,java

浏览器访问Tomcat的默认主页 http://192.168.67.102:8080

Tomcat详解 一:tomcat的部署,tomcat,java

3. Tomcat的端口及配置文件

3.1 Tomcat常用端口

8080: 默认接收 http 请求的端口

8005: 安全端口,可以关闭tomcat

8009: apache 和 tomcat 联动 AJP 协议

8443:负责处理https请求连接

3.2 主要目录、文件及其功能

目录名 功能
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 日志
temp 存放 Tomcat 运行时产生的文件
webapps 存放项目资源的目录
work Tomcat 工作目录,一般清除 Tomcat 缓存的时候会使用到
文件名 说明
server.xml 主配置文件
web.xml 每个webapp只有“部署"后才能被访问,它的部署方式通常由web.xml进行定义,其存放位置为
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日志系统相关的配置,可以修改日志级别和日志路径等

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

4. 虚拟主机

4.1 作用

  1. 分离多个网站:通过配置虚拟主机,可以将不同的网站分开,并为每个网站指定独立的文档根目录、日志文件、访问日志等,以避免网站之间的资源冲突和混乱。
  2. 实现多个域名指向不同的网站:通过虚拟主机,可以将多个域名指向同一台服务器的不同网站,实现一个服务器对应多个域名,提高服务器的利用率和灵活性。
  3. 隔离与保护:每个虚拟主机都是独立的,网站之间不会相互干扰,如果一个网站出现问题,不会影响其他网站的正常运行。
  4. 提供定制化配置:通过虚拟主机配置,可以为每个网站提供独立的配置选项,如SSL证书、访问权限、反向代理等,以满足不同网站的需求。
  5. 简化管理和维护:通过虚拟主机,可以利用Tomcat提供的管理工具(如Tomcat Manager)对每个虚拟主机进行独立的管理和监控,方便统一管理多个网站

4.2 配置虚拟主机(基于域名)

新增两个域名 www.scj.com 和 www.shan.com,希望通过这两个域名访问到不同的项目内容。

4.2.1 创建 scj 和 shan 项目目录和文件

#创建 scj 和 shan 项目目录与文件
cd /usr/local/tomcat/webapps
mkdir scj  shan

Tomcat详解 一:tomcat的部署,tomcat,java

#自定义主页内容
echo "this is scj web" > scj/index.html
echo "this is shan web" > shan/index.html

Tomcat详解 一:tomcat的部署,tomcat,java

4.2.2 修改 Tomcat 主配置文件

#修改主配置文件
vim /usr/local/tomcat/conf/server.xml 
约164行位置插入
-----------------------------------------------------
 
        <Host name="www.scj.com"  appBase="/usr/local/tomcat/webapps" unpackWARs="true" autoDeploy="true"
              xmlValidation="false" xmlNamespaceAware="false">
              <Context docBase="/usr/local/tomcat/webapps/scj"
                path="" reloadable="true" />
     </Host>
        <Host name="www.shan.com"  appBase="/usr/local/tomcat/webapps" unpackWARs="true" autoDeploy="true"
              xmlValidation="false" xmlNamespaceAware="false">
              <Context docBase="/usr/local/tomcat/webapps/shan"
                path="" reloadable="true" />
    </Host>


###################释义#########
Host name :主机名

appBase :Tomcat程序工作目录,相对路径为webapps,绝对路径为/usr/local/tomcat/webapps

unpackWARs :是否解压war包

autoDeploy :指示Tomcat运行时,如有新的WEB应用是否允许自动部署

xmlValidation :是否验证xml文件执行有效性检验的标志

xmlNamespaceAware :是否启用xml命名空间,设置该值与xmlValidation为true,表示对web.xml文件执行有效性检验

appBase :WEB应用的目录

path :设置访问的URI为WEB应用的根目录

reloadable :是否在程序有改动时重新载入

Tomcat详解 一:tomcat的部署,tomcat,java

4.2.3 重启并检测是否成功

#服务机关闭防火墙并重启服务
systemctl restart tomcat
systemctl stop firewalld
setenforce 0
#前往客户机,更改/etc/hosts文件并关闭防火墙
echo "192.168.67.102 www.scj.com www.shan.com" >> /etc/hosts
systemctl stop firewalld
setenforce 0

Tomcat详解 一:tomcat的部署,tomcat,java

#在客户机中测试
curl http://www.scj.com:8080
curl http://www.shan.com:8080

Tomcat详解 一:tomcat的部署,tomcat,java文章来源地址https://www.toymoban.com/news/detail-699699.html

5. tomcat 配置优化

5.1 配置文件优化

maxThreads(最大线程数/并发)
processorCache(进程缓冲)
acceptCount(等待队列数)  
enableLookups(关闭DNS反向解析)  
URIEncoding(网页字符集编码UTF-8) 
maxKeepAliveRequests(长连接最大请求数)  
connectionTimeout(连接超时时间)  
compression(开启页面压缩)

5.2 内核优化

#/etc/security/limits.conf     
nofile  nproc  memlock
#/etc/sysctl.conf   
net.ipv4.tcp_tw_reuse=1   
net.ipv4.tcp_tw_recycle=1   
net.ipv4.tcp_fin_timeout=30  
net.ipv4.tcp_max_tw_buckets=5000    
net.ipv4.ip_local_port_range=1024 65535 

5.3 JVM优化

#在 catalina.sh 中设置 JAVA_OPTS 参数

JAVA_OPTS="$JAVA_OPTS -server -Xms2048m -Xmx2048m -XX:PermSize=1024m -XX:MaxPermSize=1024m -Xmn768m"

-server                                    #表示启用JDK的Server模式,实现在多核服务器性能更佳
-Xms2048m -Xmx2048m                        #设置JVM堆内存初始值和最大最一样大,一般设置为物理内存的 1/2
-XX:PermSize=1024m -XX:MaxPermSize=1024m   #设置永久代(非堆内存)初始值和最大最一样大,一般设置为物理内存的 1/4

#初始值和最大最设置一样大的原因:可以减少GC次数和内存伸缩带来的频繁内存申请,从而减少一定的系统开销。

-Xmn #设置JVM堆内存新生代的大小,一般设置为堆内存的 3/8

-XX:ParallelGCThreads=2   #设置并行GC(垃圾回收)线程数,提高垃圾回收效率
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/usr/local/tomcat/temp/oom.hprof  设#置进程发生OOM异常退出会进行DUMP备份
-XX:+DisableExplicitGC  #禁止调用System.gc()方法,防止误调用系统gc方法导致系统的JVM堆内存大起大落而使系统响应效率严重降低

到了这里,关于Tomcat详解 一:tomcat的部署的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 保姆级!如何在Window Server服务器上用tomcat部署java web项目

    首先,打开idae软件(我项目用的idea,也可以其他)导入你的项目,然后运行项目,确保项目能在localhost:8080,即在本地上运行。 确保能在本地上运行,且项目所有的已实现的功能没有bug,多测试几次。 然后打包项目,在打包前,看看数据库的.sql文件放在哪个位置(如果有的

    2024年02月06日
    浏览(51)
  • (Linux)Centos7.*版本安装配置Java环境、Tomcat、Nginx并打包部署SSM框架web系统

    目录 一、准备软件与安装包 (一)、必须的软件 1、点击下载Xshell 2、点击下载FileZilla (二)、准备安装包 1、点击下载JDK1.8Linux版本 2、点击下载Nginx 3、点击下载Tomcat   二、关于FileZilla软件的使用说明 (一)、FileZilla软件的打开和说明 (二)、配置服务器地址去连接服务器  三、X

    2023年04月25日
    浏览(61)
  • 【Tomcat】Tomcat部署及优化

    Tomcat         它是一个免费、开源的web应用服务器;基于java代码开发的软件;处理动态请求和基于Java代码的页面开发;         可以在html当中写入Java代码,Tomcat可以解析html页面当中的Java代码,执行动态请求以及动态页面          缺点 :机制有问题,如果不对To

    2024年02月13日
    浏览(33)
  • tomcat部署、tomcat虚拟主机及tomcat多实例

    目录 一、Tomcat概述 tomcat是什么? 什么是 servlet? 什么是 JSP? Tomcat 功能组件结构 Container 结构分析 Tomcat 请求过程 二、Tomcat部署 1、关闭防火墙和selinux,并将Tomcat所需软件包传到/opt目录下 2、安装JDK 3、设置JDK环境变量 4、安装Tomcat,解压tomcat安装包,并将解压出来的文件复制

    2024年02月10日
    浏览(43)
  • 【Tomcat】(Tomcat 下载Tomcat 启动Tomcat 简单部署 基于Tomcat进行网站后端开发)

    Tomcat 是一个 HTTP 服务器.HTTP 协议就是 HTTP 客户端和 HTTP 服务器之间的交互数据的格式. HTTP 服务器我们可以通过 Java Socket 来实现. 而 Tomcat 就是基于 Java 实现的一个开源免费,也是被广泛使用的 HTTP 服务器. 官方网站:https://tomcat.apache.org/download-80.cgi 在 bin 目录中, 双击 startup.bat

    2024年02月12日
    浏览(41)
  • tomcat服务&&tomcat多实例部署

    Tomcat是一个开源的Java Servlet容器,可以作为Java Web应用程序的运行环境。它是Apache软件基金会的一个重要项目,具有高性能、稳定可靠以及跨平台等特点。它实现了Java Servlet和JavaServer Pages(JSP)规范,并提供了一个运行环境,使得Java代码可以在Web服务器上执行。 tomcat就是传

    2024年02月07日
    浏览(45)
  • 企业 Tomcat 运维 部署tomcat反向代理集群

    Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器 , Tomcat和Nginx、Apache(httpd)、Web服务器一样,具有处理HTML页面的功能不过Tomcat处理静态HTML的能力不如Nginx/Apache服务器 一个tomcat默认并发是200(官方),可以修改,但实际用的时候也就200并发左右。 h

    2024年02月06日
    浏览(43)
  • openEuler安装Tomcat、openEuler离线安装Tomcat、openEuler启动Tomcat、openEuler部署Tomcat

    openEuler安装Tomcat前,要依赖jdk,没有的道友,请先安装好再来,可参照链接的帖子安装好: https://blog.csdn.net/my_futrue/article/details/132206735?spm=1001.2014.3001.5501 下面开始步入正题: 下载和解压 Tomcat: 前往 Apache Tomcat 的官方网站(https://tomcat.apache.org/)下载你想要的 Tomcat 版本(通常

    2024年02月12日
    浏览(44)
  • tomcat第1章 tomcat介绍、安装、部署项目

    我们在写javaweb程序的时候有没有考虑如果没有tomcat,我们怎么给客户端返回响应数据?既然能返回响应数据,为什么还要使用tomcat? 什么是tomcat,以及tomcat历史版本发展情况,每个版本servlet规范的支持,相关的许可。 最后再介绍如何下载tomcat、安装tomcat、启动tomcat、运行

    2024年02月13日
    浏览(43)
  • tomcat安装、部署JSPGOU项目、Tomcat多实例

            安装 官网找包 Apache Tomcat® - Welcome! tomcat 8 准备运行环境 安装tomcat catalina.sh    服务脚本管理文件 server.xml 主配置文件 修改8009(删除注释) 启动tomcat 访问 为了避免每次进入绝对路径启动tomcat 法二: 单机架构:                 集群架构:                 jsp

    2024年02月09日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包