Tomcat 企业级运维实战系列(二):Tomcat 系统化管理与应用部署

Tomcat 企业级运维实战系列(二):Tomcat 系统化管理与应用部署

  • [一:systemctl 化管理](#一:systemctl 化管理)
    • 1)流程
    • [2)案例:将二进制安装的 `tomcat` 转换为 `systemctl` 管理](#2)案例:将二进制安装的 tomcat 转换为 systemctl 管理)
  • [二:运行 Java 代码](#二:运行 Java 代码)
    • 1)概述
    • [2)案例一:war 包](#2)案例一:war 包)
    • [3)案例二:jar 包](#3)案例二:jar 包)
  • [三:Tomcat 管理端](#三:Tomcat 管理端)
  • 总结

🚀 Tomcat 系列文章导航

本系列系统讲解 Linux 环境下 Apache Tomcat 的部署、配置、管理与优化,并最终带你完成 企业级前后端分离项目上线。无论你是初学者还是想进阶的运维人员,这份路线图都能帮你快速构建完整的知识体系。
⚠️ 该系列所有涉及的软件包和项目都可以私信博主免费获取


一:systemctl 化管理

⚠️ 通过配置实现对通过二进制安装或编译安装的软件进行 systemctl 管理服务,承接第一部分博客二进制安装的JDK

1)流程

  1. 确认服务安装路径
  2. 创建专用用户(可选,安全推荐)
  3. 新建 systemctl unit 文件
  4. 重新加载 systemctl 配置

2)案例:将二进制安装的 tomcat 转换为 systemctl 管理

  1. 确认服务安装路径

  2. 创建专用用户

    bash 复制代码
    [root@web01 ~]# useradd -Ms /sbin/nologin tomcat
  3. 设置服务目录权限所属

    bash 复制代码
    [root@web01 ~]# chown -R tomcat:tomcat /opt/module/tomcat-8.5.87
  4. 新建 tomcat.service 文件

    [Unit]

    配置项 含义
    [Unit] 描述服务的基本信息、依赖关系(决定服务启动顺序)。
    Description 服务的说明文字,仅用于注释或 systemctl status 时显示。
    After 指定本服务要在某些目标或服务之后启动(只影响顺序,不代表依赖)

    [Service]

    配置项 含义
    [Service] 定义服务的启动、停止、重启方式,是 systemd 单元文件的核心部分。
    Type 指定服务类型:simple(默认,前台进程)、forking(后台进程)、notify(进程主动通知 ready)。
    ExecStart 服务启动时执行的命令。
    ExecStop 服务停止时执行的命令。
    ExecReload 服务重载(不重启整个进程)时执行的命令。
    EnvironmentFile 指定存放环境变量的文件路径,适用于二进制或编译安装的程序。

    [Install]

    配置项 含义
    [Install] 定义服务在何种运行级别下启用,一般内容比较固定。
    WantedBy=multi-user.target 指定在多用户模式(相当于传统运行级别 3)下启用,通常用于服务器环境。
    bash 复制代码
    [root@web01 ~]# vim /usr/lib/systemd/system/tomcat.service
    bash 复制代码
    [Unit]
    Description=Tomcat java web container
    After=network.target
    
    [Service]
    Type=forking
    
    # 设置环境变量(如 JAVA_HOME 或其他依赖)
    Environment=JAVA_HOME=/opt/module/jdk1.8.0_212
    
    # 指定启动与关闭脚本
    ExecStart=/opt/module/tomcat-8.5.87/bin/startup.sh
    ExecStop=/opt/module/tomcat-8.5.87/bin/shutdown.sh
    
    # 运行身份(推荐非 root)
    User=tomcat
    Group=tomcat
    
    [Install]
    WantedBy=multi-user.target
  5. 重新加载 systemctl 配置

    bash 复制代码
    [root@web01 ~]# systemctl daemon-reload
  6. 启动服务


二:运行 Java 代码

1)概述

❓为什么源代码不能直接运行?

  • Java 源代码(.java 文件) 只是文本文件,需要先通过 编译 转换为字节码(.class 文件),再打包成 war 包jar 包,才能在对应环境中运行。

常见 Java 软件包形式

