CentOS上Tomcat更新与升级流程
备份关键数据
升级前必须备份旧版本Tomcat的安装目录、配置文件及web应用数据,避免操作失误导致数据丢失。常用命令:
sudo cp -r /usr/share/tomcat /usr/share/tomcat-backup # 备份安装目录
sudo cp -r /etc/tomcat /etc/tomcat-backup # 备份配置文件
检查系统兼容性
确认新版本Tomcat与CentOS系统版本、Java环境(如OpenJDK 11/17)兼容。可通过Tomcat官方文档查看版本支持要求。
下载新版本Tomcat
访问Tomcat官方网站(https://tomcat.apache.org/download-xx.cgi,xx为版本号),下载所需版本的二进制发行版(如tar.gz格式)。例如:
wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.56/bin/apache-tomcat-9.0.56.tar.gz
升级前需停止正在运行的Tomcat服务,避免文件冲突:
sudo systemctl stop tomcat
# 验证服务状态(确保已停止)
sudo systemctl status tomcat
若旧版本是通过YUM仓库安装的,可先卸载旧版本(保留配置文件):
sudo yum remove tomcat # 卸载软件包但保留配置
若为手动安装,直接跳过此步。
解压新版本
将下载的压缩包解压到目标目录(如/usr/share/):
sudo tar -xvzf apache-tomcat-9.0.56.tar.gz -C /usr/share/
替换旧目录
将旧版本目录重命名(备份),将新版本目录重命名为原目录名:
sudo mv /usr/share/tomcat /usr/share/tomcat-old # 备份旧目录
sudo mv /usr/share/apache-tomcat-9.0.56 /usr/share/tomcat # 设置新目录
更新环境变量
编辑环境变量文件(如/etc/profile.d/tomcat.sh),确保CATALINA_HOME指向新目录:
echo "export CATALINA_HOME=/usr/share/tomcat" | sudo tee -a /etc/profile.d/tomcat.sh
source /etc/profile.d/tomcat.sh # 使变量生效
若已配置Tomcat的YUM仓库(如Remi仓库),可直接通过YUM更新:
sudo yum update tomcat # 更新到仓库最新版本
更新systemd服务文件
编辑Tomcat的systemd服务文件(如/etc/systemd/system/tomcat.service),确保路径指向新版本:
sudo nano /etc/systemd/system/tomcat.service
修改以下关键参数:
Environment="CATALINA_HOME=/usr/share/tomcat"
Environment="CATALINA_BASE=/usr/share/tomcat"
ExecStart=/usr/share/tomcat/bin/startup.sh
ExecStop=/usr/share/tomcat/bin/shutdown.sh
重载systemd并重启服务
sudo systemctl daemon-reload # 重载服务配置
sudo systemctl start tomcat # 启动新版本
sudo systemctl enable tomcat # 设置开机自启
检查服务状态
sudo systemctl status tomcat # 应显示“active (running)”
查看Tomcat版本
通过日志或命令确认版本:
curl http://localhost:8080 # 访问默认页面查看版本
sudo /usr/share/tomcat/bin/versionLogger.sh # 查看详细版本信息
测试功能
部署一个简单web应用,验证Tomcat功能是否正常。
确认新版本运行稳定后,删除旧版本备份文件:
sudo rm -rf /usr/share/tomcat-old # 删除旧目录备份
sudo rm -rf apache-tomcat-9.0.56.tar.gz # 删除下载的压缩包
conf/、webapps/等目录复制到新版本目录中。sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --reload