Linux/麒麟系统上部署Vue+SpringBoot前后端分离项目

目录

1. 前端准备工作

        1.1 在项目根目录创建两份环境配置文件

        1.2 环境配置

2. 后端准备工作

        2.1 在项目resources目录创建两份环境配置文件

        2.2 环境配置

3. 前后端打包

        3.1 前端打包

        3.2 后端打包

4、服务器前后端配置及部署

        4.1 下载、安装、启动Nginx

        4.2 前端项目部署到Nginx

        4.3 后端配置


1. 前端准备工作

1.1 在项目根目录创建两份环境配置文件

1.2 环境配置

.env.development

# 开发环境
NODE_ENV = 'development'

# 指定项目的API请求URL
VUE_APP_BASE_TARGET='http://127.0.0.1:8888'

# 指定项目启动地址
VUE_APP_BASE_HOST='127.0.0.1'

# 指定项目启动端口
VUE_APP_BASE_PORT=8080

.env.production

# 正式环境
NODE_ENV = 'production'

# 指定项目的API请求URL
VUE_APP_BASE_TARGET='http://127.0.0.1:8889'

# 指定项目启动地址
VUE_APP_BASE_HOST='127.0.0.1'

# 指定项目启动端口
VUE_APP_BASE_PORT=8081
# 指定项目的API请求URL
VUE_APP_BASE_TARGET='http://127.0.0.1:8889'

说明:这边的地址要与后端启动地址和端口保持一致

vue.config.js

module.exports = defineConfig({

  //其他配置
   ……

  // 代理配置(解决跨域问题)
  devServer: {
    //启动地址
    host: process.env.VUE_APP_BASE_HOST,
    //启动端口
    port: process.env.VUE_APP_BASE_PORT,
    proxy: {
      // 代理http://host:port/api/后的所有路由
      '/api': {
        // 目标地址 --> 服务器地址
        target: process.env.VUE_APP_BASE_TARGET,
        // 允许跨域
        changeOrigin: true,
        // 重写地址
        pathRewrite: {}
      }
    }
  }
});

说明:使用process.env. 获取到配置文件中定义的变量

 package.json

 "scripts": {
    "serve": "vue-cli-service serve --mode development",
    "build": "vue-cli-service build --mode production",
    "lint": "vue-cli-service lint"
  },

说明:

 --mode development 表示启动的时候采用本地环境配置(.env.development)
 --mode production    表示编译打包的时候采用生产环境配置(.env.production)

这边的 --mode  xxx,xxx来源于环境配置文件中的名称

# 正式环境
NODE_ENV = 'production'

2.后端准备工作

2.1 在项目resources目录创建两份环境配置文件

2.2 环境配置

application.properties

server.port=8880

#多环境配置
spring.profiles.active=prod

说明:指定默认启动端口,默认启动生产环境配置

application-dev.properties

server.port=8888

application-prod.properties

server.port=8889

3.前后端打包

3.1 前端打包

依据自身使用的包管理工具,对应命令打包(这边我使用的是yarn)

yarn build

打包生成dist文件夹

3.2 后端打包

打包后生成target文件夹,找到jar包

这边我们打包方式采用jar包,方便后面启动。如果在pom.xml文件中没有配置war打包方式,那么默认就是jar。

扩展:war包和jar包区别

Spring Boot可以打包成WAR包,并且默认包含了Tomcat。在打包过程中,Spring Boot会自动检测是否存在Tomcat,如果存在则将其包含在WAR包中。如果不希望包含Tomcat,可以通过设置spring.embedded.tomcat.enabled属性为false来禁用Tomcat。但即使WAR包内置了Tomcat,也不能像JAR包一样直接通过命令启动。WAR包是用于部署在Web服务器或应用服务器上的文件格式,它必须被部署到一个支持Servlet容器(如Tomcat)的服务器上,并通过该服务器来运行应用程序。

虽然WAR包内置了Tomcat,但它并不包含整个Tomcat服务器,而只是包含了您的应用程序本身和所需的依赖项。因此,您不能直接通过命令启动WAR包,而是需要将其部署到一个Tomcat服务器上,并使用该服务器的命令来启动应用程序。

Spring Boot可以打包成可执行的JAR包,并且默认内置了Tomcat服务器。因此,您可以通过命令直接启动Spring Boot应用程序,而不需要将其部署到一个独立的Tomcat服务器上。如果您希望以可执行JAR包的方式运行您的Spring Boot应用程序,可以使用Spring Boot的JAR打包插件来创建一个包含所有依赖项和应用程序本身的可执行JAR包。

4、服务器前后端配置及部署

工具准备:xftp

作用:传输打包文件到虚拟机

