温馨提示×

如何更新Ubuntu上的Tomcat

小樊
41
2025-11-29 08:03:46
栏目: 智能运维

Ubuntu 上 Tomcat 的安全更新与升级指南

一、准备与版本确认

  • 确认当前运行的 Tomcat 版本Java 版本
    • 进入安装目录的 bin:执行 ./version.sh;或查看进程:ps -ef | grep tomcat
    • 查看 Java:java -version
  • 检查 Ubuntu 版本防火墙 状态:
    • lsb_release -asudo ufw status
  • 规划升级路径:
    • 小版本(如 9.0.x → 9.0.y)通常可直接替换二进制并保留配置与 war 包。
    • 跨大版本(如 8.5 → 9.0)需评估 Servlet/JSP 规范JDK 要求 差异,先在测试环境验证。
  • 准备回滚方案:备份 conf、webapps、logs、证书/密钥 等关键目录。

二、标准升级步骤(适用于小版本与跨大版本)

  • 备份与停止
    • 备份:sudo tar -zcvf /opt/backups/tomcat-$(date +%F).tar.gz /opt/tomcat
    • 停止:
      • 二进制方式:/opt/tomcat/latest/bin/shutdown.sh
      • 服务方式:sudo systemctl stop tomcat
  • 替换二进制(两种常用做法,二选一)
    • 符号链接法(推荐,便于下次升级)
      • 解压新版本到 /opt/tomcat/apache-tomcat-<新版本>(示例:9.0.93)
      • 调整权限:sudo chown -R tomcat: /opt/tomcat
      • 切换链接:sudo ln -sfn /opt/tomcat/apache-tomcat-<新版本> /opt/tomcat/latest
      • 脚本可执行:sudo chmod +x /opt/tomcat/latest/bin/*.sh
    • 重命名替换法
      • 重命名旧目录:sudo mv /opt/tomcat /opt/tomcat-old
      • 解压新版本到 /opt/tomcat
      • 复制配置与业务:cp -R /opt/tomcat-old/conf /opt/tomcat/confcp -R /opt/tomcat-old/webapps /opt/tomcat/webapps
  • 启动与验证
    • 启动:sudo systemctl start tomcat/opt/tomcat/latest/bin/startup.sh
    • 查看日志:tail -f /opt/tomcat/latest/logs/catalina.out
    • 访问应用与 /manager/status,确认版本:/opt/tomcat/latest/bin/version.sh
  • 可选安全加固
    • 删除默认应用:docs、examples、manager、host-manager(如不需要远程管理)。

三、作为系统服务运行时的注意事项

  • 使用 systemd 管理时,确保服务文件中的 Environment 指向正确的 CATALINA_HOME/CATALINA_BASE(如使用符号链接,应指向 /opt/tomcat/latest),示例关键项:
    • Environment="CATALINA_HOME=/opt/tomcat/latest"
    • Environment="CATALINA_BASE=/opt/tomcat/latest"
    • ExecStart=/opt/tomcat/latest/bin/startup.sh
    • ExecStop=/opt/tomcat/latest/bin/shutdown.sh
    • User=tomcatGroup=tomcat
  • 变更后执行:sudo systemctl daemon-reload && sudo systemctl restart tomcat
  • 如需开机自启:sudo systemctl enable tomcat

四、回滚与常见问题处理

  • 快速回滚(符号链接法)
    • 停止服务:sudo systemctl stop tomcat
    • 切换链接:sudo ln -sfn /opt/tomcat/apache-tomcat-<旧版本> /opt/tomcat/latest
    • 启动:sudo systemctl start tomcat
  • 快速回滚(重命名替换法)
    • 停止新版本后删除新目录,恢复旧目录:sudo mv /opt/tomcat-old /opt/tomcat
  • 常见问题
    • 端口占用:sudo ss -tulpen | grep 8080,结束占用进程后再启动
    • 权限问题:确保 tomcat 用户对 /opt/tomcat 及子目录拥有所有权,且 bin/*.sh 具可执行权限
    • 启动失败:查看 catalina.outlocalhost.<日期>.log,重点检查 server.xml 语法、JDBC 驱动、JNDI、内存参数
    • 管理应用不可达:若删除 manager/host-manager,将无法使用其页面;如需保留,请仅在内网限制访问并加固账号。

0