使用Nginx部署Vue+SpringBoot前后端分离项目(超详细!)

news2025/2/25 22:05:54

目录

一、前后端环境准备

1、前端环境准备

         2、后端环境准备

二、前后端打包

1、前端打包

2、后端打包

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

1、前端配置

安装nginx

创建项目目录

前端项目部署

2、后端配置

安装宝塔

安装mysql

使用本地Navicat连接远程数据库

安装jdk环境

安装redis

后端项目部署


需要的工具:Xshell 连接远程服务器、Xftp 服务器文件可视化

项目访问:http://www.zxlsc.top

一、前后端环境准备

1、前端环境准备

在前端的config包下的index.js中配置 代理配置表,配置特定的请求代理到对应的API接口

 proxyTable: {
    	'/api': {
        target: 'http://服务器ip或者绑定的域名',
        changeOrigin: true,
        pathRewrite: {
          '^/api': ''
        }
      }
    },

 在设置开发环境和生产环境的URL

 设置生产环境的URL

 记住一定要加上/api 方便在服务器中使用nginx进行反向代理。

2、后端环境准备

跨域请求配置允许前端访问后端的URL请求

@Override
    public void addCorsMappings(CorsRegistry registry) {
        //进行跨域配置
        //前端占用8080 后端占用8888
        //两个端口之间的访问就是跨域
        //要允许8080端口访问8888
        registry.addMapping("/**").allowedOrigins("http://localhost:8080/");
    }

在配置文件中设置contextPath属性,类似于承接上下文,与前端反向代理的进行连接,反向代理在后续会提到可以先这么配置

后端环境准备完成

二、前后端打包

1、前端打包

2、后端打包

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

1、前端配置

使用Xshell在服务器中下载安装nginx用来配置前端工程,Xshell可以在官网下载,顺便再下载一个Xftp

安装nginx

  • 安装环境
yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
  • 安装wgte
yum install wget
  • 下载nginx
wget https://nginx.org/download/nginx-1.21.6.tar.gz
  • 解压压缩文件
tar -zxvf nginx-1.21.6.tar.gz
  • 进入nginx文件夹
cd nginx-1.21.6
  • 配置
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
  • 编译和安装
编译:make
安装:make install
  • 运行
/usr/local/nginx/sbin/nginx
  •  重新加载
/usr/local/nginx/sbin/nginx -s reload
  • 如果更改了配置文件建议使用这个方式重新启动
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
  • 停止服务
/usr/local/nginx/sbin/nginx -s stop

输入浏览器ip,nginx默认是80端口,所以直接使用服务器ip访问

创建项目目录

使用Xftp再服务器任意目录下创建一个项目的文件夹用来存放项目文件,记住这个文件的地址,可以在任意位置创建

前端项目部署

将上一个步骤中打包好的dist包通过Xftp上传到服务器的项目文件中,并记住这个地址

使用Xftp打开/usr/local/nginx安装目录下的config配置文件,修改以下三项

 然后重启nginx

前端成功展示

2、后端配置

安装宝塔

由于springboot项目自带tomcat,所以只需要将打包好的jar包上传到项目文件中通过

java -jar jar包名

这里由于使用Xftp传递文件速度过慢,所以使用宝塔可视化面板进行传输

安装宝塔

如果安装过wegt可以直接安装&&后面的内容
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec

 访问宝塔面板并下载mysql , 记得要在阿里云放行对应端口的安全组

安装mysql

顺便安装一个mysql环境

设置一下数据库的root密码

使用本地Navicat连接远程数据库

使用SSH隧道连接服务器的数据库

 

 将本地数据库的表复制到云服务器数据库

安装jdk环境

在宝塔项目中添加jdk

安装一个web环境,会自带jdk并且配置好了环境变量,我一般习惯这种创建jdk的方式,也可以使用命令来安装jdk

安装redis

在redis官网下载.gz的安装包然后通过Xftp传输到服务器的root目录下

 在Xshell中进行解压,依次输入命令

tar -zxvf 压缩包名

cd 解压后的文件名

make

设置redis后台方式运行

 右键编辑,依次找到并修改以下代码

bind 127.0.0.1 => #bind 127.0.0.1

protected-mode yse => protected-mode no

daemonize no => daemonize yes

保存文件后运行redis

cd /usr/local/bin

#复制一份redis.conf
./redis-server redis.conf

#如果无法连接就重启redis
ps -aux | grep redis
kill -9 对应的端口号

后端项目部署

 然后在Xshell中进入这个项目文件夹,运行jar包

命令:
java -jar xxx.jar

项目当前运行成功,我们来进行一下端口测试,使用Postman测试一下接口能否能接通

