【Tomcat服务部署及优化】

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

一、什么是Tomcat?

Tomcat服务器是Java语言开发的,免费的开放源代码的Web应用服务器
Tomcat处理静态HTML的能力远不及Apache或者Nginx,通常是作为一个Servlet和JSP容器,单独运行在后端。

二、Tomcat 核心组件

2.1 Tomcat 组件

【Tomcat服务部署及优化】,tomcat,java,运维,linux,笔记

Tomcat的核心功能组件有两个:

负责接收和反馈外部请求连接器Connector

负责处理请求容器Container

其中连接器和容器相辅相成,一起构成了基本的web服务Service。

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

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

2.3 Container组件的结构

【Tomcat服务部署及优化】,tomcat,java,运维,linux,笔记

Container 结构分析:
每个Service会包含一个Container容器。在Container内部包含了4个子容器,4个子容器的作用:
Engine:引擎,用来管理多个虚拟主机,一个Service最多只能有一个Engine;
Host:代表一个虚拟主机,也可以叫站点,通过配置Host就可以添加站点;
Context:代表一个Web应用,包含多个Servlet封装器;
Wrapper:封装器,容器的最底层。每一Wrapper封装着一个Servlet,负责对象实例的创建、执行和销毁功能。

Engine、Host、Context 和 Wrapper,这四个容器之间属于层层递进的父子关系

engine: 引擎,管理多个虚拟主机,一个container只有一个engine

host: 代表一个虚拟主机

context: 管理web应用的路径

servlet封装器,负责处理业务逻辑wrapper:

2.4 Tomcat 请求过程

客户端请求过程:

客户端浏览器——> connector ——>container(engine)——>host ——>context——>wrapper

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

三、Tomcat 部署

3.1 安装JDK

#关闭防火墙和selinux
systemctl disable firewalld --now
setenforce 0
 
#将源代码包置于/opt下
apache-tomcat-9.0.16.tar.gz 
jdk-8u201-linux-x64.rpm

【Tomcat服务部署及优化】,tomcat,java,运维,linux,笔记

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

【Tomcat服务部署及优化】,tomcat,java,运维,linux,笔记

rpm -ql jdk1.8 | tail -n 1
#确定安装路径

【Tomcat服务部署及优化】,tomcat,java,运维,linux,笔记

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,java,运维,linux,笔记

java -version 
#JDK版本

【Tomcat服务部署及优化】,tomcat,java,运维,linux,笔记

3.2 设置JDK环境变量

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

【Tomcat服务部署及优化】,tomcat,java,运维,linux,笔记

vim /etc/profile.d/java.sh
 
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
#最左原则:linux查找可执行文件是根据PATH变量从左往右查找,找到即停止。
#所以需要将安装版本的路径放在$PATH前面

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

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

【Tomcat服务部署及优化】,tomcat,java,运维,linux,笔记

source /etc/profile.d/java.sh

java -version#查看JDK版本

【Tomcat服务部署及优化】,tomcat,java,运维,linux,笔记

测试

找一个java脚本,测试java是否安装成功

【Tomcat服务部署及优化】,tomcat,java,运维,linux,笔记

javac HelloWorld.java #编译

【Tomcat服务部署及优化】,tomcat,java,运维,linux,笔记

java -cp . HelloWorld #执行

【Tomcat服务部署及优化】,tomcat,java,运维,linux,笔记

#补充
---------------------------------小知识-------------------------------------------------------------------
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包。
----------------------------------------------------------------------------------------------------------

3.3 安装Tomcat并用supervisor启动

解压
#解压tomcat安装包
cd /opt
tar zxf apache-tomcat-9.0.16.tar.gz   

【Tomcat服务部署及优化】,tomcat,java,运维,linux,笔记

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

【Tomcat服务部署及优化】,tomcat,java,运维,linux,笔记

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

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

#查看tomcat是否启动:
netstat ss ps jps
添加到supervisord服务

supervisor简介

supervisor是Python开发的c/s服务,是Linux系统下的进程管理工具。

可以监听、启动、停止、重启一个或多个进程。