4.1 下载、安装、启动Nginx

Linux 部署 nginx(下载、安装、启动)

4.2 前端项目部署到Nginx

将打包后的dist文件夹放入nginx根目录下

/usr/local/nginx

② 重命名dist文件夹为项目名字,便于阅读(下方为bx)

/usr/local/nginx/conf   中找到nginx.conf配置文件,开始配置:

#user  nobody;
user root;

说明:指的linux中的用户,会涉及到nginx操作目录或文件的一些权限,默认为nobody,改为root

server {
   listen       8081;
   server_name  127.0.0.1;
   location / {
       root   bx;
       index  index.html index.htm;
   }

   location /api {
       proxy_pass  http://127.0.0.1:8889
   }
}

说明:如果配置多个项目,只需要在server同级下再创建一个相同的server{} 修改配置即可。

③ 重启nginx

至此访问127.0.0.1:8081,前端页面已经可以展示。但是因为后端没有启动,没有数据。

扩展如果后端接口不带有/api,但是前端为了某些需要,加上了/api开头。

this.$axios.get("/api/xxx/xxxx")

此时代理中若不对地址进行重写,是访问不到正确的后端接口。需要配置两个地方:

 vue.config.js

  // 代理配置(解决跨域问题)
  devServer: {
    //启动地址
    host: process.env.VUE_APP_BASE_HOST,
    //启动端口
    port: process.env.VUE_APP_BASE_PORT,
    proxy: {
      // 代理http://host:port/api/后的所有路由
      '/api': {
        // 目标地址 --> 服务器地址
        target: process.env.VUE_APP_BASE_TARGET,
        // 允许跨域
        changeOrigin: true,
        // 重写地址
        pathRewrite: {
           '^/api': ''
        }
      }
    }
  }

nginx.conf

server {
   listen       8081;
   server_name  127.0.0.1;
   location / {
       root   bx;
       index  index.html index.htm;
   }

   location /api {
       proxy_pass  http://127.0.0.1:8889
       #添加下面这行
       rewrite "^/api/(.*)$" /$1 break;
   }
}       

4.3 后端配置

由于我们上述将springboot项目打包成了jar包,自带完整的tomcat服务器,所以只需要将打包好的jar包上传到虚拟机项目文件夹中,通过命令启动:

java -jar yourproject.jar

至此,前后端已经全部部署完毕,已经可以通过127.0.0.1:8081正常访问项目了。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/153550.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

学而优则“创”西电学子助力openGauss教学“破圈”,一举斩获金奖

在你的大学生涯,是否有过发现某本教材作者就是本校老师的经历?是否曾经为在课堂上见到作者本人而感到些许骄傲?实际上,这样的巧合在很多专业领域常有发生,因为一线教师往往既是知识的传道者,也是知识的生产…

Kafka 集群如何实现数据同步?

哈喽大家好,我是咸鱼 最近这段时间比较忙,将近一周没更新文章,再不更新我那为数不多的粉丝量就要库库往下掉了 T﹏T 刚好最近在学 Kafka,于是决定写篇跟 Kafka 相关的文章(文中有不对的地方欢迎大家指出)…

简单高效的定制移动固态硬盘,稳定易用的办公小助手

我在平时的工作中,常常需要处理各种大文件和数据,如果硬盘速度跟不上,那工作效率就会大幅降低。今年固态硬盘的价格大幅下降,有很多国产品牌加入其中,很容易找到一款性价比高的固态硬盘,搭配硬盘盒使用&…

EV代码签名证书

为了增强软件的安全性和可信度,EV代码签名证书(Extended Validation Code Signing Certificate)成为了一种具有最高级别保障的关键工具。 EV代码签名证书是一种由受信任的证书颁发机构(CA)或证书供应商提供的高级别代…

免费最强下载工具IDM,没有之一

IDM(Internet Download Manager)下载工具是我见过的最强下载工具,没有之一。主要以下特点: 下载程度超快实时检测下载行为下载任何文件探测视频下载地址,几分钟下载高清视频可多进程下载,可多线程下载 IDM官网地址:下…

性能测试知多少---系统架构分析

之前有对性能需求进行过分析,那篇主要从项目业务、背景等角度如何抽丝剥茧的将项目的需求抽离出来。在我们进行需求的时候也需要对被测项目的架构有一定的认识,如果不了解被测系统的架构,那么在后期的性能分析与调优阶段将无从下手。 简单系…

八股文-TCP的三次握手

TCP协议是一种面向连接、可靠传输的协议,而建立连接的过程就是著名的三次握手。这个过程保证了通信的双方能够同步信息,确保后续的数据传输是可靠和有序的。本文将深入解析TCP三次握手的步骤及其意义。 漫画TCP的三次握手 TCP连接的建立采用了三次握手的…