此时我们发现,在访问路劲正确的前提下接口连接超时

 解决方法

关闭网站防火墙即可解决,记住一定要开放前后端对应的端口!

防火墙关闭后再次进行postman接口测试时,发现接通成功但是无数据,并显示了程序中设置的异常提示

此时我们到服务器中的springboot运行日志查看报错信息

根据这个报错信息我们可以看到是由于数据库的权限问题导致的

此时我们需要给当前的数据库账号密码添加最高权限才能使得程序中设置的账号密码能够访问到数据库。

先在服务器中登录我们的mysql,然后输入:
grant all privileges on *.* to 'root'@'服务器ip' identified by '数据库密码';

 

接口测通,数据成功展示。

#服务器后台运行jar包并生成日志文件
nohup java -jar XXX.jar >XXX.log 2>&1 &
#关闭
ps -aux 找到对应服务的PID
kill -9 PID

此时来访问前端页面查看数据是否能展示在页面

 此时发现post请求变成了option请求,发生了跨域问题,原因在于后端的跨域代码出现了问题

将原本作为跨域请求的代码修改为

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        //进行跨域配置
        //前端占用8080 后端占用8888
        //两个端口之间的访问就是跨域
        //防止跨域报错
        registry.addMapping("/**")
                .allowedOriginPatterns("*")
                .allowedMethods("GET","HEAD","POST","PUT","DELETE","OPTIONS")
                .allowCredentials(true)
                .maxAge(3600)
                .allowedHeaders("*");
    }

即可解决跨域问题!

至此前后端分离项目搭建完成!!

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

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

相关文章

echarts文档解读

前言:今天给大家分享一个前端的开源可视化图标库echarts。 💕点击下方名片,即可领取学长个人微信💕 echarts 全局 echarts 对象,在 script 标签引入 echarts.js 文件后获得,或者在 AMD 环境中通过 require…

Vue 插槽(slot)详细介绍(对比版本变化,避免踩坑)

目录 前言 正文 插槽是什么? 怎么使用插槽? 基本用法 后备(默认)内容 具名插槽 作用域插槽 插槽版本变化 总结 前言 Vue中的插槽(slot)在项目中用的也是比较多的,今天就来介绍一下插…

npm install 提示Unable to authenticate, need: BASIC realm=“Sonatype Nexus Repository Manager“

场景: 执行npm install时提示Unable to authenticate Password: Email: (this IS public) xxqq.com Logged in as uploader on http://192.168.xx.xxx:8074/repository/npm-internal/. PS D:\GitworkspaceUi\gisquest-cloud-ui-workcenter> npm install npm ERR…

【登录界面】vue、element-ui登录界面模板

vue、element-ui登录界面模板这里总结一个用vue、element-ui写的登录界面&#xff0c;为以后复制粘贴备用。 截图 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>登录</title><!--…

vue-quill-editor富文本编辑器使用步骤

首先放上效果图 目录 1.安装 2.引入到项目中 3.在页面上写组件 4.配置option 5.给工具栏鼠标悬停加上中文释义 6.上传图片到七牛云 7.自定义控制图片大小 1.安装 npm install vue-quill-editor -S2.引入到项目中 有两种挂载方式&#xff1a; 全局挂载 和 在组件中挂载&…

【Vue插槽详解】

Vue插槽详解Vue插槽的作用一、默认插槽完整代码&#xff1a;二、具名插槽完整代码&#xff1a;三、作用域插槽完整代码如下&#xff1a;Vue插槽的作用 Vue插槽是Vue中常见的一种组件间的相互通信方式&#xff0c;作用是让父组件可以向子组件指定位置插入html结构&#xff0c;适…

记录--前端性能优化——首页资源压缩63%、白屏时间缩短86%

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 提升首屏的加载速度&#xff0c;是前端性能优化中最重要的环节&#xff0c;这里笔者梳理出一些 常规且有效 的首屏优化建议 目标&#xff1a; 通过对比优化前后的性能变化&#xff0c;来验证方案的有效…

除夕最绚丽3D烟花代码(html+音效)

今天就是除夕了&#xff0c;新年怎么能少得了烟花呢&#xff1f;虽然绝大部分地区禁止燃放烟花&#xff0c;但该欣赏的烟花还是要欣赏滴~~ 最近整理文件&#xff0c;找到了一份烟花代码&#xff0c;3D特效&#xff0c;今天分享给大家&#xff0c;希望大家喜欢。 话不多说&#…

uni.getLocation和wx.getLocation方法调用无效,也不返回失败,解决方案!!!

