云服务器上SpringBoot项目的war文件在tomcat容器中运行却无法访问

本文介绍了解决SpringBoot项目无法在Tomcat上正常访问的问题。通过打包为jar文件并使用正确的命令执行,使得项目可以在服务器上运行。文章还详细说明了临时执行与后台永久执行的方法。

当然无法访问啦

这是我辗转几个晚上才找到的原因,也是在业界大佬指点下才能解决

即便项目放tomcat的webapps目录下
在这里插入图片描述
甚至tomcat都已经执行了,生成了相关文件,但依旧无法访问

前提

java环境

java环境配置完毕,检测是否配置完成,命令行输入

java -version

在这里插入图片描述
出现类似这个结果就是配置好了,不会的话自己搜教程

mysql环境(如果项目用得上)

检测方法类似,不赘述

原因

Springboot项目没有springmvc的配置文件

tomcat无法执行

解决办法

springboot项目打包成jar文件

在这里插入图片描述
springboot默认打包出来的就是jar包,以下是打包成功截图,根据地址找到对应的jar包
在这里插入图片描述

在服务器创建个文件夹存放jar包

在这里插入图片描述
第一个文件是项目运行的日志,过会儿说

执行jar包

控制台进入存放项目jar包的目录下

在命令行中输入

 java -jar [jar包名]

命令行会出现与idea上相似的项目执行画面(真的是太美了)
在这里插入图片描述
就成功了,按照 ip:8080/预设端口 格式去访问吧

短期执行

就是上面那条语句

java jar [jar包名]

在这里插入图片描述
这里Ctrl+c就能退出springboot界面回到Linux界面,这个springboot项目也会随之关闭

永久执行

nohup java -jar [jar包名] &

在这里插入图片描述
出现这个就是成功了,即使Ctrl+c推出也不会关闭项目的执行

如何关闭呢?

首先查找进程

ps -ef | grep java

在这里插入图片描述
第二列就是进程

kill 进程号

即可关闭项目

### 配置Spring Boot项目Tomcat服务器上运行的方法 #### 1. 排除内置的嵌入式Tomcat 在Spring Boot项目中,默认情况下会使用嵌入式的Tomcat作为应用服务器。为了将项目部署到外部的Tomcat服务器,需要排除默认的嵌入式Tomcat依赖[^2]。 ```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> ``` #### 2. 修改打方式为WAR Spring Boot项目默认的打方式是JAR文件,而为了部署到外部Tomcat服务器,需要将项目的打方式更改为WAR文件[^3]。 在`pom.xml`文件中修改打方式: ```xml <packaging>war</packaging> ``` #### 3. 修改启动类 为了让Spring Boot项目能够适应外部Tomcat容器,需要让启动类继承`SpringBootServletInitializer`并覆盖`configure`方法[^2]。 代码示例如下: ```java import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; public class SpringBootTomcatApplication extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(SpringBootTomcatApplication.class); } public static void main(String[] args) { SpringApplication.run(SpringBootTomcatApplication.class, args); } } ``` #### 4. 添加Servlet API依赖 由于外部Tomcat容器含嵌入式的Tomcat依赖,因此需要显式地添加`javax.servlet-api`依赖[^2]。 在`pom.xml`中添加以下依赖: ```xml <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency> ``` #### 5. IDEA配置工件(Artifact) 在IntelliJ IDEA中,需要正确配置项目的工件以便生成WAR[^3]。 - 打开菜单 `File -> Project Structure -> Artifacts`。 - 点击右侧的加号按钮,选择 `Web Application: Archive`。 - 在弹出的对话框中,确保选择了正确的模块,并将输出布局设置为生成WAR文件。 - 完成配置后,点击 `Apply` 和 `OK`。 #### 6. 部署到Tomcat服务器 完成上述步骤后,可以将生成的WAR文件部署到Tomcat服务器上[^1]。 - 将生成的WAR文件复制到Tomcat的`webapps`目录下。 - 启动Tomcat服务器,访问对应的URL以验证部署是否成功。 #### 7. 使用Docker部署多个Tomcat实例(可选) 如果需要部署多个Tomcat实例,可以考虑使用Docker来实现多实例部署[^1]。 - 创建Dockerfile,指定基础镜像为Tomcat。 - 构建Docker镜像,并运行多个容器实例。 示例Dockerfile: ```dockerfile FROM tomcat:9.0 COPY target/your-springboot-app.war /usr/local/tomcat/webapps/ EXPOSE 8080 CMD ["catalina.sh", "run"] ``` --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值