部署Spring Boot项目+mysql并允许前端本地访问

1)修改后端配置

确保 <font style="color:rgb(64, 64, 64);">application.yml</font><font style="color:rgb(64, 64, 64);">application.properties</font> 中的数据库连接指向服务器MySQL

yaml 复制代码
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/数据库名?useSSL=false
    username: your_user
    password: your_password

2)解决跨域问题

如果后端未配置 CORS,在 Spring Boot 中添加:

java 复制代码
@Configuration
public class CorsConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
        .allowedOrigins("*")  // 允许所有来源(或指定前端地址)
        .allowedMethods("GET", "POST", "PUT", "DELETE")
        .allowedHeaders("*");
    }
}

2)打包jar

进入文件根目录(有pom.xml的那一级)

运行

bash 复制代码
mvn clean package

3)上传到服务器

4)在服务器运行后端

bash 复制代码
java -jar C:\Users\Administrator\Desktop\ngpos-boot3-1.0.jar --server.port=8081

检查是否运行:

plain 复制代码
ps aux | grep java
netstat -tulnp | grep 8080

步骤 3:配置本地Vue前端访问服务器API

(1)修改Vue的API请求地址

<font style="color:rgb(64, 64, 64);">vue.config.js</font> 中配置代理:

javascript 复制代码
module.exports = {
  devServer: {
    proxy: {
      '/api': {
        target: 'http://服务器IP:8080',  // 后端地址
        changeOrigin: true,
        pathRewrite: {
          '^/api': ''
        }
      }
    }
  }
}

或者在 <font style="color:rgb(64, 64, 64);">.env.development</font> 中设置:

env

复制

下载

bash 复制代码
VUE_APP_API_BASE_URL=http://服务器IP:8080

然后在代码中使用:

javascript 复制代码
axios.get(`${process.env.VUE_APP_API_BASE_URL}/api/data`);

(2)解决跨域问题

如果后端未配置 CORS,在 Spring Boot 中添加:

java 复制代码
@Configuration
public class CorsConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
        .allowedOrigins("*")  // 允许所有来源(或指定前端地址)
        .allowedMethods("GET", "POST", "PUT", "DELETE")
        .allowedHeaders("*");
    }
}

步骤 4:测试访问

(1)直接访问后端API

在浏览器或 Postman 访问:

http://服务器IP:8080/api/test

如果返回数据,说明后端正常运行。

(2)本地Vue访问

运行本地前端:

bash 复制代码
npm run dev

访问 <font style="color:rgb(64, 64, 64);">http://localhost:8080</font>,检查是否能获取服务器数据。

===============================================================

错误:

PS C:\Users\17035\Desktop\新建文件夹\back-end-of-western-restaurant - 副本\dish\target> java -jar ngpos-boot3-1.0.jar ngpos-boot3-1.0.jar中没有主清单属性

完整的解决方案:

根据你的 pom.xml 文件,我发现导致 JAR 文件无法运行的关键问题是 spring-boot-maven-plugin 配置中的 true。这个参数会跳过 Spring Boot 的可执行 JAR 打包过程,导致生成的 JAR 文件缺少必要的启动信息。以下是

  1. 问题修复步骤
    (1) 修改 spring-boot-maven-plugin 配置
    将以下部分:
xml 复制代码
<configuration>
  <mainClass>com.example.dish.DishApplication</mainClass>
  <skip>true</skip>  <!-- 删除这一行 -->
</configuration>

改为

xml 复制代码
<configuration>
    <mainClass>com.example.dish.DishApplication</mainClass>
</configuration>

1. 正确的端口映射命令(管理员权限运行)

powershell 复制代码
netsh interface portproxy add v4tov4 listenport=80 listenaddress=0.0.0.0 connectport=8081 connectaddress=127.0.0.1 protocol=tcp

2. 命令参数说明

参数 说明
<font style="color:rgb(64, 64, 64);">listenport</font> 80 外部访问的端口
<font style="color:rgb(64, 64, 64);">listenaddress</font> 0.0.0.0 监听所有网络接口
<font style="color:rgb(64, 64, 64);">connectport</font> 8081 内部服务实际端口
<font style="color:rgb(64, 64, 64);">connectaddress</font> 127.0.0.1 转发到本机
<font style="color:rgb(64, 64, 64);">protocol</font> tcp 使用TCP协议

3. 验证映射是否成功

powershell 复制代码
netsh interface portproxy show all

预期输出:

plain 复制代码
侦听 ipv4:                 连接到 ipv4:

地址            端口        地址            端口
--------------- ----------  --------------- ----------
0.0.0.0         80          127.0.0.1       8081

4. 开放防火墙80端口(如果尚未开放)

powershell 复制代码
netsh advfirewall firewall add rule name="HTTP_80" dir=in action=allow protocol=TCP localport=80

5. 测试访问

现在可以通过以下方式访问:

powershell 复制代码
http://8.138.207.62:80/ticket/listAll

6. 注意事项

  1. 需要以管理员身份运行CMD/PowerShell

如果80端口被系统服务占用,可改用其他端口(如8080):

powershell 复制代码
netsh interface portproxy add v4tov4 listenport=8080 listenaddress=0.0.0.0 connectport=8081 connectaddress=127.0.0.1
  1. 重启后映射会失效,如需持久化可以创建计划任务

7. 完整操作示例

plain 复制代码
:: 添加端口映射
netsh interface portproxy add v4tov4 listenport=80 listenaddress=0.0.0.0 connectport=8081 connectaddress=127.0.0.1

:: 查看所有映射规则
netsh interface portproxy show all

:: 开放防火墙
netsh advfirewall firewall add rule name="HTTP_80" dir=in action=allow protocol=TCP localport=80

:: 测试映射是否生效(在服务器本地执行)
curl http://localhost:80/kitchen/tasks

如果仍然遇到问题,可能是:

  1. IIS或其他服务占用了80端口(使用<font style="color:rgb(64, 64, 64);">netstat -ano | findstr :80</font>检查)
  2. 云服务商限制了80端口(需在控制台开放)
  3. 本地网络屏蔽了80端口(尝试手机热点访问)
相关推荐
Mr_Xuhhh12 分钟前
MySQL核心知识梳理:从连接到查询的完整指南
数据库·sql·mysql
bjxiaxueliang14 分钟前
一文掌握SpringBoot:HTTP服务开发从入门到部署
spring boot·后端·http
wsxlgg15 分钟前
MySQL中count(*)、count(1)、count(字段)的区别
数据库·mysql
人工智能训练6 小时前
【极速部署】Ubuntu24.04+CUDA13.0 玩转 VLLM 0.15.0:预编译 Wheel 包 GPU 版安装全攻略
运维·前端·人工智能·python·ai编程·cuda·vllm
_F_y6 小时前
MySQL用C/C++连接
c语言·c++·mysql
会跑的葫芦怪6 小时前
若依Vue 项目多子路径配置
前端·javascript·vue.js
五岳8 小时前
DTS按业务场景批量迁移阿里云MySQL库实战(上):技术选型和API对接
mysql·阿里云·dts
pas1369 小时前
40-mini-vue 实现三种联合类型
前端·javascript·vue.js
仍然.9 小时前
MYSQL--约束
数据库·mysql
摇滚侠9 小时前
2 小时快速入门 ES6 基础视频教程
前端·ecmascript·es6