软件包类型 运行方式 说明 应用场景
WAR 包 放置在 Java 动态服务器 (如 Tomcat)的 webapps/ 目录下,Tomcat 会自动解压、加载、运行 适用于 Web 应用,功能较复杂 Web 系统、企业应用
JAR 包 不依赖 Tomcat 等容器,直接使用命令运行:java -jar xxx.jar 只需 JDK 环境即可运行 独立工具类应用、微服务、小型项目

2)案例一:war 包

需求:运行 memtest.war 包案例,放到 webapps 目录,然后访问即可

  1. 上传 war

    bash 复制代码
    [root@web01 software]# rz
  2. 移动 war 包到 webapps 目录下

    bash 复制代码
    [root@web01 ~]# mv /opt/software/memtest.war /opt/module/tomcat-8.5.87/webapps/
  3. 浏览器访问 http://192.168.2.104:8080/memtest/meminfo.jsp

3)案例二:jar 包

需求:运行指定的jar包

  1. 上传 jar

    bash 复制代码
    [root@web01 software]# rz
  2. 创建项目目录

    bash 复制代码
    [root@web01 ~]# mkdir /opt/module/ngxweb
  3. 执行 jar 包,后台运行

    • -Dfile.encoding=UTF-8-D 用来定义 JVM 系统属性file.encoding=UTF-8 表示运行时使用 UTF-8 编码,避免中文乱码问题。

    • --server.port=8848 :指定程序运行的 HTTP 服务端口号8848

    • -project.home=/opt/module/ngxweb/ :指定应用的 工作目录项目根目录

    bash 复制代码
    [root@web01 ~]# nohup java -jar -Dfile.encoding=UTF-8 /opt/software/nginxWebUI-3.4.0.jar --server.port=8848 --project.home=/opt/module/ngxweb/ &> /dev/null &
  4. 浏览器访问 http://192.168.2.104:8848/adminPage/login

三:Tomcat 管理端

1)概述

Tomcat 管理端:通过 Web 页面管理、查看 Tomcat 信息。

使用场景:调优或调试时临时开启,生产环境中通常关闭。

访问入口 :默认只允许 127.0.0.1 访问

2)开启管理端功能

  1. 修改配置文件 tomcat-users.xml

    设置了用户 tomcat,拥有 manager-guiadmin-gui 权限。

    bash 复制代码
    [root@web01 ~]# vim /opt/moduletomcat-8.5.87/conf/tomcat-users.xml
    bash 复制代码
    <role rolename="manager-gui"/>
    <role rolename="admin-gui"/>
    <user username="tomcat" password="tomcat" roles="manager-gui,admin-gui"/>
  2. 重启 Tomcat

    bash 复制代码
    [root@web01 ~]# systemctl restart tomcat
  3. 本地访问

    -u:指定用户名和密码

    bash 复制代码
    [root@web01 ~]# curl -u tomcat:tomcat http://127.0.0.1:8080/manager/status
  4. 修改访问限制代码 (默认只允许 127.0.0.1 访问)

    👉 实际效果:把文件中写死的 127(通常是 127.0.0.1 限制本地访问)替换成 \d+,从而允许匹配 任意数字 IP 地址

    bash 复制代码
    [root@web01 tomcat-8.5.87]# sed -i 's#127#\\d+#g' \
    webapps/host-manager/META-INF/context.xml \
    webapps/host-manager/WEB-INF/manager.xml \
    webapps/manager/META-INF/context.xml
  5. 远程访问


总结

📌 本节重点回顾

  • systemctl 化管理

    • 二进制安装的软件也能通过自定义 systemd unit 文件纳入 systemctl 管理。

    • 流程:确认路径 → 创建用户 → 编写 unit 文件 → systemctl daemon-reload → 启动服务。

  • 运行 Java 代码

    • WAR 包:放入 Tomcat webapps/ 目录,自动解压并运行,适合 Web 应用。

    • JAR 包:直接用 java -jar 运行,可通过 nohup 后台执行,适合独立微服务/工具类应用。

  • Tomcat 管理端

    • 默认只允许本机访问,生产环境建议关闭。

    • 开启方式:配置 tomcat-users.xml → 添加用户和权限 → 修改访问限制规则。

    • 常用于调试、监控或临时管理。

至此,你已经掌握了 如何将 Tomcat 纳入系统服务管理、如何运行常见 Java 包、以及如何启用 Tomcat 管理端。

下一节我们将深入 server.xml 配置解析与集群化部署,带你了解 Tomcat 的核心配置与企业级架构方案。