tomcat安装版安装教程

发布时间: 2023-11-21 12:51 阅读: 文章来源:1MUMB4321PS
开课

本章我们来学习一下另外的一种web服务tomcat,这是一个支持jsp页面的web服务,很多开发方向的IT人员,包括运维开发方向的同仁,都会选择使用tomcat

知识点

什么是tomcat

CentOS8中如何部署tomcat

windows系统中如何部署tomcat

tomcat的相关目录和文件的作用

tomcat的管理界面如何使用

如何使用tomcat发布静态页面

tomcat动态页面的实现

tomcat多实例的实现

让nginx和tomcat协同工作

tomcat的运行模式

tomcat运行模式的调整

额外的优化参数

压力测试工具的使用

课程目标

能够知道什么是tomcat

能够在不同的系统上部署tomcat

能够记住tomcat的常用目录和文件

能够知道如何管理tomcat

能够在tomcat上部署静态网站和动态网站

能够将nginx和tomcat整合并实现多实例

能够对tomcat进行简单的调优

能够使用压力测试工具

Tomcat介绍

Apache Tomcat最早是由Sun开发的,在1999年被捐献给ASF(Apache 软件基金会 Apache Software Foundation),隶属于Jakarta(雅加达)项目,现在已经独立为一个顶级项目。因为Tomcat 技术先进、性能稳定,同时也是一个免费的开放源代码的Web 应用服务器,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,被很多企业普遍使用,也是开发和调试JSP程序的首选。成为目前比较流行的Web 应用服务器。

官方网站:http://tomcat.apache.org/

tomcat的同类产品Resin 服务器

Resin是Caucho公司的产品,速度非常快。可以显示动态内容,也可以显示静态内容,但是用户数量少,参考文档也少,使用起来不太方便,一旦涉及到相关文件和内容的更新,系统会自动重新部署并重启。

Jetty 服务器

Jetty是一个纯粹的基于Java的web服务器,也是一个开源项目。架构简单,速度快,修改简单,但是对java的支持不如tomcat全面,

WebLogic 服务器

WebLogic 是BEA公司的产品,可进一步细分为 WebLogic Server、WebLogic Enterprise 和 WebLogic Portal 等系列,其中 WebLogic Server 的功能特别强大。WebLogic 支持企业级的、多层次的和完全分布式的Web应用,并且服务器的配置简单、界面友好。对于那些正在寻求能够提供Java平台所拥有的一切应用服务器的用户来说,WebLogic是一个十分理想的选择。但是不开源且收费

JBoss、WebSphere

Apache nginx tomcat比较

Apache

优点:模块多,功能全面,性能稳定,适合静态HTML

缺点:配置相对复杂,自身不支持动态页面

Nginx

优点:功能较多,负载均衡、反向代理等,速度比Apache快

缺点:轻量级web服务器,功能不如Apache全面

Tomcat

优点:能够处理动态请求,可以独立于Apache运行,支持JSP

缺点:对静态内容和大文件的支持有所欠缺

Apache是用C写的,Nigix是用C写的,Tomcat是用Java写的。Tomcat是Apache的拓展,更实质的说是Java应用服务器,用于处理JSP后台语言开发的应用,主要用于处理JSP动态网页。Tomcat 服务器是一个免费的开放源代码的Web 应用服务器(主要用于解析servlet/JSP,同时具备http服务),单纯的Tomcat性能有限,在很多地方表现有欠缺,如活动连接支持、静态内容、大文件和HTTPS等,因此多数都是Apache+Tomcat+JavaSDK的集成。严格的来说,Apache/Nginx 应该叫做「HTTP Server」;而 Tomcat 则是一个「Application Server」,或者更准确的来说,是一个「Servlet/JSP」应用的容器(Ruby/Python 等其他语言开发的应用也无法直接运行在 Tomcat 上)。

安装部署Linux部署tomcat

下载软件包

tomcat:https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.31/bin/apache-tomcat-9.0.31.zip

jdk:https://www.oracle.com/java/technologies/javase-downloads.html

