CentOS环境下Tomcat更新与升级策略
备份关键数据:
停止Tomcat服务后,备份整个Tomcat安装目录(如/usr/share/tomcat或/opt/tomcat)及配置文件(如/etc/tomcat)、web应用目录(webapps)、配置目录(conf),防止数据丢失。
示例命令:
sudo systemctl stop tomcat
sudo cp -r /usr/share/tomcat /usr/share/tomcat-backup
sudo cp -r /etc/tomcat /etc/tomcat-backup
sudo cp -r /usr/share/tomcat/webapps /webapps-backup
sudo cp -r /usr/share/tomcat/conf /conf-backup
检查兼容性:
确认新版本Tomcat与当前CentOS系统版本、Java环境(如OpenJDK 11/17)兼容,避免因环境不匹配导致启动失败。
下载新版本:
访问Tomcat官方网站(https://tomcat.apache.org/download-xx.cgi,xx为版本号),下载所需版本的二进制压缩包(如apache-tomcat-9.0.56.tar.gz)。
示例命令:
wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.56/bin/apache-tomcat-9.0.56.tar.gz
解压并替换旧版本:
将下载的压缩包解压到Tomcat安装目录(如/usr/share/),重命名旧版本目录(保留备份),将新版本目录重命名为原目录名。
示例命令:
sudo tar xvf 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(或~/.bashrc)中的CATALINA_HOME变量,确保指向新版本目录(如/usr/share/tomcat),并执行source /etc/profile使变量生效。/etc/systemd/system/tomcat.service(或/usr/lib/systemd/system/tomcat.service)中的CATALINA_HOME、CATALINA_BASE路径,确保与新版本目录一致,执行sudo systemctl daemon-reload重新加载服务配置。server.xml、context.xml等配置文件到新版本目录,覆盖默认配置(避免新版本配置丢失自定义设置)。启动Tomcat并验证:
启动Tomcat服务,检查状态是否为active (running),通过浏览器访问http://服务器IP:8080确认版本信息(如“Apache Tomcat/9.0.56”)。
示例命令:
sudo systemctl start tomcat
sudo systemctl status tomcat
curl http://localhost:8080
若已配置Tomcat的YUM仓库(如EPEL或Remi仓库),可通过yum命令简化更新流程:
sudo yum update
sudo yum update tomcat
sudo systemctl restart tomcat
/usr/share/tomcat/bin/versionLogger.sh
使用Ansible等自动化工具编写Playbook,实现批量更新。示例Playbook(update_tomcat.yml):
- name: Update Tomcat
hosts: tomcat_servers
become: yes
tasks:
- name: Stop Tomcat service
systemd:
name: tomcat
state: stopped
- name: Backup old Tomcat directory
copy:
src: /usr/share/tomcat
dest: /usr/share/tomcat-backup-{{ ansible_date_time.epoch }}
remote_src: yes
- name: Download new Tomcat version
get_url:
url: https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.56/bin/apache-tomcat-9.0.56.tar.gz
dest: /tmp/apache-tomcat-9.0.56.tar.gz
- name: Extract new Tomcat version
unarchive:
src: /tmp/apache-tomcat-9.0.56.tar.gz
dest: /usr/share/
remote_src: yes
- name: Rename new Tomcat directory
command: mv /usr/share/apache-tomcat-9.0.56 /usr/share/tomcat
- name: Start Tomcat service
systemd:
name: tomcat
state: started
执行命令:
ansible-playbook update_tomcat.yml
检查日志:
查看Tomcat日志(/usr/share/tomcat/logs/catalina.out),确认无启动错误或警告信息。
示例命令:
tail -f /usr/share/tomcat/logs/catalina.out
清理旧版本:
确认新版本运行正常后,删除旧版本备份目录(如tomcat-old、tomcat-backup)及下载的安装包,释放磁盘空间。
示例命令:
sudo rm -rf /usr/share/tomcat-old
sudo rm -rf /webapps-backup /conf-backup
sudo rm /tmp/apache-tomcat-9.0.56.tar.gz
root或tomcat用户)。server.xml中的port属性。java-11-openjdk),避免启动失败。