SpringBoot+Vue项目打包部署

  • 演示项目是SpringBoot+VUE前后端分离的。需要分别部署前端、后端项目,做集群的话需要将后端项目部署到多台服务器中。

使用的技术及服务器:
– Linux系统:Centos7
– 前端:VUE+Nginx
– 后端:SpringBoot+JDK1.8+Redis+Tomcat+MySQL+Maven

部署前的准备工作

0.安装环境及相关软件工具
1.MySQL中创建数据库、数据表、导入初始数据
2.修改项目的数据库相关配置(url,username,password等)
3.修改Redis相关配置(host,port,password等)
4.日志相关配置(日志路径、输出字符集UTF-8等)

前端部署
  • 1.将项目源码打包为zip格式(有隐藏文件,不打包可能不完整),上传到对应的服务器中指定目录下。
#解压文件
unzip XXX.zip
  • 2.打包项目

    • 进入解压后的目录
    cd XXX/
    
    • 安装依赖
    #使用淘宝的镜像源
    npm install --unsafe-perm --registry=https://registry.npm.taobao.org  
    
    • 打包
    npm run build:prod
    
  • 3.打包完成后,会在当前目录下生成/dist目录

  • 4.配置nginx

    • 到安装的Nginx目录下
    cd /usr/local/nginx/conf
    
    • 修改nginx.conf文件
    #第一处改动
    #user  nobody
    修改为
    user  root # 防止权限问题,生产上可以根据实际用户设置
    
    #第二处改动
        server {
            listen      80;
            server_name localhost;
    
            location / {
                root  /**/**/***/****/dist;#修改此处目录为打包后的/dist
                index index.html index.htm;
            }
            
            #第三处改动
            # /***api/ 表示的是转发路径
            location /***api/ {
                proxy_set_header Host $http_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;
                proxy_pass http://ip:port/; #此处为实际的后端IP和Port
            }
        }
    
    • 如果是集群配置,则除了上面的第一处、第二处改动外,第三处如下改动
    #第一处改动
    #user  nobody
    修改为
    user  root # 防止权限问题,生产上可以根据实际用户设置
    
    # 第三处 第一部分改动
    # 配置集群
    <upstream ruosys{
        server ip1:port1 weight=5
        server ip2:port2 weight=3
    }
    
    #第二处改动
        server {
            listen      80;
            server_name localhost;
    
            location / {
                root  /**/**/***/****/dist;#修改此处目录为打包后的/dist
                index index.html index.htm;
            }
            
            #第三处 第二部分改动
            # /***api/ 表示的是转发路径
            location /***api/ {
                proxy_set_header Host $http_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;
                proxy_pass http://ruosys/; #此处为指定的集群名称
            }
        }
    
    • 重新加载配置
    /usr/local/nginx/sbin/nginx  -s reload
    
  • 5.到nginx目录下启动nginx即可

cd /usr/local/nginx/sbin/
./nginx
后端部署
  • 1.将项目源码打包为zip格式(有隐藏文件,不打包可能不完整),上传到对应的服务器中指定目录下。
#解压文件
unzip XXX.zip
  • 两种打包方式:
    • 1.打包项目(jar包)

      • 进入解压后的目录
      cd XXX/
      
      • 打包
      mvn package
      
      • 打包完成后,在当前目录下生成target目录,进入该目录就可以看到打包完成的jar包
      • 备份打包完成的jar包到上一级目录
      cp ./xxx.jar  ../xxx.jar
      
      • 执行jar包启动项目
      nohup java -jar xxx.jar &
      
    • 2.打包项目(war包)

      • 在项目中修改pom.xml
      <!--打包方式改为war-->
      <packaging>war</packaging
      
      <!-- 将SpringBoot自带的Tomcat排除 -->
      <dependency>
          <groupId>org.springframeword.boot</groupId>
          <artifactId>spring-boot-starter-web</artifactId>
          <scope>provided</scope>
      </dependency>
      
      • 在项目启动类的同级目录下添加一个启动类
      import org.springframework.boot.builder.SpringApplicationBuilder;
      import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
      
      public class SpringBootStartApplication extends SpringBootServletInitializer {
          @Override
          protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
              //指向原来的启动类XXX.class
              return builder.sources(XXX.class);
          }
      }
      
      
      • 将修改后的文件上传到服务器项目下对应的目录中替换原来文件。
      • 到项目的目录下
        • 执行清理(处理之前打jar包生成的文件)
        mvn clean
        
      • 打包
      mvn package
      
      • 打包完成后,在当前目录下生成target目录,进入该目录就可以看到打包完成的war包
      • 备份打包完成的war包到上一级目录
      cp ./xxx.jar  ../xxx.war
      
      • 将war包放置在tomcat的webapps目录下
      cp ..../xxx.war ./
      
      • 修改tomcat的配置文件server.xml,使tomcat根目录指向当前部署的项目而不是tomcat主页
              <Host name="localhost" appBase="webapps"
                unpackWARs="true" autoDeploy="true">
                  #添加下面配置,使得访问根目录时直接访问项目而不是tomcat首页
                  <Context path="/" docBase="/usr/local/tomcat/apache-tomcat-8.5.55/webapps/ruosys" reloadable="false" </Context>
      
      • 启动tomcat
      service tomcat start
      
一个完整的外卖系统,包括手机端,后台管理,api 基于spring boot和vue的前后端分离的外卖系统 包含完整的手机端,后台管理功能 技术选型 核心框架:Spring Boot 数据库层:Spring data jpa/Spring data mongodb 数据库连接池:Druid 缓存:Ehcache 前端Vue.js 数据库:mysql5.5以上,Mongodb4.0(不要使用最新版4.2) 模块 flash-waimai-mobile 手机端站点 flash-waimai-manage后台管理系统 flash-waimai-api java接口服务 flash-waimai-core 底层核心模块 flash-waimai-generate 代码生成模块 快速开始 数据存储采用了mysql和mongodb,其中基础管理配置功能数据使用mysql,业务数据使用mongodb存储。 创建mysql数据库 CREATE DATABASE IF NOT EXISTS waimai DEFAULT CHARSET utf8 COLLATE utf8_general_ci; CREATE USER 'waimai'@'%' IDENTIFIED BY 'waimai123'; GRANT ALL privileges ON waimai.* TO 'waimai'@'%'; flush privileges; mysql数据库创建好了之后,启动flash-waimai-api服务,会自动初始化数据,无需开发人员自己手动初始化数据 安装mongodb并创建数据库:flash-waimai 使用mongorestore命令 导入mongodb数据,由于测试数据量较大,打包放在了百度云盘:链接:https://pan.baidu.com/s/1mfO7yckFL7lMb_O0BPsviw 提取码:apgd 下载后将文件解压到d:\elm,如下命令导入数据: mongorestore.exe -d flash-waimai d:\\elm 下载项目测试数据的图片(商家和食品图片):链接:https://pan.baidu.com/s/1rvZDspoapWa6rEq2D_5kzw 提取码:urzw ,将图片存放到t_sys_cfg表中system.file.upload.path配置的目录下 启动管理平台:进入flash-waimai-manage目录:运行 npm install --registry=https://registry.npm.taobao.org运行npm run dev启动成功后访问 http://localhost:9528 ,登录,用户名密码:admin/admin 启动手机端:进入flash-waimai-mobile目录:运行 npm install --registry=https://registry.npm.taobao.org运行npm run local启动成功后访问 http://localhost:8000
<think>嗯,用户想了解如何将SpringBootVue项目打包部署。首先,我需要回忆一下相关的步骤。根据之前的引用内容,用户提供的几个引用都提到了前后端分离项目打包部署流程。比如,引用1和引用2提到后端打包成JAR,前端生成dist文件夹放到后端static目录。引用3和4提到了服务器部署需要JDK、MySQL、Nginx,还有内网穿透的方法。 首先,我需要确认用户的环境。用户可能是在开发环境中完成了项目,现在需要部署到生产环境,可能是Linux服务器。用户的问题集中在打包部署的教程,所以需要分步骤讲解前后端打包,然后部署到服务器。 接下来,前端部分。Vue项目通常使用npm run build生成dist文件夹,然后将这些静态文件放到SpringBoot的static目录下。这样打包后的前端文件会被包含在后端的JAR包中,方便一起部署。但引用3也提到另一种方式,使用Nginx单独部署前端,这样可能需要配置反向代理到后端API。需要比较这两种方法的优缺点,可能用户希望的是更常见的整合部署方式。 后端部分,SpringBoot打包成JAR,使用Maven或Gradle插件。需要注意pom.xml中的配置,确保打包类型是jar,并且依赖正确。打包完成后,通过scp或FTP上传到服务器,然后用java -jar命令运行。同时,可能需要处理服务器的环境变量,比如数据库配置,可以使用application-prod.properties来区分生产环境配置。 服务器部署部分,需要安装Java运行环境、MySQL数据库,以及可能的Nginx。如果用户选择前后端分离部署,Nginx用来托管前端文件,并代理后端请求。但根据引用2和3,更常见的是将前端文件放在后端static目录,这样只需运行一个JAR文件,简化部署步骤。但需要考虑静态资源的路径是否正确,避免404错误。 另外,引用4提到了内网穿透,可能用户有本地测试需求,或者需要将服务暴露到外网。这部分可以作为补充内容,但可能不是主要步骤。 用户可能遇到的常见问题包括:前端路由问题导致404,需要配置后端处理所有未知路径到前端入口;跨域问题,但在部署后由于同源可能不存在;数据库连接失败,需要检查服务器上的MySQL配置和权限;JAR包运行端口被占用,需要确认服务器端口开放情况。 最后,生成相关问题需要考虑用户可能的后续疑问,比如性能优化、HTTPS配置、日志管理、自动化部署等,这些都可以作为相关问题推荐给用户。</think>### SpringBoot+Vue项目打包部署详细教程 根据多个技术文档的指导[^1][^2][^3],以下是整合后的标准部署流程: #### 一、项目打包阶段 1. **Vue前端打包** - 在VSCode中打开项目 - 执行命令生成dist目录: ```bash npm run build ``` - 将dist目录下的所有文件复制到SpringBoot项目的`src/main/resources/static`目录 2. **SpringBoot后端打包** - 确认`pom.xml`配置: ```xml <packaging>jar</packaging> ``` - 使用Maven命令打包: ```bash mvn clean package -DskipTests ``` - 生成的jar包位于`target`目录(约20-50MB)[^1][^4] #### 二、服务器准备(Linux) 1. **环境要求** - JDK8+ - MySQL5.7+ - Nginx(可选) 2. **上传文件** ```bash scp target/your-project.jar user@server:/opt/app ``` #### 三、部署流程 1. **数据库配置** ```sql CREATE DATABASE project_db CHARACTER SET utf8mb4; ``` 2. **运行SpringBoot应用** ```bash nohup java -jar your-project.jar --spring.profiles.active=prod & ``` > 使用`--spring.profiles.active`指定生产环境配置 3. **Nginx配置(可选)** ```nginx server { listen 80; server_name your-domain.com; location / { root /opt/app/dist; try_files $uri $uri/ /index.html; } location /api { proxy_pass http://localhost:8080; } } ``` #### 四、验证部署 1. 检查端口监听: ```bash netstat -tlnp | grep 8080 ``` 2. 访问测试: - 后端API:`http://server_ip:8080/api/health` - 前端页面:`http://server_ip:80` #### 常见问题处理 1. **静态资源404错误**:检查dist文件是否完整复制到static目录 2. **数据库连接失败**:确认`application-prod.properties`配置正确 3. **端口冲突**:使用`server.port`参数修改默认端口
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值