温馨提示×

如何在Ubuntu上使用Tomcat管理应用

小樊
43
2025-11-23 09:42:05
栏目: 智能运维

在 Ubuntu 上使用 Tomcat 管理应用的实用指南

一 环境准备与安装

  • 安装 Java(推荐 OpenJDK 11OpenJDK 8):
    • 更新索引并安装:sudo apt update && sudo apt install openjdk-11-jdk
    • 验证版本:java -version
  • 创建专用系统用户(提升安全性):
    • sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat
  • 下载并解压 Tomcat 9(示例到 /opt/tomcat):
    • VERSION=9.0.99
    • wget https://dlcdn.apache.org/tomcat/tomcat-9/v${VERSION}/bin/apache-tomcat-${VERSION}.tar.gz -P /tmp
    • sudo tar -xf /tmp/apache-tomcat-${VERSION}.tar.gz -C /opt/
    • sudo mv /opt/apache-tomcat-${VERSION} /opt/tomcat
  • 设置目录权限与可执行脚本:
    • sudo chown -R tomcat: /opt/tomcat
    • sudo sh -c 'chmod +x /opt/tomcat/bin/*.sh'
  • 配置环境变量(两种方式,二选一):
    • 全局:echo 'export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64' | sudo tee -a /etc/environment
    • 或放到 Tomcat:echo 'export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64' | sudo tee /opt/tomcat/bin/setenv.sh && sudo chmod +x /opt/tomcat/bin/setenv.sh
  • 开放访问端口(如 8080):
    • sudo ufw allow 8080/tcp
    • 云服务器需同时在安全组放行 8080

二 以 SystemD 管理 Tomcat 服务

  • 创建服务单元文件:sudo nano /etc/systemd/system/tomcat.service
  • 示例内容(按需修改 JAVA_HOME 与路径):
    [Unit]
    Description=Tomcat 9 servlet container
    After=network.target
    
    [Service]
    Type=forking
    Environment=JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
    Environment=CATALINA_HOME=/opt/tomcat
    Environment=CATALINA_BASE=/opt/tomcat
    Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
    Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/urandom'
    ExecStart=/opt/tomcat/bin/startup.sh
    ExecStop=/opt/tomcat/bin/shutdown.sh
    User=tomcat
    Group=tomcat
    UMask=0007
    RestartSec=10
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    
  • 启用并启动服务:
    • sudo systemctl daemon-reload
    • sudo systemctl enable --now tomcat
    • 常用:sudo systemctl status tomcatsudo systemctl restart tomcatsudo journalctl -u tomcat -f

三 配置管理界面与访问控制

  • 启用管理用户(编辑 /opt/tomcat/conf/tomcat-users.xml,在 <tomcat-users> 内添加):
    <role rolename="manager-gui"/>
    <role rolename="admin-gui"/>
    <user username="admin" password="StrongPass!2025" roles="manager-gui,admin-gui"/>
    
  • 允许远程访问管理页面(按需选择其一):
    • 允许所有主机访问(测试环境):
      • 注释或删除 /opt/tomcat/webapps/manager/META-INF/context.xml/opt/tomcat/webapps/host-manager/META-INF/context.xml 中的:
        <Valve className="org.apache.catalina.valves.RemoteAddrValve"
               allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
        
    • 仅允许指定网段或公网 IP(生产环境推荐):
      <Valve className="org.apache.catalina.valves.RemoteAddrValve"
             allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|203\.0\.113\.\d+|你的公网IP" />
      
  • 重启生效:sudo systemctl restart tomcat
  • 访问地址:
    • 主页:http://<服务器IP>:8080
    • 管理应用:http://<服务器IP>:8080/manager/html
    • 虚拟主机管理:http://<服务器IP>:8080/host-manager/html
  • 登录凭据为上面创建的 tomcat-users.xml 用户。

四 部署与日常运维

  • 部署方式
    • 管理界面上传:登录 /manager/html,使用 WAR 文件进行 Deploy、Start、Stop、Reload、Undeploy。
    • 自动部署:将 WAR 放入 /opt/tomcat/webapps,Tomcat 会自动解压并部署;删除 WAR 或目录可卸载应用。
    • 修改端口(可选):编辑 /opt/tomcat/conf/server.xml 的 Connector 端口(默认 8080),如改为 8081
      <Connector port="8081" protocol="HTTP/1.1"
                 connectionTimeout="20000" redirectPort="8443" />
      
  • 常用运维
    • 查看日志:sudo tail -f /opt/tomcat/logs/catalina.out
    • 热部署与回滚:优先使用 Manager 的 Reload/Undeploy,避免直接替换目录导致会话丢失。
    • JVM 调优:在 setenv.sh 或 systemd 的 CATALINA_OPTS 中设置堆与 GC,例如:
      • -Xms512M -Xmx1024M -server -XX:+UseParallelGC
  • Spring Boot 打成 WAR 部署要点
    • pom.xml 设置 <packaging>war</packaging>
    • 启动类继承 SpringBootServletInitializer 并重写 configure 方法,便于外置 Tomcat 部署。

五 安全加固建议

  • 使用最小权限的系统用户 tomcat 运行服务,禁止 root 直接运行。
  • 管理界面仅在内网或跳板机可达;生产环境务必限制 RemoteAddrValveallow 列表,不要开放为 ^.*$
  • 强口令策略:为 manager-gui/admin-gui 设置复杂密码,并定期更换。
  • 升级与补丁:关注 Tomcat 9JDK 的安全更新,及时升级。
  • 启用 HTTPS:在 server.xml 配置 Connector 8443 与证书,强制管理端与公网访问走 HTTPS

0