如何想使用tomcat9的话,官方要求JRE的版本必须是8以上的,所以在安装之前,我们需要确认一下本机的版本,如果满足需求的话可以直接安装tomcat

[root@manage01 ~]# java -versionbash: java: 未找到命令...文件搜索失败: Cannot update read-only repo#系统提示没有找到命令,意味着没有安装相关软件包,所以我们要安装[root@manage01 ~]# rpm -ivh jdk-13.0.2_linux-x64_bin.rpm 警告:jdk-13.0.2_linux-x64_bin.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID ec551f03: NOKEYVerifying... ################################# [100%]准备中... ################################# [100%]正在升级/安装...1:jdk-13.0.2-2000:13.0.2-ga ################################# [100%]安装完成后再次查看[root@manage01 ~]# java -versionjava version "13.0.2" 2020-01-14Java(TM) SE Runtime Environment (build 13.0.2+8)#java的运行环境,也叫jreJava HotSpot(TM) 64-Bit Server VM (build 13.0.2+8, mixed mode, sharing) #JVM java的虚拟机,可以使Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的字节码就可以了,这样就可以在多种平台上不加修改地运行。很多语言都采用了这种类似的思路,才使得他们具有可移植性,比如说python安装tomcat我们可以看到tomcat软件包的名称包含有apache字样,原因很简单,它是由apache资助的项目[root@manage01 ~]# unzip apache-tomcat-9.0.31.zip -d /opt/[root@manage01 ~]# cd /opt/[root@manage01 opt]# mv apache-tomcat-9.0.31 tomcat1解压完成,改个名就可以使用了,因为tomcat是一个二进制包,什么意思呢?就类似于我们下载游戏的时候的硬盘版,什么是硬盘版?解压就能玩,所以这个tomcat我们就压之后就可以使用了,不需要安装。[root@manage01 bin]# pwd/opt/tomcat1/bin[root@manage01 bin]# sh startup.sh Cannot find ./catalina.shThe file is absent or does not have execute permissionThis file is needed to run this program启动tomcat[root@manage01 bin]# chmod +x catalina.sh [root@manage01 bin]# sh startup.sh Using CATALINA_BASE: /opt/tomcat1Using CATALINA_HOME: /opt/tomcat1Using CATALINA_TMPDIR: /opt/tomcat1/tempUsing JRE_HOME: /usrUsing CLASSPATH: /opt/tomcat1/bin/bootstrap.jar:/opt/tomcat1/bin/tomcat-juli.jarTomcat started.[root@manage01 webapps]# netstat -antp | grep javatcp6 0 0 127.0.0.1:8005 :::* LISTEN 46987/java tcp6 0 0 :::8080 :::* LISTEN 46987/java tomcat的两个端口8005 是关闭tomcat使用的端口,可以使用telnet serverip 8005 然后输入大写的SHUTDOWN关闭tomcat,所以建议更改端口 或者把引号中了命令改成不容易记忆的,个人推荐改命令,因为改端口没有告诉负责网络安全的同事就会给你屏蔽掉………8080 连接端口8009 AJP协议使用的端口,tomcat的优势是处理jsp页面 但是对于图片,静态页面处理能力特别差,相对于apache来说,那么这个时候怎么办 做个分流 jsp页面由tomcat完成,静态的页面 图片由AJP来完成,AJP是定向包协议 使用二进制格式来传输可读性文本,在server.xml配置文件中默认不生效

注意tomcat的访问端口是8080

提示:如果之前系统中安装过java环境的话,可能会出现即便安装完成新的jdk之后,使用java -version命令所查询的结果依然是老版本的,这个问题是由于环境变量引起的,所以需要修改环境变量设置文件[root@manage01 ~]# vim /root/.bash_profile #####javaJAVA_HOME=/usr/java/jdk-13.0.2#对应自己安装的版本PATH=$JAVA_HOME/bin:$PATH:$HOME/binCLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jarexport PATH JAVA_HOME CLASSPATH CATALINA_HOMEWindows部署tomcat

