部署项目到Tomcat

1 JavaWeb项目部署(Servlet单体项目)

项目:

build---build Artifcat---Build 生成out目录结构

复制javaWeb1009_war_exploded到Tomcat的webapps文件夹
点击bin目录下的startup.bat(Windows系统)
输入端口号/项目名/访问页面

注意:

1 超链接的接口访问地址也需要加上项目名,修改这两个地方:

否则地址必须在接口前手动加上项目名

2 加上项目名仍然访问出错,可能是Tomcat本身配置存在问题,重新解压一个Tomcat试试

3 url走的是默认端口8080,idea配置的端口号不一致不影响

2 MavenJavaWeb(SSM单体项目)

clean--install--复制ssm的war包--放在Tomcat的webapps包下

startup.bat启动 war包自动解压 地址:8080 项目名

3 SSM聚合工程

聚合工程install时只需打包父工程,这时所有子工程都会打包

Tomcat目录下的server文件中,docBase里的项目名需跟解压后的war包名称一致

1 对父工程进行clean -- install

若打包过程中显示测试失败,去对应子工程下的target包--surefire-reports找对应文件的日志文件。

install:

install 命令的设计目标是:构建项目并将产物存入本地仓库

命令执行流程:编译项目源码---执行单元测试---打包项目---将打包产物安装到本地仓库

本地仓库的作用:实现"项目内、跨项目依赖复用";避免"重复构建",提升效率;统一依赖管理,确保环境一致性;

2 把各个子工程的war包复制到Tomcat的webapps下

3 修改Tomcat目录Confg目录下的server文件,添加以下端口配置,防止端口号重复

Path:若idea配置的Tomcat加上了项目路径,则Path也要改成对应的项目路径

端口号注意一致

XML 复制代码
<!-- Tomcat 允许在一个服务器实例中配置多个 Service,每个 Service 可独立运行一个或多个 Web 项目
     每个 Service 需通过 name 属性区分,避免冲突 -->
<!-- 第一个 Service 实例:名称为 Catalina1 -->
<Service name="Catalina1">
    <!-- Connector 用于配置 HTTP 协议的连接端口,每个 Service 的端口必须唯一(避免端口冲突)
         port:HTTP 访问端口(对外提供服务的端口)
         protocol:协议类型(HTTP/1.1 为默认)
         connectionTimeout:连接超时时间(毫秒)
         redirectPort:HTTPS 重定向端口(当请求需要加密时,重定向到该端口)
         URLEncoding:请求参数编码格式(UTF-8 避免中文乱码) -->
    <Connector port="8088" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URLEncoding="UTF-8"/>
    
    <!-- AJP 协议连接器(用于与 Apache 等反向代理服务器通信),端口也需唯一
         port:AJP 协议端口
         protocol:AJP/1.3 协议(反向代理常用)
         secretRequired:是否需要密钥验证(空值表示不验证,开发环境简化配置) -->
    <Connector port="8010" protocol="AJP/1.3" redirectPort="8443" secretRequired=""/>
    
    <!-- Engine 是 Service 的核心组件,负责处理请求并转发到对应的 Host
         name:Engine 名称,需与 Service 名称对应(便于识别)
         defaultHost:默认主机名(通常为 localhost) -->
    <Engine name="Catalina1" defaultHost="localhost">
        <!-- Realm 用于配置用户认证和授权(此处使用 Tomcat 内置的用户数据库)
             LockOutRealm:防止暴力破解,锁定多次失败的用户
             UserDatabaseRealm:基于 XML 文件(conf/tomcat-users.xml)的用户认证 -->
        <Realm className="org.apache.catalina.realm.LockOutRealm">
            <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
                   resourceName="UserDatabase"/>
        </Realm>

        <!-- Host 代表一个虚拟主机,用于部署 Web 项目
             name:主机名(需与 DNS 或 hosts 文件配置对应,通常为 localhost)
             appBase:项目部署的基础目录(默认 webapps,可自定义路径)
             unpackWARs:是否自动解压 WAR 包(true 表示自动解压,便于修改文件)
             autoDeploy:是否自动部署新增的项目(true 表示检测到新 WAR 包时自动部署) -->
        <Host name="localhost"  appBase="webapps"
              unpackWARs="true" autoDeploy="true">
            <!-- AccessLogValve 用于记录访问日志
                 directory:日志存储目录(Tomcat 的 logs 文件夹)
                 prefix/suffix:日志文件前缀和后缀(如 localhost_access_log.2024-10-09.txt)
                 pattern:日志格式(记录客户端 IP、访问时间、请求路径、状态码等信息) -->
            <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" />
            
            <!-- Context 用于配置具体的 Web 项目
                 docBase:项目路径(可以是相对路径,基于 appBase;也可以是绝对路径)
                          此处为 webapps 目录下的 ham-file-1.0-SNAPSHOT 项目
                 path:项目的上下文路径(/ 表示根路径,访问时无需加项目名)
                 reloadable:是否自动重新加载(true 表示检测到类文件修改时自动重启项目,开发环境常用) -->
            <Context docBase="ham-file-1.0-SNAPSHOT" path="/" reloadable="true"/>
        </Host>
    </Engine>