用supervisor管理的进程,当一个进程意外被杀死,supervisor监听到进程死后,会自动将它重启,很方便的做到进程的自动恢复的功能,不在需要自己写脚本来控制。

#supervisor常用命令
#supervisorctl是supervisord的命令行工具

supervisorctl status           查看所有进程的状态

supervisorctl stop <name>      停止进程

supervisorctl start <name>     启动进程

supervisorctl restart <name>   重启进程

supervisorctl update           配置文件修改后可以使用该命令加载新的配置

supervisorctl reload           重载

supervisor不能监控后台进程,command不能为后台运行命令

配置部分

#安装源和服务
yum install -y epel-release
yum install -y supervisor

#建立管理用户
useradd tomcat
chown -R tomcat:tomcat /usr/local/tomcat

【Tomcat服务部署及优化】,tomcat,java,运维,linux,笔记

#编辑主配置文件
vim /etc/supervisord.conf

【Tomcat服务部署及优化】,tomcat,java,运维,linux,笔记

vim /etc/supervisord.d/tomcat.conf

[program:tomcat]
command=/usr/local/tomcat/bin/catalina.sh run  ;程序启动命令
autostart=true          ;在supervisord启动的时候也自动启动
startsecs=10            ;启动10秒后没有异常退出,就表示进程正常启动了,默认为1秒
autorestart=true        ;程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启
startretries=3          ;启动失败自动重试次数,默认是3
user=tomcat             ;用哪个用户启动进程,默认是root
priority=999            ;进程启动优先级,默认999,值小的优先启动
redirect_stderr=true    ;把stderr重定向到stdout,默认false
stdout_logfile_maxbytes=200MB    ;stdout 日志文件大小,默认50MB
stdout_logfile_backups=20        ;stdout 日志文件备份数,默认是10
; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)
stdout_logfile=/var/log/supervisor/logs/catalina.out
stopasgroup=false     ;默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程
killasgroup=false     ;默认为false,向进程组发送kill信号,包括子进程

#无释义版
[program:tomcat]
command=/usr/local/tomcat/bin/catalina.sh run
autostart=true
startsecs=10
autorestart=true
startretries=3
user=tomcat
priority=999
redirect_stderr=true
stdout_logfile_maxbytes=200MB
stdout_logfile_backups=20
stdout_logfile=/var/log/supervisor/logs/catalina.out
stopasgroup=false
killasgroup=false

【Tomcat服务部署及优化】,tomcat,java,运维,linux,笔记

mkdir -p /var/log/supervisor/logs #创建日志路径

systemctl start  supervisord  #启动服务
systemctl enable supervisord #开机自启

#启动方式二
#supervisord -c /etc/supervisord.conf 

supervisorctl reread #重新加载 Supervisor 的配置
supervisorctl update #应用新的配置

【Tomcat服务部署及优化】,tomcat,java,运维,linux,笔记

测试能否通过supervisorctl启动
supervisorctl start tomcat
supervisorctl status tomcat

【Tomcat服务部署及优化】,tomcat,java,运维,linux,笔记

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

【Tomcat服务部署及优化】,tomcat,java,运维,linux,笔记

四、Tomcat的端口和主要目录

4.1 Tomcat端口

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

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

8009: apache 和 tomcat 联动 AJP 协议

8443:负责处理https请求连接

4.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进行定义,其存放位置为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日志系统相关的配置,可以修改日志级别和日志路径等
注意配置文件对于大小写敏感

五、Tomcat虚拟主机

5.1 为什么要用虚拟主机?

可能有时候公司会有多个项目需要运行,那么肯定不可能是一台服务器上运行多个Tomcat 服务,这样会消耗太多的系统资源。此时,就需要使用到 Tomcat 虚拟主机。

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

配置思路

例如现在新增两个域名 www.byyb.com,www.byyd.com

希望通过这两个域名访问到不同的项目内容。

1)在 webapps 日录中添加各个站点的网页根目录,准备测试页面文件。

2)修改 tomcat 主配置文件 server.xml

在 Engine 配置段下面添加多 Host 配置段,设置不同的虚拟主机配置参数;

在 Host 配置段下添加一个或多个 context 配置段,设置虚拟主机的web应用程序的存放位置。