tomcat:https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.31/bin/apache-tomcat-9.0.31-windows-x64.zip

jdk:https://www.oracle.com/java/technologies/javase-jdk11-downloads.html

安装jdk11

如果使用java -version看到的还是以前的提示,重启一下系统

安装tomcat

解压tomcat的压缩包并进入到bin目录下

server status 查看服务器的状态,包括linux主机的信息,tomcat的版本信息,资源使用情况等

manager app 管理网站

host manager 虚拟主机的管理

发布静态页面目录说明

tomcat主目录

bin:命令,存放不同平台上启动或关闭的脚本BUILDING.txt&RUNNING.txt:使用文档,告诉用户如何搭建conf:各种全局配置文件,最主要的是server.xml和web.xml CONTRIBUTING.md:捐赠lib:tomcat需要用到的库,主要是各种jar包LICENSE:许可logs:存放tomcat的日志NOTICE:通知信息README.md:读我文档RELEASE-NOTES:版本信息temp:临时文件 webapps:tomcat的web发布目录,类似于nginx或者apache的html目录 work:tomcat的工作目录,存放的是jsp编译后产生的.class文件及.java文件。清空work目录,然后重启tomcat,可以达到清除缓存的作用。

bin目录

bin目录下的文件主要有两类,一个是Linux使用的.sh结尾的文件,另外一个是windows使用的.bat结尾的文件,

catalina tomcat的设置脚本,也可以启动&关闭tomcat

[root@manage01 bin]# sh catalina.sh helpUsing CATALINA_BASE: /opt/tomcat1Using CATALINA_HOME: /opt/tomcat1Using CATALINA_TMPDIR: /opt/tomcat1/tempUsing JRE_HOME: /usrUsing CLASSPATH: /opt/tomcat1/bin/bootstrap.jar:/opt/tomcat1/bin/tomcat-juli.jarUsage: catalina.sh ( commands ... )commands:debug Start Catalina in a debuggerdebug -security Debug Catalina with a security managerjpda start Start Catalina under JPDA debuggerrun Start Catalina in the current windowrun -security Start in the current window with security managerstart Start Catalina in a separate windowstart -security Start in a separate window with security managerstop Stop Catalina, waiting up to 5 seconds for the process to endstop n Stop Catalina, waiting up to n seconds for the process to endstop -force Stop Catalina, wait up to 5 seconds and then use kill -KILL if still runningstop n -force Stop Catalina, wait up to n seconds and then use kill -KILL if still runningconfigtest Run a basic syntax check on server.xml - check exit code for resultversion What version of tomcat are you running?Note: Waiting for the process to end and use of the -force option require that $CATALINA_PID is defined[root@manage01 bin]# sh catalina.sh stop[root@manage01 bin]# sh catalina.sh helpstartup 启动脚本shutdown 关闭脚本

conf目录

这个目录下主要存放的是与tomcat设置相关的文件,常用的配置文件主要包含server.xml 可以设置端口号、设置域名或IP、默认加载的项目、请求编码 web.xml 可以设置tomcat支持的文件类型 context.xml 可以用来配置数据源之类的 tomcat-users.xml 用来配置管理tomcat的用户与权限 Catalina 此目录下可以设置默认加载的项目

webapps目录

ROOT tomcat默认的页面docs 使用说明文档examples 例子--tomcat首页中的examples按钮对应的内容host-manager 首页Host Manager按钮对应的内容manager 首页 Manager App按钮对应的内容

tomcat相关配置文件简介

server.xml

元素名

属性

解释

server

port

指定一个端口,这个端口负责监听关闭tomcat的请求

shutdown

指定向端口发送的命令字符串

service

name

指定service的名字

Connector(表示客户端和service之间的连接)

port

指定服务器端要创建的端口号,并在这个断口监听来自客户端的请求

minProcessors

服务器启动时创建的处理请求的线程数

maxProcessors

最大可以创建的处理请求的线程数

enableLookups

