Tomcat 企业级运维实战系列(三):Tomcat 配置解析与集群化部署

Tomcat 企业级运维实战系列(三):Tomcat 配置解析与集群化部署

  • 一: `server.xml` 配置文件
    • 1)`Server` 节点
    • 2)`Listener` 节点
    • 3)`GlobalNamingResources` 节点
    • 4)`Service` 节点
    • 5)`Connector` 节点
    • 6)`Engine` 节点
    • 7)`Host` 节点
  • 二:端口
    • 1)**8005:关闭端口(Shutdown Port)**
    • 2)**8080:HTTP 端口**
    • 3)**8443:HTTPS 端口**
    • 4)**8009:AJP 端口**
  • 三:规范 tomcat 访问日志格式
  • 四:部署 `zrlog` 应用
    • 1)环境准备
    • 2)部署 `MySQL`
    • 3)部署 `Tomcat`
    • 4)部署 `Nginx`
    • 5)**访问**
  • 五:Tomcat + Nginx 动静分离
    • 1)概述
    • 2)部署
  • 六:Tomcat + HTTPS
    • 1)概述
    • 2)部署
  • 七:Tomcat 多实例
    • 1)概述
    • 2)部署
  • 总结

🚀 Tomcat 系列文章导航

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


一: server.xml 配置文件

1)Server 节点

bash 复制代码
<Server port="8005" shutdown="SHUTDOWN">
  • 作用:定义 Tomcat 服务器的最外层容器。
  • port="8005" :这是 关闭端口 ,当有人本地连接这个端口并输入字符串 SHUTDOWN 时,Tomcat 就会安全关闭。
  • shutdown="SHUTDOWN" :规定关闭指令,默认是字符串 SHUTDOWN,可以修改。

2)Listener 节点

bash 复制代码
<Listener className="org.apache.catalina.startup.VersionLoggerListener" /><Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /><Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /><Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /><Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />	
  • 作用 :这些是监听器,在 Tomcat 启动或运行时监听并执行一些特定任务。常见功能:
    • VersionLoggerListener:输出 Tomcat 版本、JVM 版本、操作系统信息。
    • AprLifecycleListener:检测并初始化 APR(Apache Portable Runtime),提高性能和 SSL 支持。
    • JreMemoryLeakPreventionListener:防止某些 JRE 类库引起的内存泄漏。
    • GlobalResourcesLifecycleListener:初始化全局 JNDI 资源。
    • ThreadLocalLeakPreventionListener :减少 ThreadLocal 所引起的内存泄漏。

3)GlobalNamingResources 节点

bash 复制代码
<GlobalNamingResources>
  <Resource name="UserDatabase" auth="Container"
            type="org.apache.catalina.UserDatabase"
            description="User database that can be updated and saved"
            factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
            pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
  • 作用:配置全局的 JNDI 资源。

  • 这里的 Resource :定义了一个用户数据库 UserDatabase,数据存放在 conf/tomcat-users.xml

  • 这个数据库主要用于 Tomcat 管理后台(/manager, /host-manager) 的认证。

4)Service 节点

bash 复制代码
<Service name="Catalina">
  • 作用 :一个 Service = 一组连接器(Connector) + 一个引擎(Engine)

  • name="Catalina":这是默认的 Service 名字。

5)Connector 节点

bash 复制代码
<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />
  • 作用:定义 Tomcat 如何接收请求。
  • port="8080":接收 HTTP 请求的端口。
  • protocol="HTTP/1.1":采用 HTTP/1.1 协议。
  • connectionTimeout="20000":连接超时 20 秒。
  • redirectPort="8443":如果应用要求安全(HTTPS),Tomcat 会把请求重定向到 8443 端口。

6)Engine 节点

bash 复制代码
<Engine name="Catalina" defaultHost="localhost">
  • 作用:处理来自 Connector 的请求。

  • defaultHost="localhost":指定默认虚拟主机。

Realm(认证域)

bash 复制代码
<Realm className="org.apache.catalina.realm.LockOutRealm">
  <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
         resourceName="UserDatabase"/>
</Realm>
  • 作用:用户认证与授权机制。
  • UserDatabaseRealm :使用前面定义的 UserDatabasetomcat-users.xml)来校验用户。
  • LockOutRealm:防止密码爆破(例如连续输错几次账号就会暂时锁定)。

7)Host 节点