</Service>

<!-- 第二个 Service 实例:名称为 Catalina2,配置逻辑与第一个一致,仅端口和部署项目不同 -->
<Service name="Catalina2">
    <Connector port="8075" protocol="HTTP/1.1"  <!-- 独立 HTTP 端口 8075 -->
               connectionTimeout="20000"
               redirectPort="8443" URLEncoding="UTF-8"/>
    <Connector port="8011" protocol="AJP/1.3" redirectPort="8443" secretRequired=""/>  <!-- 独立 AJP 端口 8011 -->
    <Engine name="Catalina2" 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" />
            <Context docBase="ham-portal-1.0-SNAPSHOT" path="/" reloadable="true"/>  <!-- 部署 ham-portal 项目 -->
        </Host>
    </Engine>
</Service>

<!-- 第三个 Service 实例:名称为 Catalina3,配置逻辑同上 -->
<Service name="Catalina3">
    <Connector port="8089" protocol="HTTP/1.1"  <!-- 独立 HTTP 端口 8089 -->
               connectionTimeout="20000"
               redirectPort="8443" URLEncoding="UTF-8"/>
    <Connector port="8012" protocol="AJP/1.3" redirectPort="8443" secretRequired=""/>  <!-- 独立 AJP 端口 8012 -->
    <Engine name="Catalina3" 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" />
            <Context docBase="ham-console-1.0-SNAPSHOT" path="/" reloadable="true"/>  <!-- 部署 ham-console 项目 -->
        </Host>
    </Engine>
</Service>

4 点击startup.bat 启动Tomcat

若出现闪退问题,找logs目录下的日志文件对应查看日志

相关推荐
安逸sgr3 小时前
SpringMVC启动流程
java·jvm·spring·spring cloud·eclipse·tomcat·maven
lifallen4 小时前
从Apache Doris 学习 HyperLogLog
java·大数据·数据仓库·算法·apache
fire-flyer4 小时前
maven-jlink-plugin入门
java·maven
Knight_AL4 小时前
Java 单元测试全攻略:JUnit 生命周期、覆盖率提升、自动化框架与 Mock 技术
java·junit·单元测试
cominglately4 小时前
记录一次生产环境数据库死锁的处理过程
java·死锁
用户0332126663674 小时前
在 Word 文档中插入图片的 Java 指南
java
深圳蔓延科技4 小时前
单点登录到底是什么?
java·后端
SimonKing4 小时前
除了 ${},Thymeleaf 的这些用法让你直呼内行
java·后端·程序员
科兴第一吴彦祖5 小时前
基于Spring Boot + Vue 3的乡村振兴综合服务平台
java·vue.js·人工智能·spring boot·推荐算法