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正常访问项目了。
相关文章:

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 前端项目部署…...
STM32在FreeRTOS下的us延时
STM32在FreeRTOS下的us延时 前言 freeRTOS下跑SPI时需要微秒级别的延时,但是freeRTOS只提供了毫秒级的,记录一下实现us延时的方法。 前期分析 最简单的方式就是开个定时器或者干脆直接计算一下用nop做都可以实现us延时,但是显然还是使用滴…...

软件测试/人工智能丨深入人工智能软件测试:PyTorch引领新时代
在人工智能的浪潮中,软件测试的角色变得愈发关键。本文将介绍在人工智能软件测试中的一些关键技术,以及如何借助PyTorch深度学习框架来推动测试的创新与升级。 PyTorch:深度学习的引擎 PyTorch作为一种开源的深度学习框架,为软件…...

Android 当中的 Fragment 协作解耦方式
Android 当中的 Fragment 协作解耦方式 文章目录 Android 当中的 Fragment 协作解耦方式第一章 前言介绍第01节 遇到的问题第02节 绘图说明 第二章 核心代码第01节 代理人接口第02节 中间人 Activity第03节 开发者A第04节 开发者B第05节 测试类 第一章 前言介绍 第01节 遇到的…...

城市网吧视频智能监控方案,实现视频远程集中监控
网吧环境较为复杂,电脑设备众多且人员流动性大,极易发生人员或消防事故,亟需改变,TSINGSEE青犀AI智能网吧视频监管方案可以帮助实现对网吧环境和用户活动的实时监控和管理。 1、视频监控系统 在网吧内部布置高清摄像头࿰…...
C#WPF视频播放器实例
本文实例演示C#WPF视频播放器 实例如下: 修改mainwindow的代码 <Windowx:Class="PlayerDemo.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xml…...

【uniapp】Google Maps
话不多说 直接上干货 提前申请谷歌地图账号一、新建地图 使用h5获取当前定位或者使用三方uniapp插件 var coords ""navigator.geolocation.getCurrentPosition(function(position) {coords {lat: position.coords.latitude,lng: position.coords.longitude};lats …...

C语言变量与常量
跟着肯哥(不是我)学C语言的变量和常量、跨文件访问、栈空间 栈空间还不清楚,期待明天的课程内容 C变量 变量(Variable)是用于存储和表示数据值的名称。 主要包括四个环节:定义、初始化、声明、使用 在我刚…...

AI创作系统ChatGPT网站源码/支持DALL-E3文生图/支持最新GPT-4-Turbo模型+Prompt应用
一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如…...

二维码智慧门牌管理系统升级,异常门牌聚合解决方案助力高效管理
文章目录 前言一、异常门牌聚合解决方案 前言 在今天的数字化时代,智慧城市已成为发展趋势,其中二维码智慧门牌管理系统扮演着至关重要的角色。通过对门牌信息进行数字化管理,该系统极大提升了城市管理的效率和便捷性。然而,随着…...

【XTDrone Ubuntu20.04】XTDrone+ Ubuntu20.04 + PX4安装
XTDrone仿真平台配置 文章目录 XTDrone仿真平台配置依赖安装 ROS一键安装Marvos安装PX4 安装安装QTGroundControlXTDrone下载安装 环境: VMWare 16.0 Ubuntu 22.04 (因为没人配过)Ubuntu 20.04 参考文章: 仿真平台基础配置 (yuq…...

河北大学选择ZStack Cube超融合一体机打造实训云平台
河北大学通过云轴科技ZStack Cube超融合一体机构建校园实训云平台,部署测试仅耗时1天,该平台能够更快地为学生提供高性能、高可用的云主机、云存储和云网络服务;同时也能满足日常运维管理要求,为学生提供更好的实训环境。 河北省…...

IDEA远程一键部署SpringBoot到Docker
IDEA是Java开发利器,Spring Boot是Java生态中最流行的微服务框架,docker是时下最火的容器技术,那么它们结合在一起会产生什么化学反应呢? 一、开发前准备 1. Docker安装 可以参考:https://docs.docker.com/install/ 2…...
索引三星结构
三星索引的定义,可以先给我们对索引优化提供一个大概的思路: 满足第1颗星: 取出所有的等值谓词的列,作为索引最开头的列——以任意顺序都可以。 满足第2颗星: 将order by加入到索引列,不要改变这些列的顺…...
rust 笔记 高级错误处理
文章目录 错误处理组合器or() 和 and()or_else() 和 and_then()filtermap() 和 map_err()map_or() 和 map_or_else()ok_or() and ok_or_else() 自定义错误类型错误转换 From 特征 归一化不同的错误类型Box<dyn Error>自定义错误类型 简化错误处理thiserroranyhow 错误处理…...
python+Django 使用apscheduler实现定时任务 管理调度
apscheduler实现定时任务 管理调度 在Django 项目中经常会用到定时任务去处理一些业务处理 使用 APScheduler 可以轻松地实现定时任务的管理和调度。你可以通过以下步骤来创建、启动、停止和删除定时任务: 1.创建调度器对象: from apscheduler.schedu…...

Java编程中,异步操作流程中,最终一致性以及重试补偿的设计与实现
一、背景 微服务设计中,跨服务的调用,由于网络或程序故障等各种原因,经常会出现调用失败而需要重试。另外,在异步操作中,我们提供接口让外部服务回调。回调过程中,也可能出现故障。 这就要求我们主动向外…...

吴恩达《机器学习》8-7:多元分类
在机器学习领域,经常会遇到不止两个类别的分类问题。这时,需要使用多类分类技术。本文将深入探讨多类分类,并结合学习内容中的示例,了解神经网络在解决这类问题时的应用。 一、理解多类分类 多类分类问题是指当目标有多个类别时…...

Postman批量运行用例
近期在复习Postman的基础知识,在小破站上跟着百里老师系统复习了一遍,也做了一些笔记,希望可以给大家一点点启发。 一)注意点 有上传文件的接口,需要做如下设置: 1、打开能读取外部文件的开关 2、把需要…...
20个Golang最佳实践
在本教程中,我们将探讨 Golang 中的 20 个最佳编码实践。它将帮助您编写有效的 Go 代码。 #20:使用正确的缩进 良好的缩进使您的代码具有可读性。一致地使用制表符或空格(最好是制表符)并遵循 Go 标准缩进约定。 package main …...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...

招商蛇口 | 执笔CID,启幕低密生活新境
作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...
jmeter聚合报告中参数详解
sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample(样本数) 表示测试中发送的请求数量,即测试执行了多少次请求。 单位,以个或者次数表示。 示例:…...
怎么让Comfyui导出的图像不包含工作流信息,
为了数据安全,让Comfyui导出的图像不包含工作流信息,导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo(推荐) 在 save_images 方法中,删除或注释掉所有与 metadata …...

Python 实现 Web 静态服务器(HTTP 协议)
目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1)下载安装包2)配置环境变量3)安装镜像4)node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1)使用 http-server2)详解 …...