docBase="/usr/local/tomcat/webapps/ky31" path=nhttp://www.ky31.com:8080/test/abc.html -> /usr/local/tomcat/webapps/ky31/test/abc.html

docBase="/usr/local/tomcat/webapps/ky31" path="test"http://www.ky31.com:8080/test/abc.html -> /usr/local/tomcat/webapps/ky31/abc.html

具体配置

1.创建 byyb 和 byyd 项目目录和文件

mkdir /usr/local/tomcat/webapps/byyb
mkdir /usr/local/tomcat/webapps/byyd

echo "This is byyb\!" > /usr/local/tomcat/webapps/byyb/index.jsp

echo "This is byyd\!" > /usr/local/tomcat/webapps/byyd/index.jsp

【Tomcat服务部署及优化】,tomcat,java,运维,linux,笔记

2.修改 Tomcat 主配置文件 server.xml

vim /usr/local/tomcat/conf/server.xml

#165行前插入
<Host name="www.kgc.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
 <Context docBase="/usr/local/tomcat/webapps/byyb" path="" reloadable="true" />
</Host>

<Host name="www.byyd.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
 <Context docBase="/usr/local/tomcat/webapps/byyd" path="" reloadable="true" />\
</Host> 

##注释##
Host 
name:主机名
appBase:Tomcat程序工作目录,即存放web应用程序的目录;相对路径为webapps,绝对路径为 /usr/local/tomcat/webapps
unpackWARs:在启用此webapps时是否对WAR格式的归档文件先进行展开;默认为true
autoDeploy:在Tomcat处于运行状态时放置于appBase目录中的应用程序文件是否自动进行deploy;默认为true
xmlValidation:是否验证xml文件执行有效性检验的标志
xmlNamespaceAware:是否启用xml命名空间,设置该值与xmlValidation为true,表示对web.xml文件执行有效性检验

Context
docBase:相应的Web应用程序的存放位置;也可以使用相对路径,起始路径为此Context所属Host中appBase定义的路径;
path:相对于Web服务器根路径而言的URI;如果为空"",则表示为此webapp的根路径 / ;
reloadable:是否允许重新加载此context相关的Web应用程序的类;默认为false
##

【Tomcat服务部署及优化】,tomcat,java,运维,linux,笔记

#重新启动
supervisorctl restart tomcat

【Tomcat服务部署及优化】,tomcat,java,运维,linux,笔记

echo "192.168.2.100 www.byyb.com www.byyd.com" >> /etc/hosts

【Tomcat服务部署及优化】,tomcat,java,运维,linux,笔记

3.浏览器访问验证

#使用虚拟机的浏览器访问,windows需要修改本地hosts文件
浏览器访问 http://www.byyb.com:8080/ 
浏览器访问 http://www.byyd.com:8080/ 

【Tomcat服务部署及优化】,tomcat,java,运维,linux,笔记

六、Tomcat优化

怎么查看线程数?

ss -natp | grep java 看pid

ps -T -p pid

6.1 配置文件优化

maxThreads (最大线程数/并发)

processorCache (进程缓冲)

acceptCount (等待队列数)

enableLookups (关闭DNS反向解析)

URIEncoding (网页字符集编码UTF-8)

maxKeepAliveRequests (长连接最大请求数)

connectionTimeout (连接超时时间)

compression (开启页面压缩)

6.2 系统内核优化

/etc/security/limits.conf 
nofile 
nproc  
memlock
/etc/sysct1.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

6.3 JVM优化

参数 说明 举例
-Xms 设置应用程序初始使用的堆内存大小(年轻代+老年代) -Xms2g
-Xmx 设置应用程序能获得的最大堆内存早期JVM不建议超过32G,内存管理效率下降 -Xms4g
-XX:NewSize 设置初始新生代大小 -XX:NewSize=128m
-XX:MaxNewSize 设置最大新生代内存空间 -XX:MaxNewSize=256m
-Xmnsize 同时设置-XX:NewSize 和 -XX:MaxNewSize,代 -Xmn1g
-XX:NewRatio 以比例方式设置新生代和老年代 -XX:NewRatio=2new/old=1/2
-XX:SurvivorRatio 以比例方式设置eden和survivor(S0或S1) -XX:SurvivorRatio=6eden/survivor=6/1new/survivor=8/1
-Xss 设置每个线程私有的栈空间大小,依据具体线程 -Xss256k