bash 复制代码
<Host name="localhost"  appBase="webapps"
      unpackWARs="true" autoDeploy="true">
  • 作用:定义一个虚拟主机(相当于 Apache/Nginx 的虚拟主机)。

  • name="localhost" :域名是 localhost

  • appBase="webapps" :应用的目录(默认在 webapps 下)。

  • unpackWARs="true" :部署时会解压 .war 文件。

  • autoDeploy="true" :支持热部署,直接放到 webapps 就会加载。

Valve(阀门)

bash 复制代码
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
       prefix="localhost_access_log" suffix=".txt"
       pattern="%h %l %u %t &quot;%r&quot; %s %b" />
  • 作用:类似过滤器,可以对请求进行拦截、记录。
  • AccessLogValve:访问日志组件。
  • pattern:定义日志格式(客户端IP、用户、时间、请求内容、状态码、响应大小等)。
  • 日志会写到 logs/localhost_access_log*.txt
bash 复制代码
# vim conf/server.xml

<?xml version="1.0" encoding="UTF-8"?>

<Server port="8005" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
  
  <GlobalNamingResources>
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>
  
  <Service name="Catalina">  
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    <Engine name="Catalina" defaultHost="localhost">
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>
      
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>
    </Engine>
  </Service>
</Server>

二:端口

⚠️ 很多人初学 Tomcat 都以为只有 8080,其实 Tomcat 内部默认会开多个端口,各自有不同作用:

1)8005:关闭端口(Shutdown Port)

  • 作用:专门用来关闭 Tomcat 的。

  • server.xml 里配置:

    bash 复制代码
    <Server port="8005" shutdown="SHUTDOWN">
  • 如果有人(通常是本地)连接 8005 端口并发送字符串 SHUTDOWN,Tomcat 就会安全关闭。

  • ⚠️ 安全风险:生产环境常常 禁用/修改 这个端口,否则可能被恶意关闭。

2)8080:HTTP 端口

  • 作用:这是最常见的端口,处理普通 HTTP 请求。

  • 浏览器访问 http://localhost:8080/,就是通过这个端口。

  • server.xml 中:

    bash 复制代码
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

3)8443:HTTPS 端口

  • 作用:处理 HTTPS(加密的 HTTP)请求。
  • 一般情况下你配置了 SSL 证书,Tomcat 就会监听 8443,用来接收 HTTPS 连接。
  • 如果在 8080 配置了 redirectPort="8443",当应用要求安全访问时,Tomcat 会把请求重定向到 8443

4)8009:AJP 端口

  • AJP (Apache JServ Protocol)

    • 一种二进制协议,效率比 HTTP 高。
    • 主要用于 Apache HTTPD / Nginx 等 Web 服务器和 Tomcat 通信。
    • 好处:前端 Apache 接收请求 → 转发给 Tomcat,能做负载均衡、安全控制等。
  • server.xml 中原本会有:

    bash 复制代码
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
  • 从 Tomcat 8.5 之后

    • 默认 注释掉/禁用 了 8009,
    • 因为过去曾爆出 Ghostcat 漏洞(CVE-2020-1938),攻击者可通过 8009 读取 Tomcat 文件甚至执行代码。

三:规范 tomcat 访问日志格式

说明 tomcat nginx
定义访问日志的格式 Host 部分的pattern 定义 http 区域 log_format 部分
客户端 ip 地址 %h $remote_addr
访问的时间 %t $local_time
请求起始行 %r $request
状态码 %s $status
大小 %b $body_bytes_sent
从哪里跳转来的(用户如何访问网站) %{Referer}i $http_referer
客户端类型,浏览器 %{User-Agent}i $http_user_agent
XFF 头记录 %{X-Forwarded-For}i $http_x_forwarded_for
bash 复制代码
pattern="%h %l %u %t &quot;%r&quot; %s %b &quot;%{Referer}i&quot;&quot;%{User-Agent}i&quot; &quot;%{X-Forwarded-For}i&quot;" />

四:部署 zrlog 应用

1)环境准备

角色 主机 外网IP 内网IP
MySQL db01 192.168.2.109 172.16.1.109
Tomcat + Nginx + zrlog web01 192.168.2.104 172.16.1.104

