针对tomcat [/usr/lib64:/lib64:/lib:/usr/lib]上找不到基于APR的Apache Tomcat本机库的处理方法

问题描述:

org.apache.catalina.core.AprLifecycleListener.lifecycleEvent 在java.library.path:[/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib]上找不到基于APR的Apache Tomcat本机库,该库允许在生产环境中获得最佳性能

环境centos7

解决方法:

一.需要下载Tomcat Native

地址:https://tomcat.apache.org/download-native.cgi

1.1 Source Distributions

Source Distributions(源码发行版)是‌包含源代码的包‌,需自行编译后才能使用;

1.2 Binary Distributions

Binary Distributions(二进制发行版)是‌已编译好的可直接运行的包‌,无需额外编译步骤。

二. 具体操作

2.1 下载源码版本

下载tar.gz

2.2 前置安装条件

只介绍通过下载离线安装包的方式进行安装(直接安装较为简单可自行查阅资料)

前置条件为apr-devel,openssl-devel

下面离线下载命令会自行下载相关依赖安装包

2.2.1 下载包和相关依赖(如果服务器已经有的依赖不下载)

yum install --downloadonly --downloaddir=/usr/local/RPM apr-devel
yum install --downloadonly --downloaddir=/usr/local/RPM openssl-devel

强制指定下载64位 (如果下载默认的报错提示需要64位才可以编译可以强制下载64位)

yumdownloader --destdir /usr/local/RPM2 --resolve --archlist=x86_64 apr-devel

2.2.2 下载包和相关依赖(包和所有依赖都下载)

yumdownloader --destdir /usr/local/RPM2 --resolve apr-devel
yumdownloader --destdir /usr/local/RPM2 --resolve openssl-devel

2.2.3 安装

验证是否已经安装过 (已安装)

ls -ls /usr/bin/openssl

(未安装)

ls -ls /usr/bin/apr-1-config 

安装需要的安装包

(会联网)