线上已解决问题的代码 记录时间 2022.12.10 //获得地理定位信息uni.getLocation({type: wgs84,success: function(resp) {console.log(11111);//保存纬度数据let latitude resp.latitude;//保存经度度数据let longitude resp.longitude;console.log(经度 latitude);console…

【Vue项目搭建】修改【若依框架】的侧边栏、导航栏、面包屑样式、修改全局页面样式

掌握分寸感&#xff0c;找目标一致的人协同你&#xff0c;有效地调配资源&#xff0c;就可以提高效率。 写在前面的话&#xff1a;博主最近想要搭建自己的前端若依项目&#xff0c;因此此系列博客会做一些记录。我的项目gitee地址&#xff1a; https://gitee.com/xuruicong/rac…

less和sass的区别[简洁易懂]

一、基础知识 1.sass&#xff0c;less都是CSS的预处理器&#xff0c;其基本思想就是用编程的思路编写CSS代码。增加了变量&#xff0c;嵌套&#xff0c;函数&#xff0c;语句&#xff0c;继承等概念。有助于模块化开发&#xff0c;例如写一个换肤的效果&#xff0c;以前我们需要…

前端200道面试题及答案(更新中)

目录 html相关 1&#xff09;说一下对cookie和Storage(localStorage和sessionStorage) 的认识和区别&#xff1f; 2&#xff09;link和import的区别 3&#xff09;浏览器如何实现不同标签页的通信&#xff1f; 4&#xff09;iframe的优缺点 5&#xff09;canvas 6&#x…

Sublime Text 4 (Build 4143) 注册方法STEP BY STEP

To 初学Python的Pythonista: Sublime Text相对于PyCharm和Visual Studio Code&#xff0c;确实有不足之处&#xff0c;但提供了众多功能丰富的插件&#xff0c;且最大优点就是相对于Pycharm和VSCODE&#xff0c;它体积小&#xff0c;启动速度快。对于Python的初学者来说&#…

JavaScript基础总结---重点

目录JavaScript简介什么是JavaScript浏览器执行JS过程JS的组成JS的引入方式函数与作用域arguments的使用全局变量与局部变量预解析对象创建对象的三种方式1.利用字面量创建对象2.利用 new Object 创建对象3.利用构造函数创建对象遍历对象属性变量、属性、函数、方法总结new关键…

节点流和处理流详解

CSDN话题挑战赛第2期 参赛话题&#xff1a;学习笔记 1. 基本介绍 节点流可以从一个特定的数据源读写数据&#xff0c;如FileReader&#xff0c;FileWriter处理流&#xff08;也叫包装流&#xff09;是“连接”在已存在的流&#xff08;节点流或处理流&#xff09;之上&#x…

web服务器项目常见面试题目(C++)

项目介绍 1、为什么要做这样一个项目&#xff1f; 在学习CPP语言的时候&#xff0c;发现需要做一个项目来巩固一下&#xff0c;网上有推荐这个项目&#xff0c;然后就自己尝试做了一下。这个项目综合性比较强&#xff0c;从中既能学习Linux环境下的一些系统调用&#xff0c;也…

Vue3创建项目(一)新手教程

✅作者简介&#xff1a; 我是痴心阿文&#xff0c;你们的学友哥。 整理一下Vue3创建项目&#xff0c;新手教程&#xff0c;看完需要预计花费10分钟。 1.环境准备 Vue依赖NodeJs的环境&#xff0c;需要先安装Nodejs。 2.NodeJs安装 打开NodeJs下载页选择自己系统对应的版本下载。…

【JAVA】书店管理系统(附带前后端源码及资源)

【JAVA_Web】书店管理系统&#xff08;附带前后端源码及资源&#xff09; 一、项目的目的和意义 1.1目的 在“互联网”的大趋势下&#xff0c;线上销售以其简单、便捷、高效的特点受到人们的青睐。网上书店不受时间或者空间的限制&#xff0c;只要在网络覆盖的地方人们就可以…

vue3 动态加载组件、动态引入组件

1.问题 在做一个用vite构建的vue3项目时&#xff0c;动态拉取导入.vue页面&#xff0c;然后控制台一直有以下提示&#xff0c;页面也无法渲染出来。 2.分析 根据上面的报错提示&#xff0c;让我们安装并使用&#xff1a;rollup/plugin-dynamic-import-vars 这个插件&#xff0…

JS遍历对象的七种方法

我根据阮老师的《ES6标准入门》学习并总结了七种遍历对象的方法&#xff0c;我会将分别介绍这七种方法并进行详细的区分&#xff0c;并将从属性可枚举性问题与遍历方法两个大方面讲述全文&#xff0c;其中可枚举性是掌握遍历对象之前的的铺垫&#xff0c;请读者耐心学习&#x…