2)部署 MySQL

  1. 连接数据库

    bash 复制代码
    [root@db01 ~]# mysql -u root -p
    Enter password: # 123456
  2. 创建数据库

    bash 复制代码
    MariaDB [(none)]> create database zrlog;
    Query OK, 1 row affected (0.00 sec)
  3. 赋予权限

    bash 复制代码
    MariaDB [(none)]> grant all on zrlog.* to 'zrlog'@'172.16.1.%' identified by 'zrlog';
    Query OK, 0 rows affected (0.00 sec)
  4. 验证

    bash 复制代码
    MariaDB [(none)]> select user, host, password from mysql.user;
    +------------+------------+-------------------------------------------+
    | user       | host       | password                                  |
    +------------+------------+-------------------------------------------+
    | root       | localhost  | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
    | root       | 127.0.0.1  | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
    | root       | ::1        | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
    | zrlog      | 172.16.1.% | *09CB1653907CD6E8B66284F7442626F9A83E9F32 |
    +------------+------------+-------------------------------------------+
    4 rows in set (0.00 sec)

3)部署 Tomcat

  1. 上传站点代码

    bash 复制代码
    [root@web01 ~]# mv /opt/software/zrlog-2.2.1-efbe9f9-release.war /opt/software/zrlog.war
  2. 部署代码

    bash 复制代码
    [root@web01 ~]# mv /opt/software/zrlog.war /opt/module/tomcat-8.5.87/webapps/
  3. 启动 tomcat 服务

    bash 复制代码
    [root@web01 ~]# systemctl start tomcat
  4. 浏览器安装

    http://192.168.2.104:8080/zrlog/install/

4)部署 Nginx

  1. 编辑 zrlog.conf 文件

    bash 复制代码
    [root@web01 ~]# vim /etc/nginx/conf.d/zrlog.conf
    bash 复制代码
    server {
        listen 80;
        server_name zrlog.cn;
        
        error_log /var/log/nginx/zrlog-error.log notice;
        access_log /var/log/nginx/zrlog-access.log main;
    
        location / {
            proxy_pass http://127.0.0.1:8080;
            proxy_set_header Host $http_host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
  2. 刷新 Nginx

    bash 复制代码
    [root@web01 ~]# nginx -t
    [root@web01 ~]# nginx -s reload
  3. 配置 hosts

    bash 复制代码
    192.168.2.104 zrlog.cn

5)访问


五:Tomcat + Nginx 动静分离

1)概述

📖Tomcat:主要用于处理动态请求(Java Servlet、JSP)。

📖Nginx:作为前端服务器,处理静态资源请求(HTML、CSS、JS、图片等),并将动态请求反向代理给 Tomcat。

目的:减轻 Tomcat 压力,提高静态资源访问速度,方便后续代码拆分和维护

2)部署

  1. 修改访问权限

    确保 nginx 用户 有权限访问 Tomcat 的 Web 应用目录

    bash 复制代码
    # 修改整个 webapps 目录所属为 nginx 用户
    [root@web01 ~]# chown -R nginx:nginx /opt/module/tomcat-8.5.87/webapps/
    
    # 修改目录权限
    [root@web01 ~]# chmod 755 /opt/module/tomcat-8.5.87/webapps/
    [root@web01 ~]# chmod -R 755 /opt/module/tomcat-8.5.87/webapps/zrlog
    
    # 普通文件 644,目录 755
    [root@web01 ~]# find /opt/module/tomcat-8.5.87/webapps/ -type f | xargs chmod 644
    [root@web01 ~]# find /opt/module/tomcat-8.5.87/webapps/ -type d | xargs chmod 755
  2. 编辑 zrlog.conf 文件

    zrlog 应用配置虚拟主机,静态资源交由 Nginx 处理,其余动态请求转发到 Tomcat

    bash 复制代码
    [root@web01 ~]# vim /etc/nginx/conf.d/zrlog.conf
    bash 复制代码
    server {
        listen 80;
        server_name zrlog.cn;
    
        error_log /var/log/nginx/zrlog-error.log notice;
        access_log /var/log/nginx/zrlog-access.log main;
    
        # 动态请求 -> Tomcat
        location / {
            proxy_pass http://127.0.0.1:8080;
            proxy_set_header Host $http_host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    
        # 静态资源 -> 直接由 Nginx 处理
        location ~* \.(html|js|css|png|jpeg|bmp|webp)$ {
            root /opt/module/tomcat-8.5.87/webapps/zrlog;
            expires 7d;   # 缓存 7 天
        }
    }
  3. 刷新 Nginx

    bash 复制代码
    [root@web01 ~]# nginx -t
    [root@web01 ~]# nginx -s reload

六:Tomcat + HTTPS

1)概述

  • Tomcat 本身支持 HTTPS ,可以在 server.xml 中直接配置证书。
  • 实际生产中,更推荐在 Nginx 层配置证书,Tomcat 只跑 HTTP(未加密),由 Nginx 做 TLS 终结,性能更好。

