在Linux系统中升级Tomcat需谨慎操作,避免服务中断或数据丢失,以下是详细步骤及注意事项,升级前需明确当前Tomcat版本(通过$CATALINA_HOME/bin/version.sh
查看)及目标版本,确保目标版本与系统JDK兼容(如Tomcat 9需JDK 8+,Tomcat 10需JDK 11+)。
升级前准备工作
-
备份当前环境
备份Tomcat安装目录、配置文件、Web应用及日志,防止升级失败回滚。# 备份Tomcat目录(假设安装路径为/usr/local/tomcat) sudo cp -r /usr/local/tomcat /usr/local/tomcat_backup_$(date +%Y%m%d) # 备份配置文件(重点保留server.xml、web.xml、context.xml) sudo cp /usr/local/tomcat/conf/server.xml /usr/local/tomcat_backup_$(date +%Y%m%d)/conf/ # 备份Web应用(若需保留未发布的应用) sudo cp -r /usr/local/tomcat/webapps/* /path/to/backup/webapps/
-
检查依赖与权限
确认当前用户有Tomcat目录操作权限(通常为tomcat
用户或root
),并记录当前JDK路径($JAVA_HOME
),避免升级后JDK失效。
下载并解压新版本Tomcat
-
下载目标版本
从Tomcat官网(https://tomcat.apache.org/download-90.cgi)下载对应Linux版本的tar.gz包(如Tomcat 10.1.x),使用wget
命令:wget https://archive.apache.org/dist/tomcat/tomcat-10/v10.1.x/bin/apache-tomcat-10.1.x.tar.gz
-
校验文件完整性
下载后校验SHA512校验和,确保文件未损坏:sha512sum apache-tomcat-10.1.x.tar.gz
与官网提供的校验值对比一致后,继续解压。
-
解压并替换旧版本
# 解压到临时目录 sudo tar -zxvf apache-tomcat-10.1.x.tar.gz -C /tmp/ # 备份旧版本bin目录(保留启动脚本等自定义配置) sudo mv /usr/local/tomcat/bin /usr/local/tomcat/bin_backup # 复制新版本bin目录(保留旧版自定义脚本) sudo cp -r /tmp/apache-tomcat-10.1.x/bin /usr/local/tomcat/ # 替换核心目录(保留旧版webapps、conf、logs等) sudo rm -rf /usr/local/tomcat/server /usr/local/tomcat/lib /usr/local/tomcat/webapps/ROOT sudo cp -r /tmp/apache-tomcat-10.1.x/server /usr/local/tomcat/ sudo cp -r /tmp/apache-tomcat-10.1.x/lib /usr/local/tomcat/ sudo cp -r /tmp/apache-tomcat-10.1.x/webapps/ROOT /usr/local/tomcat/webapps/
配置文件与权限调整
-
迁移关键配置
将旧版的server.xml
、web.xml
、context.xml
等配置文件复制到新版本,避免覆盖默认配置:sudo cp /usr/local/tomcat_backup_$(date +%Y%m%d)/conf/server.xml /usr/local/tomcat/conf/ sudo cp /usr/local/tomcat_backup_$(date +%Y%m%d)/conf/web.xml /usr/local/tomcat/conf/
-
检查端口与路径
新版Tomcat可能修改默认端口(如8005、8080),需确认server.xml
中端口未被占用,并调整日志、临时文件路径(若旧版有自定义路径)。 -
设置目录权限
确保Tomcat运行用户(如tomcat
)对新目录有读写权限:sudo chown -R tomcat:tomcat /usr/local/tomcat sudo chmod -R 755 /usr/local/tomcat/bin/*.sh
启动与验证
-
停止旧服务并启动新版本
# 停止旧Tomcat(若通过服务管理器启动,需先停止服务) sudo /usr/local/tomcat/bin/shutdown.sh # 启动新Tomcat sudo /usr/local/tomcat/bin/startup.sh
-
检查启动日志
查看日志确认无报错:tail -f /usr/local/tomcat/logs/catalina.out
常见报错:JDK版本不兼容(需调整
JAVA_HOME
)、端口冲突(修改server.xml
中的端口)、权限不足(调整目录权限)。 -
功能验证
- 访问Tomcat默认页面:
http://服务器IP:8080
,确认页面正常显示。 - 部署旧版Web应用至
webapps
目录,检查功能是否正常(如数据库连接、文件上传等)。
- 访问Tomcat默认页面:
配置调整注意事项(表格)
配置项 | 注意事项 |
---|---|
JDK版本 | Tomcat 9需JDK 8+,Tomcat 10需JDK 11+,可通过java -version 确认 |
server.xml端口 | 检查<Connector> 的port (8080)、redirectPort (8443)、shutdown (8005)是否冲突 |
环境变量 | 确保CATALINA_HOME 、JAVA_HOME 指向新版本路径,可通过echo $CATALINA_HOME 验证 |
日志路径 | 若旧版自定义日志路径(如logs/catalina.log ),需在新版中调整logging.properties |
FAQs
Q1:升级后访问Tomcat首页404,如何解决?
A:首先检查webapps/ROOT
目录是否存在且权限正确(755),确认server.xml
中<Engine>
的appBase
路径是否指向webapps
,若部署了旧版应用,需检查应用是否因依赖库版本不兼容(如Servlet API)报错,可通过查看logs/catalina.out
定位具体错误。
Q2:升级后启动报错“Neither the JAVA_HOME nor the JRE_HOME environment variable is defined”,如何处理?
A:该错误表明Tomcat未找到JDK,需检查/usr/local/tomcat/bin/setenv.sh
(若无则新建)中是否正确配置JAVA_HOME
,或通过环境变量设置:
echo "export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64" >> /etc/profile source /etc/profile
重启Tomcat后再次启动,若仍报错,需确认JAVA_HOME
路径下的bin/java
文件存在(可通过ls $JAVA_HOME/bin/java
验证)。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/33254.html