ssm项目本地部署

Tomcat文件结构分析

1. bin (Binary) - 启动/停止
  • 作用:存放 Tomcat 的可执行脚本文件。

  • 关键文件

    • startup.bat (Windows) / startup.sh (Linux/Mac): 启动 Tomcat 的脚本。

    • shutdown.bat (Windows) / shutdown.sh (Linux/Mac): 停止 Tomcat 的脚本。

    • catalina.bat / catalina.sh: 真正的核心启动脚本,startup 其实就是调用了它。

  • 你的场景 :当你修改完配置文件或放入 War 包后,需要进这里双击 startup.bat 来重启服务。

2. conf (Configuration) - 核心配置 [⭐重点]
  • 作用:存放 Tomcat 的所有全局配置文件。

  • 关键文件

    • server.xml最重要的配置文件。修改端口(8080 -> 8085)、配置 Context 路径映射就在这里。

    • web.xml:所有 Web 应用的默认配置(比如定义了默认的欢迎页 index.html,定义了 session 过期时间)。

    • context.xml:全局的 Context 配置。

    • tomcat-users.xml:配置 Tomcat 管理页面(Manager App)的用户名和密码。

3. lib (Library) - 依赖库
  • 作用 :存放 Tomcat 运行所需的 JAR 包,以及所有 Web 应用共享的 JAR 包。

  • 注意

    • 这里面有 Servlet API、JSP API 等基础包。

    • 如果你有多个项目都需要用同一个 JDBC 驱动,可以把驱动 jar 放在这里(虽然现在开发通常建议放在项目自己的 WEB-INF/lib 下)。

4. logs (Logs) - 排错日志 [⭐重点]
  • 作用:存放运行日志。

  • 关键文件

    • catalina.out (Linux) 或 catalina.xxxx-xx-xx.log (Windows):控制台输出的日志。如果启动报错、代码抛异常,第一时间看这里。

    • localhost_access_log.txt:访问日志,记录了谁在什么时间请求了哪个接口,返回状态码是 200 还是 404。

5. webapps (Web Applications) - 部署目录 [⭐重点]
  • 作用:默认的项目部署目录。

  • 机制

    • 当你把 .war 包扔进去,Tomcat 启动时会自动解压。

    • ROOT 文件夹 :这是默认的根应用(访问 localhost:8080/ 时对应的项目)。你之前的操作中,为了让你的项目变成根应用,建议删除这里的 ROOT 文件夹,然后把你的 war 包改名为 ROOT.war 放进去。

6. work
  • 作用 :存放 JSP 编译后生成的 .class 文件和 .java 文件。

  • 原理 :JSP 本质是 Servlet,Tomcat 会把 .jsp 翻译成 Java 代码并编译。

  • 技巧:如果你修改了 JSP 页面但浏览器刷新没变化,可以尝试清空这个文件夹,强制 Tomcat 重新编译 JSP。

7. temp
  • 作用:存放 Tomcat 运行时产生的临时文件。

  • 维护:通常不需要管它,重启后这里的文件大多可以清理。


📄 根目录下的文件

  • LICENSE, NOTICE, RELEASE-NOTES:法律许可、版本说明等文档。

  • RUNNING.txt:官方提供的简易运行指南。

环境准备

  • 安装 JDK

    • 确保电脑已安装 JDK,并配置好 JAVA_HOME 环境变量。

    • 验证命令:java -version

  • 下载并解压 Tomcat

    • Apache Tomcat 官网 下载对应版本的 Core zip/tar.gz 包。

    • 解压到一个路径中(注意:路径不要包含中文或空格 ),例如:D:\dev\apache-tomcat-9.0/usr/local/tomcat.

项目打包

XML 复制代码
  <packaging>war</packaging>

根据自己的项目类型选择打包方式 这是演示的是ssm的javaweb项目所以使用的
XML 复制代码
      <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.*</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>

意思是把配置文件也进行打包 有的老版本idea需要手动编写这段配置 新版一般会自动编写

在命令行里面输入mvn clean package进行打包

或者使用maven可视化工具进行打包 先点击clean 在点击package

打包完成后会出现一个target文件夹 点击进去 里面会有一个war包一般是(项目.war)这我我修改了打包的名称 在build标签里面 添加一个<finalName>标签进行配置

项目部署

场景一:最基础部署(不需要配置)