2)部署

  1. 上传证书 → 修改 server.xml → 配置 HTTPS Connector
  2. 支持 PFX / JKS 格式证书
  3. 重启 Tomcat 后验证 8443 端口
  4. 可选:配置 web.xml 实现 HTTP 跳转 HTTPS
  1. 创建证书目录

    bash 复制代码
    [root@web01 ~]# mkdir -p /opt/module/cert/tomcat
  2. 创建自签名证书

    keytool 是 JDK 自带的证书工具,可以直接生成 JKS/PKCS12 格式的证书文件
    参数说明:

    • -alias tomcat:证书别名
    • -keyalg RSA:加密算法
    • -keysize 2048:密钥长度
    • -validity 365:证书有效期(天)
    • -keystore:证书保存路径(JKS/PKCS12 文件)
    • -storepass:keystore 密码
    • -keypass:私钥密码
    • -dname:证书的身份信息(常用 CN=域名,其他随意)
    bash 复制代码
    # 生成 JKS 
    [root@web01 ~]# keytool -genkeypair \
      -alias zrlog \
      -keyalg RSA \
      -keysize 2048 \
      -validity 365 \
      -keystore /opt/module/cert/tomcat/zrlog.keystore \
      -storepass 123456 \
      -keypass 123456 \
      -dname "CN=zrlog.cn, OU=IT, O=MyCompany, L=Beijing, ST=Beijing, C=CN"
    bash 复制代码
    # 转换为 PKCS12
    [root@web01 ~]# keytool -importkeystore \
      -srckeystore /opt/module/cert/tomcat/zrlog.keystore \
      -destkeystore /opt/module/cert/tomcat/zrlog.pfx \
      -deststoretype pkcs12 \
      -srcstorepass 123456 \
      -deststorepass 123456
  3. 修改 server.xml 配置

    • port="8443" → HTTPS 端口

    • keystoreFile → 证书路径

    • keystoreType → 证书类型(PKCS12 / JKS,JKS 格式配置时,去掉 keystoreType="PKCS12" 即可)

    • keystorePass → 证书密码

    bash 复制代码
    [root@web01 ~]# vim /opt/module/tomcat-8.5.87/conf/server.xml
    bash 复制代码
        <Connector port="8443"
        protocol="HTTP/1.1"
        SSLEnabled="true"
        scheme="https"
        secure="true"
        keystoreFile="/opt/module/cert/tomcat/zrlog.pfx"
        keystoreType="PKCS12"
        keystorePass="123456"
        clientAuth="false"
        SSLProtocol="TLSv1.1+TLSv1.2+TLSv1.3"
        ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,
                 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
                 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,
                 TLS_RSA_WITH_AES_128_CBC_SHA256,
                 TLS_RSA_WITH_AES_256_CBC_SHA256"/>
  4. 配置 HTTP 自动跳转 HTTPS(可选)

    bash 复制代码
    [root@web01 ~]# vim /opt/module/tomcat-8.5.87/conf/server.xml
    bash 复制代码
    <login-config>
        <auth-method>CLIENT-CERT</auth-method>
        <realm-name>Client Cert Users-only Area</realm-name>
    </login-config>
    
    <security-constraint>
        <web-resource-collection>
            <web-resource-name>ssl</web-resource-name>
            <url-pattern>/*</url-pattern>
        </web-resource-collection>
        <user-data-constraint>
            <transport-guarantee>CONFIDENTIAL</transport-guarantee>
        </user-data-constraint>
    </security-constraint>
  5. 重启 Tomcat

    bash 复制代码
    [root@web01 ~]# systemctl restart tomcat
  6. 验证

    bash 复制代码
    [root@web01 ~]# ss -lntup | grep 8443
    tcp    LISTEN     0      100    [::]:8443               [::]:*                   users:(("java",pid=130829,fd=57))

七:Tomcat 多实例

1)概述

  • Tomcat 多实例:在同一台 Linux 主机上运行多个 Tomcat 进程,每个实例独立运行、互不干扰。
  • 目的
    • 充分利用服务器资源
    • 一个实例挂掉不影响其他实例
    • 支持不同应用独立运行、隔离管理

2)部署

  1. 解压 JDK 二进制包

    bash 复制代码
    [root@web02 ~]# tar -xzvf /opt/software/jdk-8u212-linux-x64.tar.gz -C /opt/module/
  2. 解压 Tomcat 二进制包

    bash 复制代码
    [root@web02 ~]# tar -xzvf /opt/software/apache-tomcat-8.5.87.tar.gz -C /opt/module/
  3. 准备两个 Tomcat

    bash 复制代码
    [root@web02 ~]# cd /opt/module
    
    [root@web02 module]# mv apache-tomcat-8.5.87/ tomcat1
    
    [root@web02 module]# cp -r tomcat1 tomcat2
  4. 修改 server.xml 文件

    每个实例的 conf/server.xml 里需要修改端口,避免冲突

    bash 复制代码
    [root@web02 module]# sed -i 's#8005#8006#g' tomcat1/conf/server.xml 
    [root@web02 module]# sed -i 's#8080#8081#g' tomcat1/conf/server.xml
     
    [root@web02 module]# sed -i 's#8005#8007#g' tomcat2/conf/server.xml 
    [root@web02 module]# sed -i 's#8080#8082#g' tomcat2/conf/server.xml
  5. 创建管理用户

    bash 复制代码
    [root@web02 ~]# useradd -Ms /sbin/nologin tomcat
  6. 修改 tomcat1tomcat2 所属

    bash 复制代码
    [root@web02 ~]# chown -R tomcat:tomcat /opt/module/tomcat1
    
    [root@web02 ~]# chown -R tomcat:tomcat /opt/module/tomcat2
  7. 创建 tomcat1.servicetomcat2.service

    bash 复制代码
    [root@web02 ~]# vim /etc/systemd/system/tomcat1.service
    bash 复制代码
    [Unitt]
    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/tomcat1/bin/startup.sh
    ExecStop=/opt/module/tomcat1/bin/shutdown.sh
    
    # 运行身份(推荐非 root)
    User=tomcat
    Group=tomcat
    
    [Install]
    WantedBy=multi-user.target
    bash 复制代码
    [root@web02 ~]# vim /etc/systemd/system/tomcat2.service
    bash 复制代码
    [Unitt]
    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/tomcat2/bin/startup.sh
    ExecStop=/opt/module/tomcat2/bin/shutdown.sh
    
    # 运行身份(推荐非 root)
    User=tomcat
    Group=tomcat
    
    [Install]
    WantedBy=multi-user.target
  8. 重新加载 systemctl 配置

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

    bash 复制代码
    [root@hadoop105 module]# systemctl start tomcat1.service 
    [root@hadoop105 module]# systemctl start tomcat2.service 

总结

📌 本节重点回顾

  • server.xml 配置解析

    • 掌握了 Server / Service / Connector / Engine / Host 五大核心节点及其常用配置。

    • 重点理解 Connector 端口(8005/8080/8443/8009) 的作用与安全风险。

    • 熟悉 Realm、Valve、Listener 等功能组件。

  • 日志与端口管理

    • 学会了 规范 Tomcat 访问日志格式,并对比了 Tomcat 与 Nginx 日志字段。

    • 明确了 Tomcat 默认端口的用途及生产环境的调整建议。

  • 应用部署与优化

    • 完成了 zrlog 博客系统 在 Tomcat 上的部署,并结合 Nginx 实现动静分离。

    • 掌握了 Tomcat HTTPS 配置(证书生成、导入、配置、启用)。

    • 能在同一主机上运行 多实例 Tomcat,实现应用隔离与高可用。

至此,你已经掌握了 Tomcat 配置解析、应用部署、动静分离、HTTPS、安全与多实例管理 等企业级运维必备技能。

下一篇我们将进入 Tomcat 企业级监控,迈向真正的生产级环境!

相关推荐
还不秃顶的计科生2 小时前
linux下conda未安装的解决方法(离线安装linux下的conda)
linux·运维·服务器
爱学习饼3 小时前
CentOS下安装配置JDK24和tomcat11
linux·运维·centos
夫唯不争,故无尤也3 小时前
Tomcat 内嵌启动时找不到 Web 应用的路径
java·前端·tomcat
Super Rookie3 小时前
Tomcat 自动化脚本安装方案
运维·tomcat·自动化
gaoshan123456789103 小时前
‌MyBatis-Plus 的 LambdaQueryWrapper 可以实现 OR 条件查询‌
java·tomcat·mybatis
qinxue7223 小时前
Jenkins自动化配置--CICD流水线
运维·自动化·jenkins
wanhengidc4 小时前
什么是站群服务器
运维·服务器·网络·游戏·智能手机
琦琦琦baby5 小时前
VRRP技术重点总结
运维·网络·智能路由器·vrrp
筑梦之路5 小时前
深入linux的审计服务auditd —— 筑梦之路
linux·运维·服务器