yum localinstall /usr/local/RPM2/*.rpm

不联网

yum --disablerepo=* localinstall /home/cuishuai/tc-tomcat_web/tomcat_ty/install_package/rpm/apr3/*.rpm (强制不联网)

不管依赖强制安装(进入rpm包路径下)

rpm -ivh *.rpm --force --nodeps

rpm -qa | grep apr(查询)

2.2.4 编译tomcat-native

前置条件:

查询服务器jdk路径

(1)

echo $JAVA_HOME 

若输出为空或报错,则说明未配置;若显示路径(如/usr/lib/jvm/java-11-openjdk),则已配置

如果未配置$JAVA_HOME则可通过以下命令查找JDK路径:

which java
ls -lrt /usr/bin/java
ls -lrt /etc/alternatives/java
readlink -f $(which java)

这些命令会返回Java可执行文件的真实路径(如/usr/lib/jvm/java-11-openjdk-amd64/bin/java),其父目录即为JAVA_HOME候选值

输入

$JAVA_HOME/bin/java -version

(2)开始配置编译环境

cd tomcat-native-2.0.9-src/native/

运行 

./configure \
  --with-apr=/usr/bin/apr-1-config \
  --with-java-home=/usr/jdk1.8.0_261 \
  --with-ssl=yes

如果出现报错:

configure: error: Found APR 1.4.8. You need version 1.7.0 or newer installed.

当前系统APR版本为1.4.8,而Tomcat Native 2.0.9要求至少1.7.0版本。版本太低导致

(3)升级APR

下载地址

https://apr.apache.org/download.cgi

输入:tar zxvf apr-1.7.6.tar.gz 解压

cd tar zxvf apr-1.7.6
./configure --prefix=/usr/local/source_code/apr 

****命令组成解析*****

  • ./configure
    源代码编译的配置脚本,用于检测系统环境(如编译器、依赖库等)并生成适配当前系统的Makefile。

  • --prefix=/usr/local/source_code/apr
    关键安装路径参数,指定软件所有文件的安装根目录为/usr/local/source_code/apr。效果包括:

    • 二进制文件安装到/usr/local/source_code/apr/bin

    • 库文件安装到/usr/local/source_code/apr/lib

    • 头文件安装到/usr/local/source_code/apr/include

结合之前编译APR和Tomcat Native的经历:

  • 该命令用于将新版APR 1.7.0安装到独立目录,避免覆盖系统默认的旧版APR 1.4.8。

  • 后续编译Tomcat Native时,需通过--with-apr=/usr/local/apr/bin/apr-1-config引用此路径。

路径选择的注意事项

路径类型

典型用途

用户案例中的意义

/usr/local/apr

自定义安装的软件

集中管理手动编译的APR组件

/usr

系统包管理器安装的软件

原有旧版APR的默认位置

继续编译发现openssl版本也低,但是升级的话可能会导致其他变动,最后决定降Tomcat Native版本为1.2.14

https://archive.apache.org/dist/tomcat/tomcat-connectors/native/1.2.12/source/

运行:

./configure \
  --with-apr=/usr/local/source_code/apr/bin/apr-1-config \
  --with-java-home=/usr/jdk1.8.0_261 \
  --with-ssl=/usr/include/openssl

成功如图

编译:

make && make install

验证:

ls /usr/local/apr/lib

拷贝:

cp /usr/local/apr/lib/libtcnative-1.so /usr/lib/

启动tomcat

成功

如果想禁用tomcat使用这个本地库就将/usr/lib/libtcnative-1.so 改名就行,tomcat就检测不到了

注:

如何查询服务指定版本(centso7)

方法一:使用openssl命令

直接运行以下命令查看OpenSSL的版本信息:

openssl version

该命令会输出OpenSSL的版本号,例如:OpenSSL 1.0.2k-fips 26 Jan 2017

方法二:查看安装的RPM包

通过RPM包管理器查看已安装的OpenSSL版本:

rpm -qa | grep openssl

或者更精确地查询:

rpm -q openssl

2010-8-11 18:24:13 org.apache.catalina.core.AprLifecycleListener lifecycleEvent 信息: The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: D:\Java\jre1.5.0_11\bin;.;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\ATI Technologies\ATI Control Panel;C:\Program Files\Microsoft SQL Server\80\Tools\BINN;D:\Java\jdk1.5.0_11\bin;D:\Tomcat 5.0\bin 2010-8-11 18:24:13 org.apache.coyote.http11.Http11BaseProtocol init 信息: Initializing Coyote HTTP/1.1 on http-8080 2010-8-11 18:24:13 org.apache.catalina.startup.Catalina load 信息: Initialization processed in 984 ms 2010-8-11 18:24:13 org.apache.catalina.core.StandardService start 信息: Starting service Catalina 2010-8-11 18:24:13 org.apache.catalina.core.StandardEngine start 信息: Starting Servlet Engine: Apache Tomcat/5.5.23 2010-8-11 18:24:13 org.apache.catalina.core.StandardHost start 信息: XML validation disabled 2010-8-11 18:24:13 org.apache.coyote.http11.Http11BaseProtocol start 信息: Starting Coyote HTTP/1.1 on http-8080 2010-8-11 18:24:13 org.apache.jk.common.ChannelSocket init 信息: JK: ajp13 listening on /0.0.0.0:8009 2010-8-11 18:24:13 org.apache.jk.server.JkMain start 信息: Jk running ID=0 time=0/187 config=null 2010-8-11 18:24:13 org.apache.catalina.storeconfig.StoreLoader load 信息: Find registry server-registry.xml at classpath resource 2010-8-11 18:24:13 org.apache.catalina.startup.Catalina start 信息: Server startup in 1235 ms 查了一下,需要一个apr支持,然后按提示去 下载 http://tomcat.heanet.ie/native/1.1.9/binaries/win32//tcnative-1.dll 将这个文件复制到C:WINDOWSsystem32下面 或者将这个文件放到Tomcat下的bin目录下 再启动tomcat,一切okay
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值