使用idea打包springcloud项目并部署到tomcat下

本文详细介绍了一个包含Eureka服务注册中心、数据接口服务和Web服务的微服务架构项目的部署过程,包括如何使用IDEA打包成WAR文件,配置Tomcat服务器,以及解决部署中遇到的常见问题。

说明:有三个项目,

一个提供 eureka 服务——ehl-eureka-server1,

一个数据接口服务——apps-is,

一个web服务-appsweb

使用 idea 打成 war 包:

build->build artifacts-->选择 all 或者选择单个

在工作空间下找到 war 包,比如:

E:\workspace-mars\mps\mps-apps-is\target

部署到 tomcat

前置工作

准备 3 个 tomcat

备注:也可以部署在同一个 tomcat 下,但是如果有问题不好排查

分别部署 ehl-eureka-server1,apps-is,appsweb

1、修改 war 包名为 application.yml 文件中 server.context-path 的名字

2、分别修改 tomcat 端口为 server.port 的端口为

ehl-eureka-server1apps-isappsweb
876187628765
800980108011
800580068007

启动 tomcat

按照顺序:先 eureka,后 appis,最后 appsweb,启动 tomcat。

双击 startup.bat 启动,如果出现闪退,可能是环境有问题,在 startup.bat 最后添加 pause 查看
在这里插入图片描述

如果是环境的问题,则可以在文件最前面加上下面的代码(修改为自己的 java 地址和 tomcat 地址)

set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_131

set TOMCAT_HOME=D:\soft\apache-tomcat-8.5.34-windows-x64\apache-tomcat-8.5.34-01

set CATALINA_HOME=D:\soft\apache-tomcat-8.5.34-windows-x64\apache-tomcat-8.5.34-01

缺什么加什么即可。

@echo off
rem Licensed to the Apache Software Foundation (ASF) under one or more
rem contributor license agreements.  See the NOTICE file distributed with
rem this work for additional information regarding copyright ownership.
rem The ASF licenses this file to You under the Apache License, Version 2.0
rem (the "License"); you may not use this file except in compliance with
rem the License.  You may obtain a copy of the License at
rem
rem     http://www.apache.org/licenses/LICENSE-2.0
rem
rem Unless required by applicable law or agreed to in writing, software
rem distributed under the License is distributed on an "AS IS" BASIS,
rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
rem See the License for the specific language governing permissions and
rem limitations under the License.

rem ---------------------------------------------------------------------------
rem Start script for the CATALINA Server
rem ---------------------------------------------------------------------------

setlocal

set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_131

set TOMCAT_HOME=D:\soft\apache-tomcat-8.5.34-windows-x64\apache-tomcat-8.5.34-01

set CATALINA_HOME=D:\soft\apache-tomcat-8.5.34-windows-x64\apache-tomcat-8.5.34-01

rem Guess CATALINA_HOME if not defined
set "CURRENT_DIR=%cd%"
if not "%CATALINA_HOME%" == "" goto gotHome
set "CATALINA_HOME=%CURRENT_DIR%"
if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
cd ..
set "CATALINA_HOME=%cd%"
cd "%CURRENT_DIR%"
:gotHome
if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
echo The CATALINA_HOME environment variable is not defined correctly
echo This environment variable is needed to run this program
goto end
:okHome

set "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat"

rem Check that target executable exists
if exist "%EXECUTABLE%" goto okExec
echo Cannot find "%EXECUTABLE%"
echo This file is needed to run this program
goto end
:okExec