Ubuntu16.04上安装Docker

Ubuntu16.04上安装Docker 更新 apt 包索引: sudo apt-get update安装依赖包,以便使用 HTTPS 仓库 sudo apt-get install apt-transport-https ca-certificates curl software-properties-common添加 Docker GPG 密钥 curl -fsSL https://download.docker.com/linux/ubuntu…

[Mac软件]Infuse 7 PRO v7.6.3 一个强大的视频播放器(激活版)

使用Infuse制作您的视频内容,这是在iPhone、iPad、Apple TV和Mac上观看几乎任何格式的视频的好方法。无需转换文件!Infuse针对macOS 12进行了优化,具有强大的流媒体选项、Trakt同步以及对AirPlay和字幕的无与伦比的支持。华丽的界面。精确控制…

元组(Tuple)操作的经验分享

一、创建元组 复制代码 代码如下: tup1 (physics, chemistry, 1997, 2000); tup2 (1, 2, 3, 4, 5 ); tup3 "a", "b", "c", "d"; 创建空元组 复制代码 代码如下: tup1 (); 元组中只包含一个元素时,需要在元素后面添…

webpack系列之:手把手教你 打包和使用js文件

项目初始化 mkdir demo1 cd demo1 npm init // 一路回车 创建一个package.json文件webpack安装 npm install --save-dev webpackJs文件打包 可以先看一下最后的项目情况,然后我们再开始一步步操作 创建需要打包的js文件 创建文件夹用于存放js文件 // 创建文…

Win10开启FTP与配置

#1.控制面板>程序>启用或关闭Windows功能> (控制面板可在 桌面右键>个性化>主题>桌面图标设置>勾选控制面板>确定) Internet Information Services---勾選FTP服務器,IIS管理控制台 #2.win鍵輸入IIS打开IIS #3.右击网站添加FTP站点 #4.输入…

rtsp、rtmp、m3u8、flv、mkv、3gp、mp4直播流测试地址

✍️作者简介:沫小北/码农小北(专注于Android、Web、TCP/IP等技术方向) 🐳博客主页:沫小北/码农小北 开源中国、稀土掘金、51cto博客、博客园、知乎、简书、慕课网、CSDN 🔔如果文章对您有一定的帮助请&…

原来你不会找资源,三个宝藏白嫖书籍网站,阅读改变生活(一)

[无名图书] - 探索无尽的书海 致力于为你打开一扇通往无限知识和无穷想象的大门。从畅销小说到学术专著,书库涵盖了各个领域,满足了各种阅读胃口。无论你是文学爱好者、学术追求者还是正在寻找新奇刺激的冒险者,这都是你不可错过的阅读伴侣。…

tomact部署Nginx 高负载

准备工具 安装jkd 双击程序开始安装, 点击下一步 选择安装路径 安装完成,点击关闭 配置java的环境变量 鼠标右键点击车我的电脑,选择属性点击 系统设置 点击环境变量 点击下方的新建 变量名输入JAVA_HOME 变量值输入jdk安装的路径 点击确认 在系统变量中找到path,然后点击…

C#asp.net考试系统+sqlserver

C#asp.net简易考试系统 sqlserver在线考试系统学生登陆 判断学生是否存在 选择课程名 科目 可以进行答题操作,已经考试的课程不能再次答题, 自动根据课程名对应的题库生成试卷界面 加入选项类容 说明文档 运行前附加数据库.mdf(或sql生成数…

STM32——STM32F103时钟解析(正点原子资料+HAL库代码分析)

文章目录 前言时钟树详解系统时钟配置系统时钟使能配置 前言 上次写系统时钟解析的时候说出一篇103的时钟解析,我就整理HAL库开发的正点的资料,给小白梳理,我也是小白,不做权威使用。 时钟树详解 在 STM32 中,有五个…

零代码实现问卷网与巨量引擎的对接

通过数环通,您可以使用不到几分钟的时间即可实现问卷网与巨量引擎的对接与集成,从而高效实现工作流程自动化,降本增效! 1.产品介绍 巨量引擎是字节跳动旗下的营销服务品牌,它整合了字节跳动旗下的产品及海量内容&…

RTLS 颠覆制造业的 方式之——跟踪

进行中工作跟踪 在制品 (WIP) 跟踪主要关注生产中的项目如何从一个步骤移动到另一步骤。因此,运动是此类流程管理的共同点,使得实时位置的洞察力几乎在每个时刻都很有用。 1. 传递时间和运动数据 制造几乎总是涉及许多同时移动的事物。无论是在同一条…