Spring + vue 项目部署(全网最详细教程_含内网穿透部署)

news2025/1/12 9:44:42

本项目以Springboot 2.7.11和vue2做参考示例


第一步

展示前后端代码的成品

前端Vue

后端Java

项目写完后,差不多就是这个样子,仅供参考!


第二步

开始打包前后端项目

前端打包的方式有以下几种:

方法1:

#直接打包,简单明了,这个会在你的项目里面出现一个dist的打包文件


npm run build
方法2:

#选择打包路径,可以指定你打包的路径

npm run build -- --dest /path/to/java/project      #/path/to/java/project指定你的目录
方法3:

#使用IDEA开发工具进行打包

后端打包

安装成功后就会多出以下目录

        

 admin-0.0.1-SNAPSHOT.jar         这个就是后端打包的jar包


第三步

开始部署项目,部署项目这里有2个方法

方法1:合并部署

就是把前端打包好的静态文件放到你的java工程目录下src/main/resources/static

注意:这个是静态是指dist目录下,不要把dist这级目录一起拷贝过来了

然后就是直接打包你的项目就行,打开的你的虚拟机或服务器把jar放到一个目录里面,然后运行它

启动命令有2种

#前台启动
java -jar jar包名称
	
#后台启动
nohup java -jar jar 包名称 &

后台启动如何关闭运行的项目

#查找有关java的进程
ps -ef|grep java

#关闭进程
kill -9 pid

这个方法比较简单,不需要使用nginx代理

方法2:分离部署

就是前后端分开单独部署

首先和上面一样,先打包好前后端项目,见dist前端资源文件夹和后端jar包文件放在一个目录(与可以不放到一起,主要方便找)

后端正常启动,前端使用nginx代理,找到你的nginx.conf目录,在你的另一个server结尾加上这个服务器的配置

#服务器
server{
    listen 8080;
    server_name 127.0.0.1; #你的服务器ip或域名
     
	#前端
    location / {
        root /usr/local/code_jar/dist;
        index index.html index.htm;
        try_files $uri $uri /index.html;
    }
	#后端
    location /proxy{
        proxy_pass http://127.0.0.1:8081/; #后端接口地址
    }
}

注意: try_files $uri $uri /index.html;这个根据你的vue路由模式可选择是否需要,用来解决history模式下,刷新路由404

这样就算成功了,可以直接访问到你的项目了


内网穿透部署

如果没有服务器,就可以使用,以下方法来解决!!!

注意事项:内网穿透是让你的内网ip暴露在公网,是很不安全,仅限个人测试比较好。

我这这里使用的内网穿透工具是花生壳+NATAPP,这里我使用了2个内网穿透工具的原因就是前后端分离项目需要分别穿透前后端(这2个工具都有免费的通道,供大家使用!)

比如,我的前端端口是8080,后端端口是8081,分别穿透后,花生壳会给出一个HTTPS的域名,

NATAPP给出一个HTTP的域名,然后前端的接口地址要使用后端穿透的域名

如果不想改,也可以使用nginx代理,来转发给后端,这里方法和上面差不多,就不细说了

另外穿透前端vue后,访问页面出现这个 invalid host header

解决方案:

在你的vue.config,js里面加上

 devServer: {
    disableHostCheck:true,
};

如果你是vue-cli5就加这个,如果使用就会报错找不到这个属性,因为已经弃用了

 devServer: {
    historyApiFallback: true, //启用历史记录API回退
    allowedHosts: "all", //允许的主机
};

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据结构】【C++】红黑树RBTree的模拟实现(平衡搜索二叉树)

【数据结构】&&【C】红黑树的模拟实现(平衡搜索二叉树) 一.红黑树的性质二.红黑树的模拟实现1.结点的定义2.搜索树的插入3.变色向上处理4.旋转变色 三.红黑树与AVL树的差别四.完整代码 一.红黑树的性质 1.什么是红黑树? 红黑树是一种搜索二叉树…

页面上下左右滑动事件