catalina.sh 中设置 JAVA_OPTS 参数。文章来源地址https://www.toymoban.com/news/detail-703172.html

JAVA OPTS="$JAVA_OPTS -server -Xms2048m -Xmx2046m -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服务部署及优化】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Tomcat服务部署、优化及多实例实验(Nginx+Tomcat负载均衡、动静分离)

    目录 1 Tomcat 1.1 tomcat 构成 1.2 什么是 servlet? 1.3 什么是 JSP? 1.4 Tomcat 功能组件结构 1.5 Container 结构分析 1.6 Tomcat 请求过程 2 Tomcat 服务部署 2.1 环境部署 2.1.1 ​编辑 2.1.2 设置JDK环境变量 2.2 安装启动Tomcat 2.3 优化tomcat启动速度 2.4 主要目录说明 3 Tomcat 虚拟主机配置 3.1 创建 c

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

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

    2024年02月06日
    浏览(43)
  • Linux服务器远程访问通过Tomcat部署的静态资源

    1.1 安装Java 下载jdk8 切换到root用户,创建文件夹/usr/local/java,将下载的jdk压缩包上传到该目录下,解压 编辑配置文件,配置环境变量,在末尾添加如下内容 重载激活配置 检查安装成功 1.2 安装Tomcat 下载tomcat 切换到root用户,创建文件夹/usr/local/tomcat,将下载的tomcat压缩包上传

    2024年01月18日
    浏览(66)
  • 【Tomcat】Tomcat部署及优化

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

    2024年02月13日
    浏览(33)
  • 保姆级!如何在Window Server服务器上用tomcat部署java web项目

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

    2024年02月06日
    浏览(50)
  • Tomcat部署及优化

    目录 一、Tomcat的相关知识 1)Tomcat的简介 2)Tomcat的组件构成  3)Tomcat的功能组件结构  4)Tomcat的请求过程  二、Tomcat服务的部署  步骤一:搭建Tomcat运行环境   (1)关闭防火墙和selinux,防止其对安装过程的干扰 (2)将准备好的软件包拖入/opt目录下,进行安装 (3)设置

    2024年02月07日
    浏览(38)
  • Tomcat 部署及优化

    Tomcat 是 Java 语言开发的,Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,是 Apache 软件基金会的 Jakarta 项目中的一个核心项目,由 Apache、Sun 和其他一些公司及个人共同开发而成。在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试 JSP程序的首

    2024年02月13日
    浏览(33)
  • Tomcat的部署及优化

    目录 1.Tomcat概述       1.1 Tomcat的组件构成​编辑       1.2 Tomcat功能组件结构       1.3 Tomcat的请求过程 2. Tomcat服务的部署  2.1 搭建Tomcat运行环境  3.设置JDK环境变量​  3.1测试java环境 4.安装启动Tomcat Tomcat 是 基于Java 语言开发的Tomcat 属于轻量级应用服务器,在中小型系

    2024年02月12日
    浏览(37)
  • Tomcat 部署优化

    目录 一.Tomcat介绍 二.了解Tomcat里面里面是放什么的 三. Tomcat:是一个特殊的服务   有两个领域  四.tomcat概述 五.再加上那个扩展java虚拟机(JVM) 调优   tomcat 优化分两种 六.Tomcat核心组件 ​编辑 容器:什么是容器 web容器:完成web服务的功能 Serviet容器: JSP 容器:  七

    2024年02月12日
    浏览(36)
  • Tomcat的部署和优化

    目录  一、Tomcat简介 二、Tomcat 的构成 三、Tomcat 功能组件结构 四、Tomcat 请求过程 五、Tomcat 服务部署 六、Tomcat 虚拟主机配置 七、Tomcat优化 1.Tomcat 配置文件参数优化 2.JVM优化          Tomcat 是 Java 语言开发的 ,Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,是

    2024年02月12日
    浏览(46)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包