SpringBoot + Vue 项目超简单的合并部署方案

本文介绍了SpringBoot与Vue项目整合的简单部署方案,适合轻量级个人开发。通过maven打包,将Vue构建的dist文件夹放入SpringBoot的static目录,然后在服务器上运行SpringBoot的jar包,利用nginx进行端口映射,解决跨域问题。详细步骤包括Vue的构建、SpringBoot的配置和服务器部署等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

最近在捣鼓 SpringBoot 与 Vue 整合的项目,看了网上很多套的方案,自己总结了一套为轻量级个人开发提供的项目部署方案,简单有效!通过 maven 的打包在服务器上仅需要运行一个 Jar 包即可运行包括前端的整个项目。(全文无图!别问问就是太懒惹,下次有机会再补上。。

个人博客内有更多详细内容: https://www.seny.xyz/archives/deployment

项目环境:

  • 前端框架:Vue.js + axios

  • 后端框架:SpringBoot + Mybatis

  • 项目管理:maven


一、Vue 项目

Vue 使用 npm install 安装依赖后,使用 npm run build 构建项目

构建完成后会在 src 同级目录下生成 dist 文件夹,该文件夹内的文件就是所生成的静态文件,先放着一会构建 SpringBoot 的后端项目时要用

注意:在构建项目时注意将项目内的 api 请求路径对应好要部署的服务器 ip 端口映射,还需要在 vue 项目配置文件 vue.js.config将 publicPath 设置为 ‘./’ 即可进行前端项目构建


二、SpringBoot 项目

后端这边默认使用 maven 管理项目,将 Vue 项目构建生成的 dist 文件夹内的所有静态文件放置于 SpringBoot 项目的 main/resource/static 目录下(该目录为 springboot 的静态文件目录)

在 maven 工具栏选择生命周期(lifecircle)中的 install 项生成 jar 包,jar 包默认生成在 target 目录下


三、服务器上的部署

将 SpringBoot 生成的 Jar 包上传至服务器,在服务器中输入以下指令即可运行该项目。

 java -jar xxx.jar 

在前后端分离的项目中,用户的入口是前端端口路径,前端进行用户交互后通过后端提供的 api 接口(url)进行前端与后端的数据交互,所以只需要访问前端的端口即可访问部署的项目。

直接输入 java -jar xxx.jar 将在前台运行项目,关闭 shell 进程就结束了,所以一般使用 nohup 将该项目运行于后台运行:

nohup java -jar xxx.jar &

上述命令会将日志默认输出在同级文件夹的 nohup.log 中,如果需要指定日志路径或直接不输出日志可以参考以下指令( xxx 替换为实际名字或路径 )

nohup java -jar xxx.jar > xxx.log  2>&1 & 

为该进程配置守护进程也可以达到同样的效果,但是我懒,这边一切从俭,有需要的小伙伴自行查找相关教程。


四、端口映射

用户只能通过访问 域名:端口 的形式访问该项目,如果要将前端项目端口映射到 80 端口(80 端口在地址栏中可以省略,即直接通过域名访问)可以使用 nginx 进行端口映射

nginx 的安装不多赘述,直接使用安装指令( centOS: yum install nginx / ubuntu: apt-get install nginx)即可安装,如果跟我一样懒就不必大费周章通过源码安装,安装成功后测试运行

nginx 的配置在本文也不是重点,类似的教程很多,有需要的可以自行去寻找,这里提供一个最简单的映射配置:

  • /etc/nginx/conf.d 文件夹中创建 xxx.conf (xxx 为你的项目名称)

  • 进入编辑该配置如下,写好后保存重启 nginx 即可生效

    server{
    	listen 80;
    	server_name xxx.xxx.com; # 你要映射的域名
    	
        proxy_pass http://IP:PORT; # 你的源IP与端口号
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    

本文的端口映射仅提供最基础的配置,简单有效,有小伙伴需要进阶配置请自行搜索嘿嘿


五、请求跨域

当前后端项目的端口不一致时会产生请求跨域的问题,类似的处理方式网上有很多,有通过前端处理有通过后端处理,这边使用一个较为简单的后端处理方法:在 SpringBoot 项目中单独编写一个跨域请求的配置类,新建一个类将下方代码全选复制粘贴即可

@Configuration
public class CrossConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("*")
                .allowedMethods("GET", "HEAD", "POST", "DELETE", "OPTIONS", "PUT")
                .allowCredentials(true)
                .maxAge(3600)
                .allowedHeaders("*");
    }
}

本文到这也就结束了,拜拜啦各位,如果对你有帮助的话记得给我点个赞喔,蟹蟹

### Spring Boot Vue 合并部署实现方法 #### 1. 构建流程概述 为了成功地将基于 Spring Boot 的后端应用与基于 Vue.js 的前端应用合并部署,通常采用分步构建的方式。首先独立完成前后端项目的构建工作,之后将前端资源嵌入到后端项目中形成单一的应用程序包。 #### 2. 前端构建过程 对于前端部分,利用 `npm run build` 或者类似的命令可以生成生产环境所需的静态文件(HTML, CSS, JS)。这些文件会被放置在一个特定目录下,比如 `dist/` 文件夹内[^2]。 ```bash cd frontend-project npm install npm run build ``` #### 3. 将前端资源集成至后端工程 接下来把上述提到的 `dist/` 目录中的内容复制到 Spring Boot 应用的 `/src/main/resources/static/` 路径下面。这样当应用程序启动时就能自动识别并提供给客户端访问了[^3]。 #### 4. 修改MANIFEST.MF配置 确保在打包成可执行 JAR 文件之前已经正确设置了 MANIFEST.MF 中的相关属性,以便能够顺利加载类路径下的资源文件以及第三方库[^1]。 #### 5. 使用Maven插件自动化此过程 可以通过编写自定义 Shell 脚本来简化整个操作步骤;也可以尝试调整 Maven 插件设置,在每次执行 `mvn clean package` 指令的同时触发前端项目的编译任务。 #### 6. 部署与管理 最后一步就是按照常规方式进行 Java Web 应用的服务发布,并可通过命令行工具监控其状态及停止正在运行实例: ```bash ps -ef | grep java # 查找Java进程ID kill -9 <pid> # 结束指定PID对应的进程 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值