rem Get remaining unshifted command line arguments and save them in the
set CMD_LINE_ARGS=
:setArgs
if ""%1""=="""" goto doneSetArgs
set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1
shift
goto setArgs
:doneSetArgs

call "%EXECUTABLE%" start %CMD_LINE_ARGS%

:end

最后如果出现 eureka 和 appis 都没有问题,webs 网站有问题的话,如果部署的服务器是 windows 系统,则可以单独使用 idea 启动 webs,这样方便检查错误以及修改代码改正错误。

参考:https://jingyan.baidu.com/article/a24b33cd10adf719fe002ba1.html

<think>嗯,用户这次询问的是Spring Cloud项目在生产环境的启动方式,需要明确区分开发和生产环境的不同实践。从用户的问题历史看,ta似乎正在学习或部署微服务架构,之前关注过数据源配置和模块启动顺序。 用户引用的资料显示ta已经了解Spring Boot的独立运行特性(引用2和3),但可能对生产部署的具体形式存在疑惑。这里的关键点在于:Spring Cloud项目本质是基于Spring Boot的,而Spring Boot应用默认打包为可执行jar,内嵌了Tomcat/Jetty等Web容器。 需要向用户强调几个要点:第一,生产环境不可能用IDEA启动,必须打包;第二,传统war包部署到外部Tomcat虽然可行但不推荐;第三,容器化部署已成为主流方案。用户提到的JBoss/Tomcat更多是传统JavaEE项目部署方式,而Spring Cloud采用更轻量的方式。 用户可能忽略了云原生部署的趋势,所以在回答中补充了Docker和Kubernetes方案。另外注意到用户团队似乎在使用Eureka(引用4中的@EnableDiscoveryClient),这进一步佐证了容器化部署的适用性。 考虑到用户的技术水平,解释时避免过多术语,但需要明确给出每种方案的适用场景。比如中小型项目用jar直接运行足够,大型集群则需要Kubernetes编排。安全方面也要提醒暴露端口的风险控制。 </think>Spring Cloud 项目在生产环境的启动方式**通常不使用 IDE(如 IDEA)直接启动,也不推荐部署到传统应用服务器(Tomcat/JBoss)**,而是采用以下主流方案: --- ### ✅ 标准生产级启动方案 1. **可执行 JAR 包启动(主流方案)** - Spring Boot 应用默认打包为**独立可执行 JAR**(内嵌 Tomcat/Jetty 等 Web 服务器)[^2][^3] - **启动命令**: ```bash java -jar your-service-name.jar ``` - **优势**: - 无需额外安装 Tomcat/JBoss - 支持 DevOps 自动化部署(Jenkins/K8s) - 资源占用更低,启动更快 2. **容器化部署(推荐云环境)** - 构建 Docker 镜像 + Kubernetes 编排(生产级标准)[^3] - **Dockerfile 示例**: ```dockerfile FROM openjdk:17 COPY target/*.jar app.jar EXPOSE 8080 ENTRYPOINT ["java","-jar","/app.jar"] ``` - **启动逻辑**: ```mermaid graph LR A[源代码] --> B[构建JAR] B --> C[打包Docker镜像] C --> D[推送到镜像仓库] D --> E[K8s集群部署] ``` --- ### ⚠传统应用服务器部署(已逐渐淘汰) 若特殊场景需部署Tomcat/JBoss: 1. **修改打包方式为 WAR**: ```xml <!-- pom.xml --> <packaging>war</packaging> ``` 2. **排除内嵌 Tomcat**: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency> ``` 3. **继承 `SpringBootServletInitializer`**: ```java @SpringBootApplication public class Application extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(...) { return builder.sources(Application.class); } } ``` > 💡 **注意事项**: - 需手动配置应用服务器的连接池/线程池 - 服务注册(如 Eureka)需额外处理端口映射[^1][^4] --- ### 📊 生产环境部署决策树 ```mermaid graph TD A[生产部署方式] --> B{是否需要混合部署传统JavaEE应用?} B -->|是| C[WAR包部署Tomcat/JBoss] B -->|否| D{是否在云环境?} D -->|是| E[容器化部署] D -->|否| F[直接运行可执行JAR] ``` --- ### 📌 关键结论 1. **IDE 启动仅限开发**:IDEA 启动是调试行为,禁止用于生产 2. **嵌入式容器是首选**:≥85% 的 Spring Cloud 项目采用 `java -jar` 方式[^3] 3. **云原生趋势**:容器化部署(Docker+K8s)已成行业标准方案 > 生产环境务必通过 **CI/CD 流水线**自动构建部署(如 Jenkins/GitLab CI),避免手动操作。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

伍六七AI编程

你猜你给我1分我要不要

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值