如果你的需求只是:

  • 接受默认端口 8080

  • 接受访问路径带项目名(如 http://localhost:8080/myapp)。

操作 :直接把 myapp.war 扔进 webapps 目录,启动即可。不需要动 conf 目录下的任何文件。

场景二:端口冲突(需要配置)

如果你电脑上的 8080 端口已经被占用了(比如被另一个 Java 程序或 Jenkins 占用),Tomcat 启动会报错 Address already in use

操作 :修改 conf/server.xml。 找到 <Connector port="8080" ...>,把 8080 改成 8081 或其他端口。

如果Tomcat部署多个项目

复制 Tomcat 目录(多实例部署)------ 推荐

这是最"笨"但最有效的方法。与其折腾复杂的配置文件,不如直接运行两个独立的 Tomcat。

原理:你有两个独立的 Tomcat 文件夹,分别配置不同的端口,分别启动。它们互不干扰,一个崩了也不影响另一个。

操作步骤:

  1. 复制文件夹

    • 将你的 Tomcat 解压文件夹复制一份。

    • 命名为 apache-tomcat-projectA (放项目A)。

    • 命名为 apache-tomcat-projectB (放项目B)。

  2. 配置第一个 Tomcat (Project A)

    • 打开 projectA/conf/server.xml

    • 设置 HTTP 端口为 8085 (你之前已经做过了)。

    • 注意:确认 Shutdown 端口(默认 8005)没有被占用。

  3. 配置第二个 Tomcat (Project B)

    • 关键点:一个电脑上不能有两个程序监听同一个端口。 你不仅要改 HTTP 端口,还要改 Shutdown 端口。

    • 打开 projectB/conf/server.xml,修改 3处 端口:

    第一处:Shutdown 端口 (通常在第 22 行)

    复制代码
    <Server port="8006" shutdown="SHUTDOWN">

    第二处:HTTP 访问端口 (通常在第 69 行)

    复制代码
    <Connector port="8086" protocol="HTTP/1.1" ... />

    第三处:AJP 端口 (如果有的话,通常在第 116 行)

    复制代码
    <Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />
  4. 部署与启动

    • A.war 放入第一个 Tomcat 的 webapps。

    • B.war 放入第二个 Tomcat 的 webapps。

    • 分别去两个目录的 bin 下点击 startup.bat

结果

  • 访问 A:http://localhost:8085/A

  • 访问 B:http://localhost:8086/B

修改 server.xml 配置多 Service(单实例多端口)

这是在一个 Tomcat 进程里开辟两个服务区域。虽然只启动一个黑窗口(JVM进程),但配置容易出错,且内存共享,一个项目内存溢出(OOM),两个端口都会挂掉。

原理server.xml 的结构是 Server -> Service -> Engine -> Host。我们可以复制一套 <Service> 标签。

操作步骤:

  1. 打开 conf/server.xml

  2. 找到现有的 <Service name="Catalina"> ... </Service> 标签结束的地方。

  3. 在它下面,复制粘贴一份完整的 Service 标签,并修改其中的核心参数。

修改后的 server.xml 结构大致如下:(根据自己的实际情况进行编写)

XML 复制代码
<Server port="8005" shutdown="SHUTDOWN">

  <Service name="Catalina">
    <Connector port="8085" protocol="HTTP/1.1" ... />
    <Engine name="Catalina" defaultHost="localhost">
      <Host name="localhost"  appBase="webapps" ...>
          </Host>
    </Engine>
  </Service>

  <Service name="Catalina2">
  
    <Connector port="8086" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

    <Engine name="Catalina2" defaultHost="localhost">
    
      <Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">
      </Host>
      
    </Engine>
  </Service>

</Server>
相关推荐
资生算法程序员_畅想家_剑魔17 小时前
Kotlin常见技术分享-01-相对于Java 的核心优势-空安全
java·安全·kotlin
gelald17 小时前
AQS 解析:从原理到实战
java·后端
2301_7806698617 小时前
集合框架(Collection单列集合(常用功能,三种遍历方式及通过并发修改异常认识他们的区别)、Map双列集合)
java
进阶小白猿17 小时前
Java技术八股学习Day14
java·数据库·学习
super_lzb17 小时前
mybatis拦截器ResultSetHandler详解
java·spring·mybatis·springboot
代码or搬砖17 小时前
JVM垃圾回收器
java·jvm·算法
客卿12317 小时前
C语言刷题--合并有序数组
java·c语言·算法