Linux升级Tomcat版本,tomcat8.5.34升级到tomcat9.0.43 – 记忆角落

Linux升级Tomcat版本,tomcat8.5.34升级到tomcat9.0.43

/ 0评 / 2

Linux升级Tomcat版本,tomcat8.5.34升级到tomcat9.0.43

1.下载你要升级的Tomcat版本:

https://tomcat.apache.org/download-90.cgi

2.停止tomcat
ps -ef | grep tomcat 

kill -9 pid
3.备份旧的tomcat
cp -rf tomcat8.5.34 tomcat8.5.34_bak
4.解压新的tomcat
tar -zxvf apache-tomcat-9.0.43.tar.gz
删除原来的tomcat8.5.1
rm -rf tomcat8.5.34
重命名为:
mv apache-tomcat-9.0.43 tomcat8.5.34

注意:此时tomcat8.5.34就是新的了

5.把旧的server.xml移动到新的server.xml
cp tomcat8.5.34_bak/conf/server.xml tomcat8.5.34/conf/
6.把旧的webapps移动到新的webapps下

先删除新的webapps文件:

cd tomcat8.5.34/webapps
rm -rf *

移动:

cp -rp tomcat8.5.34_bak/webapps/* tomcat8.5.34/webapps/

修改了旧tomcat的某个文件,一定要复制或移动到新tomcat下:

cp tomcat8.5.34_bak/conf/catalina.sh tomcat8.5.34/conf/
7.遇到问题:
1.java.lang.IllegalArgumentException: The AJP Connector is configured with secretRequired="true" but the secret attribute is either null or "".

启动发现 Tomcat 长时间没办法启动,观察日志,发现如下错误信息:

08-Feb-2021 22:09:23.792 SEVERE [main] org.apache.catalina.util.LifecycleBase.handleSubClassException Failed to start component [Connector[AJP/1.3-8009]]
        org.apache.catalina.LifecycleException: Protocol handler start failed
                at org.apache.catalina.connector.Connector.startInternal(Connector.java:1038)
                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
                at org.apache.catalina.core.StandardService.startInternal(StandardService.java:438)
                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
                at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:930)
                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
                at org.apache.catalina.startup.Catalina.start(Catalina.java:633)
                at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
                at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                at java.base/java.lang.reflect.Method.invoke(Method.java:566)
                at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:343)
                at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:478)
        Caused by: java.lang.IllegalArgumentException: The AJP Connector is configured with secretRequired="true" but the secret attribute is either null or "". This combination is not valid.
                at org.apache.coyote.ajp.AbstractAjpProtocol.start(AbstractAjpProtocol.java:264)
                at org.apache.catalina.connector.Connector.startInternal(Connector.java:1035)
                ... 12 more

这个是由于在升级系统的时候,选择保留老版本的配置文件,这样就导致,如果 Tomcat 配置了通过 AJP 方式与Apache通信的情况下,会报告上面的错误信息。

新增 secretRequired 的目的是为了解决 AJP 端口暴露在公网的情况下,存在 AJP File Read/Inclusion in Apache Tomcat (CVE-2020-1938) and Undertow (CVE-2020-1745) 漏洞,由于 Tomcat AJP 协议设计上存在缺陷,攻击者通过 Tomcat AJP Connector 可以读取或包含 Tomcat 上所有 webapp 目录下的任意文件,例如可以读取 webapp 配置文件或源代码。此外在目标应用有文件上传功能的情况下,配合文件包含的利用还可以达到远程代码执行的危害。

连接方必须在连接的时候,传入正确的 secretRequired 才能与 Tomcat 通信,相当于通信需要的密码了。

解决办法:

修改 server.xml:

<Connector port="8009" protocol="AJP/1.3" address="127.0.0.1" redirectPort="8443" secretRequired=""/>

参考连接:

https://www.nuomiphp.com/eplan/82819.html

2.启动tomcat对比版本不对

解决:

到bin下的setclasspath.sh,在文件的开始处添加如下代码:

export JAVA_HOME=/usr/java/jdk1.8.0_112
export JRE_HOME=/usr/java/jdk1.8.0_112/jre

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注