1.下载插件 npm install vue-touchnext -S 2.main.js加入以下代码 import VueTouch from vue-touch Vue.use(VueTouch, { name: v-touch }) VueTouch.config.swipe { threshold: 50 //设置左右滑动的距离 } 3.完整代码 <template><div><v-touch swipe…

Java 基础——运行第一个Java程序

【学习笔记】Java 基础——运行第一个Java程序 关键词&#xff1a;Java、Spring Boot、Idea、数据库、一对一、培训、教学本文主要内容是在IDEA中运行第一个Java程序&#xff1a;Hello World计划30分钟完成&#xff0c;请同学尽量准备工具有学习需要请联系&#xff1a;xujian_…

css多个物体椭圆旋转

实现效果 html代码 <div class"background-img"><div class"area"><div class"ball ball1"></div><div class"ball ball2"></div><div class"ball ball3"></div><div …

道路空间功率谱密度与时间功率谱密度(笔记)

1.先上代码其中之一 clc clear close all %% SimTime200; dt0.01;%仿真步长 time0:dt:SimTime; sim_step length(time); Ntlength(time); % 采样点&#xff08;可能要修改&#xff09; u10; % m/s df1/(Nt*dt); % 采样频率间隔 f0:df:1/(2*dt); % 采用频率一…

数据脱敏的风险量化评估介绍

1、背景介绍 当前社会信息化高速发展&#xff0c;网络信息共享加速互通&#xff0c;数据呈现出规模大、流传快、类型多以及价值密度低的特点。人们可以很容易地对各类数据实现采集、发布、存储与分析&#xff0c;然而一旦带有敏感信息的数据被攻击者获取将会造成个人隐私的严重…

NTIRE2023-RTSR-Track2 冠军方案详解

编辑 | Happy 首发 | AIWalker 链接 | https://mp.weixin.qq.com/s/JQ5g9yn_OdjR8hi_tWc4jA arXiv:2305.02126 , cvpr2023 , code , video 本文了一个实时&轻量图像超分方案Bicubic&#xff0c;它通过下采样模块降低图像分辨率以减少计算量&#xff0c;在网络尾部采用…

R语言绘制染色体变异位置分布图,RIdeogram包

变异位点染色体分布图 今天分享的内容是通过RIdeogram包绘制染色体位点分布图&#xff0c;并介绍一种展示差异位点的方法。 在遗传学研究中&#xff0c;通过测序等方式获得了基因组上某些位置的基因型信息。 如下表&#xff0c;第一列是变异位点的ID&#xff0c;第二列是染色体…

Python 字典的定义

视频版教程 Python3零基础7天入门实战视频教程 字典dict 字典也是Python提供的一种常用的数据结构&#xff0c;它用于存放具有映射关系的数据。 字典的定义 比如有成绩表数据——语文:68&#xff0c;数学:98&#xff0c;英语: 76&#xff0c;这组数据看上去像两个列表&…

每天几道Java面试题:集合(第四天)

目录 第四幕 、第一场&#xff09;大厦楼下门口第二场&#xff09;大门口 友情提醒 背面试题很枯燥&#xff0c;加入一些戏剧场景故事人物来加深记忆。PS:点击文章目录可直接跳转到文章指定位置。 第四幕 、 第一场&#xff09;大厦楼下门口 【面试者老王&#xff0c;门卫甲…

浅谈C++|STL之stack+queue+priority_queue篇

一.stack基本概念 栈&#xff08;Stack&#xff09;是一种常见的线性数据结构&#xff0c;遵循后进先出&#xff08;Last-In-First-Out&#xff0c;LIFO&#xff09;的原则。类似于我们在现实生活中堆叠书本或盘子的方式&#xff0c;最后放入的元素最先被取出。 在栈中&#…

【基于多输出方向的同步异步日志系统】

本项目涉及的到所有源码见以下链接&#xff1a; https://gitee.com/ace-zhe/wz_log 一、项目简介 1.日志的概念&#xff08;白话版&#xff09; 日志类似于日记&#xff0c;通常是指对完成某件事情的过程中状态等的记录&#xff0c;而计算机中的日志是指日志数据&#xff0c…

Python实现的mqtt客户端工具分享,小巧且超轻量级(python+tkinter+paho.mqtt)

mqtt协议调试时需要个客户端工具&#xff0c;但网上找的体积包都很大&#xff0c;都不够小巧和便携。于是趁周末时间用python搞出来了个客户端工具&#xff0c;使用pythontinkerpaho.mqtt实现。源码量很少但功能不弱&#xff0c;相当的轻量级。分享给有需要的小伙伴&#xff0c…

论文写作指导手册

TIPS&#xff1a;最近我们上线了“AI写作大师”&#xff0c;后续会继续围绕论文、文章、文案写相关的文章&#xff0c;来验证写作大师能力如何&#xff0c;敬请持续关注&#xff08; openrabbit.net&#xff09;&#xff5e; 一、论文选题 选题是论文研究的第一步&a…

Prometheus+Grafana可视化监控【Nginx状态】

文章目录 一、安装Docker二、安装Nginx(Docker容器方式)三、安装Prometheus四、安装Grafana五、Pronetheus和Grafana相关联六、安装nginx_exporter七、Grafana添加Nginx监控模板 一、安装Docker 注意&#xff1a;我这里使用之前写好脚本进行安装Docker&#xff0c;如果已经有D…

软件测试中常见的难题

1、需求定义&#xff1a; 需求可能不完整或者不准确&#xff0c;这会导致测试人员无法测试应用程序的所有功能。 例如&#xff1a;在一个电子商务网站上&#xff0c;可能需要测试的某些操作并未在需求中列出&#xff0c;导致测试人员无法测试到这些操作。 对策&#xff1a;测…

MySQL实现单个字段根据特定字符拆分

1.字段内容 2.想得到的效果 步骤1中&#xff0c;每一条记录的FJ字段&#xff0c;根据分号&#xff0c;拆分成多条&#xff0c;如下图所示&#xff1a; 3.具体实现 说明&#xff1a; SELECT DISTINCTsubstring_index(substring_index(a.要拆分的字段, 分隔字符, b.help_top…

自动化项目实战:用requests库自动保存王者荣耀英雄皮肤到本地,文末附源码下载!

前言 王者荣耀是一款备受欢迎的手机游戏&#xff0c;拥有众多精美的英雄皮肤。如果你想获取这些皮肤的图片或者其他相关信息&#xff0c;可以利用Python编写一个简单的爬虫来实现。 安装第三方库 首先&#xff0c;我们需要安装Python的requests和BeautifulSoup库。可以使用…

系列六、Nginx配置实例之反向代理2

一、目标 浏览器网页中访问http://${Linux服务器的IP}:9001/basketball/index.html&#xff0c;浏览器中打印"篮球8080!!!"&#xff1b; 浏览器网页中访问http://${Linux服务器的IP}:9001/football/index.html&#xff0c;浏览器中打印"足球8081!!!"&#…

[NLP] LLM---<训练中文LLama2(五)>对SFT后的LLama2进行DPO训练

当前关于LLM的共识 大型语言模型&#xff08;LLM&#xff09;使 NLP 中微调模型的过程变得更加复杂。最初&#xff0c;当 ChatGPT 等模型首次出现时&#xff0c;最主要的方法是先训练奖励模型&#xff0c;然后优化 LLM 策略。从人类反馈中强化学习&#xff08;RLHF&#xff09…