如果为true,则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名,若为false则不进行DNS查询,而是返回其ip地址

redirectPort

指定服务器正在处理http请求时收到了一个SSL传输请求后重定向的端口号

acceptCount

指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理

connectionTimeout

指定超时的时间数(以毫秒为单位)

Engine(表示指定service中的请求处理引擎,接收和处理来自Connector的请求)

defaultHost

指定缺省的处理请求的主机名,它至少与其中的一个host元素的name属性值是一样的

Context(表示一个web应用程序,通常为WAR文件,关于WAR的具体信息见servlet规范)

docBase

应用程序的路径或者是WAR文件存放的路径

path

表示此web应用程序的url的前缀,这样请求的url为http://localhost:8080/path/

reloadable

这个属性非常重要,如果为true,则tomcat会自动检测应用程序的/WEB-INF/lib 和/WEB-INF/classes目录的变化,自动装载新的应用程序,我们可以在不重起tomcat的情况下改变应用程序

host(表示一个虚拟主机)

name

指定主机名

appBase

应用程序基本目录,即存放应用程序的目录

unpackWARs

如果为true,则tomcat会自动将WAR文件解压,否则不解压,直接从WAR文件中运行应用程序

Logger(表示日志,调试和错误信息)

className

指定logger使用的类名,此类必须实现org.apache.catalina.Logger 接口

prefix

指定log文件的前缀

suffix

指定log文件的后缀

timestamp

如果为true,则log文件名中要加入时间,如下例:localhost_log.004-mm-dd.txt

Realm(表示存放用户名,密码及role的数据库)

className

指定Realm使用的类名,此类必须实现org.apache.catalina.Realm接口

Valve(功能与Logger差不多,其prefix和suffix属性解释和Logger 中的一样)

className

指定Valve使用的类名,如用org.apache.catalina.valves.AccessLogValve类可以记录应用程序的访问信息

directory

指定log文件存放的位置

pattern

有两个值,common方式记录远程主机名或ip地址,用户名,日期,第一行请求的字符串,HTTP响应代码,发送的字节数。combined方式比common方式记录的值更多

web.xml

默认Web应用的首页文件的设置

报错文件的设置

session 会话过期时间的设置,单位是分钟

servlet的设置(Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。)

tomcat-users.xml

管理用户配置文件

rolename 定义角色,不同的角色管理权限不同,相当于组

manager-gui 允许访问html接口(即URL路径为/manager/html/*)manager-script 允许访问纯文本接口(即URL路径为/manager/text/*)manager-jmx 允许访问JMX代理接口(即URL路径为/manager/jmxproxy/*)manager-status 允许访问Tomcat只读状态页面(即URL路径为/manager/status/*)admin-gui 允许访问html管理界面admin-script 允许访问文本管理界面

user 定义用户名

username 定义用户名password 设置密码roles 属于那些角色/组

登录管理tomcat

在提示登录的界面点击取消,会看到提示

[root@manage01 ~]# vim /opt/tomcat1/conf/tomcat-users.xml

设置完成之后重启tomcat就可以登录后台管理页面了,其中在manager app中主要管理的是网站是否发布的操作,start=发布网站

stop=停止发布网站,reload=重新加载,undeploy=卸载/删除网站(慎用),expire session=会话过期时间

与war文件部署相关的设置,包括定义war文件存放的位置,和上传war文件

war是一个可以直接运行的web模块,通常用于网站,打包部署。以Tomcat来说,将war包放置在其\webapps\目录下,然后启动Tomcat,这个包就会自动解压,就相当于发布了。war包是Sun提出的一种web应用程序格式,与jar类似,是很多文件的压缩包。war包中的文件按照一定目录结构来组织。简单来说,war包是JavaWeb程序打的包,war包里面包括写的代码编译成的class文件,依赖的包,配置文件,所有的网站页面,包括html,jsp等等。一个war包可以理解为是一个web项目,里面是项目的所有东西。

configuration 定义TLS(安全传输协议)配置文件

diagnostics 检查网站在启动,重新加载或卸载时,是否造成内存溢出,这个操作会触发垃圾回收机制,生产环境中慎用

TLS connector configuration diagnostics 加密诊断,可以帮助用户诊断加密是否有问题

firefox设置中文[root@manage01 ~]# dnf install ibus* -y

添加完整的中文环境后重启

重启完成为浏览器添加中文后重启浏览器

再次访问tomcat管理界面就会变成中文

发布静态页面[root@manage01 webapps]# pwd/opt/tomcat1/webapps[root@manage01 webapps]# mkdir test[root@manage01 webapps]# echo ‘‘ > test/index.jsp

使用浏览器访问http://ip:8080/test,每次刷新时间都会改变

发布动态页面

我们知道tomcat是用来发布jsp网站的,jsp的网站,页面漂亮还安全,上节课我们已经知道如何发布静态页面了,本节课我们一起来看一下如何发布动态页面,我们通过jpress一个使用java开发的建站软件来实现jsp页面

jpress下载地址:http://jpress.io/download

step1 准备jsp页面

[root@manage01 ~]# mv jpress-v3.2.1.war jpress.war[root@manage01 ~]# cp jpress.war /opt/tomcat1/webapps/#重启tomcat[root@manage01 ~]# cp jpress.war /opt/tomcat1/webapps/[root@manage01 ~]# sh /opt/tomcat1/bin/shutdown.sh [root@manage01 ~]# sh /opt/tomcat1/bin/startup.sh #重启之后tomcat会自己将这个war的压缩包解压,生成一个同名的目录

step2 准备数据库

[root@manage01 yum.repos.d]# dnf install mariadb mariadb-server -y[root@manage01 yum.repos.d]# systemctl restart mariadb.service [root@manage01 ~]# mysql -u root -pEnter password: MariaDB [(none)]> create database jpress charset utf8;MariaDB [(none)]> grant all on jpress.* to jpress@‘localhost‘ identified by ‘123456‘;

step3 安装jpress

tomcat多实例

tomcat是一个单进程多线程的软件,在很早之前,我们都认为这种模式挺好的,因为早些年的CPU都是单核的,但是现在都是多核心的CPU了,如果还是一个进程的话呢,就比较浪费CPU资源,所以本节课我们要讨论下如果多开几个tomcat,也就是我们本节课要实现的是tomcat的多实例,这样可以提高资源的利用率,在之前的课程中我们提到过tomcat有三个端口8005 8009 8080,其中8005是用来关闭tomcat的端口,8080是访问端口,8009是ajp协议使用的端口,如果我想在一台机器上开启多个tomcat的话,首先要保证的就是端口不能冲突,否则开不了。

step1 将之前部署好的tomcat复制一份

[root@manage01 webapps]# cd /opt/[root@manage01 opt]# lstomcat1[root@manage01 opt]# cp -r tomcat1 tomcat2[root@manage01 opt]# lstomcat1 tomcat2

step2 修改刚刚部署完成的tomcat的相关配置文件

[root@manage01 opt]# vim tomcat2/conf/server.xml #修改端口

step3 启动tomcat

[root@manage01 opt]# sh /opt/tomcat1/bin/startup.sh [root@manage01 opt]# sh /opt/tomcat2/bin/startup.sh [root@manage01 opt]# netstat -atnpActive Internet connections (servers and established)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp6 0 0 127.0.0.1:8005 :::* LISTEN 16801/java tcp6 0 0 127.0.0.1:8006 :::* tcp6 0 0 :::8080 :::* LISTEN 16801/java tcp6 0 0 :::8081 :::* LISTEN 17776/java

step4 打开浏览器访问测试

注意:如果是不同用户使用的话,考虑到安全方面的问题,记得修改tomcat的用户管理文件。[root@manage01 conf]# pwd/opt/tomcat2/conf[root@manage01 conf]# vim tomcat-users.xml nginx+tomcat

之前我们在访问的时候使用的都是类似http://serverip/test或者http://serverip/jpress这种字样的URL,使用起来比较麻烦,所以呢,我们可以将tomcat和nginx结合在一起

step1 调整tomcat1

[root@manage01 ~]# cd /opt/tomcat1/webapps/[root@manage01 webapps]# mv ROOT tomcat[root@manage01 webapps]# mv jpress ROOT

step2 调整tomcat2

[root@manage01 ~]# cd /opt/tomcat2/webapps/[root@manage01 webapps]# mv ROOT tomcat[root@manage01 webapps]# mv test ROOT使用rewrite实现

step1 部署nginx

[root@manage01 ~]# dnf install nginx -y

step2 调整nginx配置文件

[root@manage01 ~]# vim /etc/nginx/nginx.conf[root@manage01 ~]# sed -i ‘/#/d‘ /etc/nginx/nginx.conf[root@manage01 ~]# sed -i ‘/^$/d‘ /etc/nginx/nginx.confserver {listen 80;listen [::]:80;server_name www.a.com;location / {rewrite ^/$ http://127.0.0.1:8080/jpress break;}}server {listen 80;listen [::]:80;127.0.0.1server_name www.b.com;location / {rewrite ^/$ http://127.0.0.1:8081/test break;}}[root@manage01 ~]# systemctl restart nginx

step 3 修改测试机的hosts文件

[root@manage01 conf]# vim /etc/hosts192.168.98.200 www.a.com192.168.98.200 www.b.com

step4 打开浏览器直接访问域名测试

使用反向代理实现

调整nginx配置文件

user nginx;worker_processes auto;error_log /var/log/nginx/error.log;pid /run/nginx.pid;include /usr/share/nginx/modules/*.conf;events {worker_connections 1024;}http {log_format main ‘$remote_addr - $remote_user [$time_local] "$request" ‘‘$status $body_bytes_sent "$http_referer" ‘‘"$http_user_agent" "$http_x_forwarded_for"‘;access_log /var/log/nginx/access.log main;sendfile on;tcp_nopush on;tcp_nodelay on;keepalive_timeout 65;types_hash_max_size 2048;include /etc/nginx/mime.types;default_type application/octet-stream;include /etc/nginx/conf.d/*.conf;server {listen 80;listen [::]:80;server_name www.a.com;location / {proxy_pass http://127.0.0.1:8080;}}server {listen 80;listen [::]:80;server_name www.b.com;location / {proxy_pass http://127.0.0.1:8081;}}}tomcat调优

tomcat的优化可以提高网站的并发能力,体现个人的价值,tomcat在java项目中的使用率非常高,所以在生产环境对tomcat的优化也就变得非常必要了,一般情况下tomcat的优化主要从两个方面入手,一个是自身配置,另一个是tomcat所运行的jvm虚拟机的优化,优化的工作可以从安装完tomcat就开始着手

AJP优化

在前面的课程中我们提到了一个叫AJP的协议,同时我们也知道了这个AJP的作用,但是在生产环境中一般使用的是nginx+tomcat的架构,所以大多数时候用不到AJP协议,所以我们可以禁用它,而在我们的server.xml文件中这个AJP默认就是禁用的,如果是其它版本最好看一下

[root@manage01 conf]# vim /opt/tomcat1/conf/server.xml ###运行模式优化

tomcat的运行模式有3种:

bio

性能非常低下,没有经过任何优化处理和支持,适用于连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中,JDK1.4以前的唯一选择,但程序直观简单易理解。

nio

nio(new I/O),是Java SE 1.4及后续版本提供的一种新的I/O操作方式它拥有比传统I/O操作(bio)更好的并发运行性能。Tomcat9默认使用nio运行模式。适用于连接数目多且连接比较短(轻操作)的架构,比如聊天服务器,并发局限于应用中,编程比较复杂。AIO(NIO2)使用于连接数目多且连接比较长(重操作)的架构,比如相册服务器,充分调用OS参与并发操作,编程比较复杂,JDK7开始支持。

apr

安装起来最困难,但是从操作系统级别来解决异步的IO问题,大幅度的提高性能

进入tomcat的服务器状态页面查看默认的模式

如果默认使用的是bio模式

设置使用nio模式[root@manage01 logs]# vim /opt/tomcat1/conf/server.xmlapr

APR(Apache portable Run-time libraries,Apache可移植运行库)的目的如其名称一样,主要为上层的应用程序提供一个可以跨越多操作系统平台使用的底层支持接口库。可以大大地提高Tomcat对静态文件的处理性能。 也是在Tomcat上运行高并发应用的首选模式。

系统自带的软件包不是最新的,且缺少相关软件包,所以我们选择源码包安装

所需软件包

apr-1.7.0.tar.gz 主程序包 包含了通用开发组件

apr-iconv-1.2.2.tar.gz 用于实现iconv编码

apr-util-1.6.1.tar.gz 额外的开发组件

tomcat-native.tar.gz 关联tomcat和apr的组件

arp相关软件包下载 https://mirrors.cnnic.cn/apache/apr/

tomcat-native在tomcat安装目录的bin下

部署apr环境

step1 环境准备

[root@manage01 ~]# dnf install -y apr-devel openssl-devel gcc make expat-devel libtool

step2 安装apr主程序包

[root@manage01 ~]# tar fx apr-1.7.0.tar.gz [root@manage01 ~]# cd apr-1.7.0/[root@manage01 ~]# ./configure --prefix=/usr/local/apr[root@manage01 apr-1.7.0]# make -j4 && make install

step3 安装apr-iconv

[root@manage01 ~]# tar fx apr-iconv-1.2.2.tar.gz [root@manage01 ~]# cd apr-iconv-1.2.2/[root@manage01 ~]# ./configure --with-apr=/usr/local/apr --prefix=/usr/local/apr-iconv[root@manage01 apr-iconv-1.2.2]# make -j4 && make install

step4 安装apr-util

[root@manage01 ~]# tar fx apr-util-1.6.1.tar.gz [root@manage01 ~]# cd apr-util-1.6.1/[root@manage01 ~]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr --with-apr-iconv=/usr/local/apr-iconv/bin/apriconv[root@manage01 apr-util-1.6.1]# make -j4 && make install

step5 安装tomcat-native

[root@manage01 ~]# cd /opt/tomcat1/bin/[root@manage01 bin]# tar fx tomcat-native.tar.gz [root@manage01 bin]# cd tomcat-native-1.2.23-src/native[root@manage01 tomcat-native-1.2.23-src]# ./configure --with-apr=/usr/local/apr --with-java-home=/usr/java/jdk-13.0.2[root@manage01 tomcat-native-1.2.23-src]# make -j4 && make install

step5 修改并加载环境变量

[root@manage01 ~]# echo ‘export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/libexport LD_RUN_PATH=$LD_RUN_PATH:/usr/local/apr/lib‘ >> /etc/profile[root@manage01 ~]# source /etc/profile

step6 修改tomcat配置文件

[root@manage01 ~]# vim /opt/tomcat1/conf/server.xml protocol="org.apache.coyote.http11.Http11AprProtocol"connectionTimeout="20000"redirectPort="8443" />

step7 测试

#为了避免干扰先执行关闭[root@manage01 ~]# sh /opt/tomcat1/bin/shutdown.sh #测试[root@manage01 ~]# sh /opt/tomcat1/bin/catalina.sh run#如果没有问题可以看到14-Mar-2020 00:22:23.894 信息 [main] org.apache.coyote.AbstractProtocol.start 开始协议处理句柄["http-apr-8080"]

注意:如果非root用户启动失败,把apr环境变量在当前用户的.bash_profile中写一份[root@manage01 ~]# echo ‘export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/libexport LD_RUN_PATH=$LD_RUN_PATH:/usr/local/apr/lib‘ >> /root/.bash_profile[root@manage01 ~]# source /root/.bash_profile其它优化参数[root@manage01 logs]# vim /opt/tomcat1/conf/server.xml

•••展开全文