使用宝塔面板快速部署SpringBoot+Vue项目(Java + Node)

article/2025/8/15 23:03:52

使用宝塔面板快速部署SpringBoot+Vue项目(Java + Node)

  • 项目主要技术栈
  • 准备工作
    • 1. 一台云服务器(阿里云、腾讯云等),我这里使用的是阿里云的服务器(2核+2G)
    • 2. 已安装宝塔面板
    • 3. 已开发完成的SpringBoot后端项目和Vue前端项目,且在本地运行无误
  • 一、宝塔面板安装必要组件
  • 二、数据库配置
  • 三、SpringBoot后端部署
    • 1. 项目打包
    • 2. 项目文件上传
    • 3. 配置yml文件
    • 4. 部署Java项目
    • 5. 开放后端端口
  • 四、 Vue前端部署
    • 1. 前端文件上传
    • 2. 添加Node项目
    • 3. 配置vue前端文件
    • 4. 开放前端端口
    • 5. 通过IP+端口号访问项目
  • 五、通过域名进行访问
    • 1. 注册域名
    • 2. 域名解析
    • 3. 宝塔添加站点
    • 4. 测试访问
  • 六、常见问题排查
    • 📌Q1: 后端或前端项目运行失败,显示“未启动”
    • 📌Q2: 数据库连接失败
    • 📌Q3: 前端页面显示500错误信息(服务器发生错误)
    • 📌Q4:网站内图片加载失败( 静态资源加载异常)
    • 📌Q5:网站无法访问,提示 “Invalid Host header”
    • 📌Q6:网站配置端口号80,运行时变成了1024或其他高端口号

项目主要技术栈

Spring Boot 、Vue、MySQL、Redis、MyBatis、vue-cli、Node.js

准备工作

在开始部署之前,需要准备好以下前置工作:

1. 一台云服务器(阿里云、腾讯云等),我这里使用的是阿里云的服务器(2核+2G)

在这里插入图片描述

注意:如果你需要绑定域名的话,云服务器不能是按量计费的服务,否则无法进行ICP备案
操作系统我用的是CentOS 7.9
阿里云官网: https://www.aliyun.com/

2. 已安装宝塔面板

在这里插入图片描述
Linux面板使用最新版的即可
宝塔官网:https://www.bt.cn/new/index.html

3. 已开发完成的SpringBoot后端项目和Vue前端项目,且在本地运行无误

一、宝塔面板安装必要组件

登录宝塔面板 → 软件商店
在这里插入图片描述

安装以下服务:(需要不低于你项目所使用的版本)
MySQL
PHP、phpMyAdmin(用于可视化管理数据库,类似于Navicat)
Pure-Ftpd(FTP服务)
Redis
Node.js
Nginx(可选,如果你的项目使用到该技术的话)

二、数据库配置

1.创建新数据库:点击 数据库 → MySQL → 添加数据库
在这里插入图片描述
在这里插入图片描述
注意用户名不要设置为root、test等特殊名称,否则会创建失败
访问权限设置为所有人(你需要其他人访问你的网站)

2.导出数据库文件:从你的项目中找到sql文件,或者从navicat中导出sql文件
在这里插入图片描述

3.配置sql文件:localhost需要设置为你的云服务器地址(例如116.211.123.45)
在这里插入图片描述

4.导入SQL文件(通过phpMyAdmin操作)
点击 管理,会自动跳转到phpMyAdmin管理页面
在这里插入图片描述

点击你新建的数据库 → 导入 → 选择文件 → 执行
在这里插入图片描述

在这里插入图片描述

如果执行出现错误,请检查数据库文件配置信息或者尝试重新导入

数据库配置完成
在这里插入图片描述

三、SpringBoot后端部署

1. 项目打包

IDEA内点击 Maven → package
在这里插入图片描述

随后在target文件夹下会生成项目的 jar包
在这里插入图片描述

2. 项目文件上传

在宝塔面板内新建文件夹来存放你的项目文件,分别存放前端和后端文件(建议路径:/www/wwwroot/)
在这里插入图片描述

将生成的 jar包 和项目的 yml文件 上传至服务器目录
在这里插入图片描述

在这里插入图片描述

上传项目静态资源文件(如file、upload等),这样前端可以正常加载出图片等静态资源
在这里插入图片描述
在这里插入图片描述

点击 更多 → 权限,将写入的权限打开(如果你的项目需要用户上传文件的话)
在这里插入图片描述

3. 配置yml文件

打开yml文件,需要配置的信息如下
端口号port:后端的端口号,我这里设置为9000
url:将localhost替换为你的云服务器ip地址,我这里为116.211.123.45
数据库名:之前配置的数据库名sql_test
username、password:设置为之前配置的数据库用户名和密码
在这里插入图片描述
(注:本地idea里的yml文件可不修改,上传到宝塔服务器的yml文件会覆盖原先的yml文件)

4. 部署Java项目

点击 网站 → Java项目 → 添加Java项目
在这里插入图片描述
在这里插入图片描述

项目路径选择刚刚上传的 jar包路径
在这里插入图片描述

项目端口:这里设置为9000,即前端需要监听到的后端端口,点击 放行端口
在这里插入图片描述

项目JDK:
点击 添加JDK信息
在这里插入图片描述
选择你的项目所使用到的JDK版本,我这里使用的是jdk17

项目启动命令:无需操作,命令自动生成

5. 开放后端端口

由于宝塔面板和阿里云服务器内置了防火墙功能,所以需要开放项目使用到的端口号使服务正常运行。
宝塔面板:点击 安全 → 添加端口规则(之前配置选项选择了开放9000端口,所以这里就不需要再添加了)
在这里插入图片描述
在这里插入图片描述
阿里云:云服务器ECS → 安全组 → 管理规则 → 手动添加
https://ecs.console.aliyun.com/securityGroup/region/
在这里插入图片描述
这样就可以正常访问啦

后端Java项目部署完成后,如果配置正确的话可以看到下方显示项目正在运行中,则表示后端项目运行成功
在这里插入图片描述

如果项目运行状态为未启动,可点击设置 → 日志管理检查项目报错信息,正确修改配置后再点击重启项目
在这里插入图片描述
在这里插入图片描述

四、 Vue前端部署

1. 前端文件上传

本项目前端使用node.js构建,只需将前端文件上传到宝塔前端目录下即可,存储安装包或依赖的目录node_modules暂不需要上传,可等待构建项目时重新下载(当然也可将node_modules同时上传,但这样比较慢)
在这里插入图片描述
注:本项目采用Node.js 动态运行而非纯静态部署,所以需要上传整个 Vue 项目(node_modules 除外)到服务器,不需要上传编译后的 dist 静态文件。

2. 添加Node项目

点击 网站 → Node项目 → 添加Node项目
在这里插入图片描述
在这里插入图片描述
项目目录选择刚刚上传的vue项目路径
在这里插入图片描述
Node版本:选择之前下载好的版本,不低于原项目的版本(vscode终端输入命令node -v 查看node版本)
包管理器:默认即可,如果之前上传了node_module文件,这里可以选择不安装node_module
项目端口:前端项目访问的端口,我这里是9001,选择放行端口
在这里插入图片描述

3. 配置vue前端文件

为了能使前端正确运行且能访问到后端端口,需要正确配置以下2个文件
①.env.production文件(存储生产环境中需要的特定配置和变量)
VUE_APP_BASE_API_URL:用于存储 API 的基础路径,使用url的命名方式。需要将localhost修改为你的云服务器公网IP地址,以确保前端能够正确访问生产环境中的 API 服务器。端口号修改为后端端口号,我这里为116.211.123.45:9000
在这里插入图片描述
注意CTRL+S保存文件

②vue.config,js文件( Vue CLI 项目中的一个配置文件,用于对项目的构建和开发环境进行自定义配置,配置项devServer 用于配置开发环境下的本地开发服务器)
设置devServer 中的主机和端口:
host 设置为 “0.0.0.0”,表示监听所有网络接口(包括本地和外部网络)。
port 修改为之前设置的前端项目所访问的端口号,我这里为9001
在这里插入图片描述

4. 开放前端端口

同Java项目一样,我们需要开放项目使用到的端口号使服务正常运行。
宝塔面板:点击安全 → 添加端口规则(之前配置选项选择了开放9001端口,所以这里就不需要再添加了)
在这里插入图片描述

阿里云:云服务器ECS → 安全组 → 手动添加
在这里插入图片描述

这样就可以正常访问啦

前端Vue项目部署完成后,如果配置正确的话可以看到下方显示项目正在运行中,且项目日志无报错信息,则前端项目运行成功
在这里插入图片描述

5. 通过IP+端口号访问项目

在这里插入图片描述
点击回车,页面会自动跳转至index页面
在这里插入图片描述

如果页面正常显示且没有任何报错信息,说明项目运行成功,可通过IP + 端口号的方式访问项目

五、通过域名进行访问

如果你需要使用域名的方式访问网站,还需要进行域名绑定

1. 注册域名

阿里云域名注册:https://dc.console.aliyun.com/next/index#/overview(注册后的域名需要进行ICP备案,否则无法通过互联网进行访问,具体步骤这里不再赘述)
在这里插入图片描述

阿里云ICP备案:https://beian.aliyun.com/?spm=a2c1d.8251892.console-base_top-nav.dicp.bb0e5b76enheJF
在这里插入图片描述

2. 域名解析

在域名服务商(阿里云、腾讯云等)添加 A 记录:
主机记录:www 或 @ 或 *
记录值:填写云服务器 IP 地址
TTL:默认即可
在这里插入图片描述

3. 宝塔添加站点

进入宝塔面板 → 网站 → Node项目 → 设置 → 域名管理

域名管理:填写你的申请的域名 + 端口号(如 www.bttest.com:9001)

在这里插入图片描述

打开外网映射
在这里插入图片描述

4. 测试访问

浏览器访问你的项目完整域名(如: www.bttest.com:9001),检查是否自动跳转 HTTPS页面、资源是否加载正常(无 404 错误)、路由跳转是否生效(如 login 页面),这样网站就可以可以正常访问和使用啦。

注:如果想直接使用域名来访问网站(如:www.bttest.com),需要将配置文件中的端口号修改为80或443端口(HTTP默认端口80,HTTPS默认端口443)。

六、常见问题排查

📌Q1: 后端或前端项目运行失败,显示“未启动”

在这里插入图片描述
✅ 检查步骤:
1.检查项目所设置端口(后端和前端)是否与其配置文件正确对应
在这里插入图片描述
在这里插入图片描述

2.检查项目所使用端口是否正常开放(宝塔面板和阿里云)
在这里插入图片描述
在这里插入图片描述

注:项目端口配置正确,而宝塔内端口显示“未使用”
在这里插入图片描述
解决方案:有时是宝塔面板内的显示bug,尝试删除端口重新添加,若不影响项目正常使用则无需关心

3.检查项目配置文件(application.yml、vue.config.js、.env.production、package.json等)信息是否正确,包括修改内容的格式、拼写等

📌Q2: 数据库连接失败

✅解决方案:
1.检查yml配置文件中数据库名。用户名、密码是否正确
在这里插入图片描述

2.检查MySQL用户远程访问权限
在这里插入图片描述

📌Q3: 前端页面显示500错误信息(服务器发生错误)

在这里插入图片描述
✅ 解决方案:查看后端项目是否已启动、查看后端项目日志报错信息,检查后端及数据库配置(IP、数据库名密码等)是否正确,然后重新启动后端项目

📌Q4:网站内图片加载失败( 静态资源加载异常)

在这里插入图片描述
✅ 解决方案:打开调试工具(F12),查看图片是否是404错误(图片未找到),检查图片文件名是否与数据库内存储的图片文件名一致,若不一致请修改数据库信息或重新上传图片

📌Q5:网站无法访问,提示 “Invalid Host header”

当访问网站时提示 “Invalid Host header” 错误,通常是因为前端开发服务器(例如 Vue 或 React 的开发环境)或者某些后端框架(如 Spring Boot)对请求的 Host 头进行了严格校验。
✅ 解决方案:打开 vue.config.js 文件,添加以下配置:

module.exports = {devServer: {allowedHosts: 'all', // 允许所有主机访问},
};

修改配置文件后需要重新启动项目。

📌Q6:网站配置端口号80,运行时变成了1024或其他高端口号

在这里插入图片描述

端口号 80 是特权端口(小于 1024 的端口),只有以 root 权限运行才能绑定到这个端口。

✅ 解决方案:修改运行用户为 root 用户,保存配置后重新启动项目。

在这里插入图片描述
注:如果想使用80端口访问项目,建议使用 Nginx 反向代理服务,将80端口的流量转发到后端服务的非特权端口。


http://www.hkcw.cn/article/CIkqXmIfyr.shtml

相关文章

一文弄懂 | YOLOv8网络结构解读 、yolov8.yaml配置文件详细解读与说明、模型训练参数详细解析 | 通俗易懂!入门必看系列!

看这一篇就够了。本文内含YOLOv8网络结构图 yaml配置文件详细解读与说明 训练教程 训练参数设置参数解析说明等一些有关YOLOv8的内容! YOLOv8v10专栏订阅链接:YOLOv10 创新改进高效涨点持续改进300多篇永久免费答疑 (订阅的小伙伴&#xf…

[C++][第三方库][ODB]详细讲解

目录 1.介绍2.安装1.安装 build22.安装 odb-compiler3.安装 ODB 运行时库4.安装MySQL和客户端开发包5.安装 boost profile 库6.总体操作7.测试样例 3.ODB 常见操作1.ODB 类型映射2.ODB 编程1.指令2.示例 4.类与接口5.使用 1.介绍 ODB框架:数据库ORM框架 --> 对象…

【Python】解决Python报错:ERROR: Could not find a version that satisfies the requirement

成功解决Python报错:ERROR: Could not find a version that satisfies the requirement。ERROR: Could not find a version that satisfies the requirement 是 Python 的包管理工具 pip 在安装包时可能遇到的错误。这通常意味着 pip 没有找到与给定版本要求匹配的包…

C语言 —— 此去经年梦浪荡魂音 - 深入理解指针(卷五)

目录 1. sizeof 和 strlen的区别 1.1 sizeof 1.2 strlen 2. 数组和指针习题解析 2.1 一维数组 2.2 字符数组 代码1: 代码2: 代码3: 代码4: 代码5: 代码6: 2.3 二维数组 3. 指针运算笔试题解析 3.1 3.…

【Python篇】PyQt5 超详细教程——由入门到精通(中篇一)

文章目录 PyQt5入门级超详细教程前言第4部分:事件处理与信号槽机制4.1 什么是信号与槽?4.2 信号与槽的基本用法4.3 信号与槽的基础示例代码详解: 4.4 处理不同的信号代码详解: 4.5 自定义信号与槽代码详解: 4.6 信号槽…

MathType的安装与word嵌入

博主近期在写论文,发现word编辑公式好像只能用MathType,于是就去下载安装,然后遇到了蛮多问题总结一下,希望能帮到有相同问题的大家~ 一.MathType的下载 博主是在官网直接下载的,个人觉得没啥问题,下的也…

matlab:二维绘图篇——plot绘图命令

目录 1.plot绘图命令 (1)plot(x) 实例——实验数据曲线 实例——窗口分割 实例——随机矩阵 (2).plot(x,y) 实例——摩擦系数变化曲线 (3)plot(x1,y1,x2,y2,...) 实例——正弦图形 实例——正弦余弦图形 (4&#xff09…

Python的包管理工具pip安装

Python的包管理工具pip安装 一、安装步骤1.检查 pip是否已安装2.安装 pip方法一:通过 ​ensurepip​ 模块安装(推荐)方法二:通过 ​get-pip.py​ 脚本安装(经常应为网络域名问题连接不上) 3.验证pip安装4.创建别名5.更新pip 二、常…

【Python篇】PyQt5 超详细教程——由入门到精通(序篇)

文章目录 PyQt5 超详细入门级教程前言序篇:1-3部分:PyQt5基础与常用控件第1部分:初识 PyQt5 和安装1.1 什么是 PyQt5?1.2 在 PyCharm 中安装 PyQt51.3 在 PyCharm 中编写第一个 PyQt5 应用程序1.4 代码详细解释1.5 在 PyCharm 中运…

C++第四十五弹---深入理解包装器:提升代码复用性与安全性的利器

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】 目录 1 包装器 1.1、function包装器 1.2、bind 1 包装器 1.1、function包装器 function包装器 也叫作适配器。C中的function本质是一个类模板&…

【Java 学习】详细讲解---包和导包、Scanner类、输入源

1. 包 1.1 什么是包? 举个例子,你和你的同学有不同的家庭,你们都有自己的爸爸妈妈,都有自己的家。在自己的家中你们可以按照自己爱好摆放东西,都互不干扰。但是,假如你们的家都在一起,你们就不…

LEfSe分析:R语言一句代码轻松实现

数据和代码获取:请查看主页个人信息!!! 大家好,今天我将介绍如何使用R语言进行LEfSe(Linear discriminant analysis Effect Size)分析及可视化。LEfSe是一种基于线性判别分析的算法,…

马斯克遭白宫背刺 提名撤销引失望

刚走一天就遭白宫“背刺”,马斯克对此表示失望。2023年10月11日,美国国家航空航天局在休斯敦约翰逊航天中心首次向公众展示了从小行星贝努采集到的样本图片和视频。5月31日,美国白宫宣布撤销对富豪贾里德艾萨克曼出任下一任NASA局长的提名。据报道,艾萨克曼与企业家马斯克关…

双腿戴假肢男子4小时登顶泰山 毅力与自信的见证

5月31日上午,山东泰安泰山景区天气晴朗。一位双腿安装假肢的男士一手拄着拐杖一手抓住扶手向上攀登的场景被游客上传到社交媒体,引发网友热议。6月1日下午,当事人盛先生介绍,这是他第三次登泰山了,从中天门到南天门花费了约4个小时。盛先生说,今年端午假期前,他出差来到…

南京大学通报施工方偷窃学生物品 施工单位被罚违约金

5月29日,南京大学基本建设处发布了一份关于对南京诚善科技有限公司执行合同违约金的通报。通报指出,南京诚善科技有限公司员工于5月13日在学校宿舍楼内偷窃学生物品。根据施工合同相关规定并经处办公会研究确认,南京大学基本建设处决定对该公司执行2000元违约金,从工程款中…

为省30块钱 卡车司机在青海缺氧离世 爱心卡友千里送别

46岁的河南卡车司机常志荣在青藏线因高原缺氧离世。今天上午,多名爱心卡友跨越2400多公里,将他的骨灰及车辆从五道梁地区送回老家安阳林州。5月27日,常志荣在青藏线五道梁地区遭遇严重缺氧不幸去世。车友任先生透露,出发前同行曾建议他至少携带两罐氧气,但他为了节省30元费…

樊振东将改变德国联赛竞争格局 新援加盟引关注

北京时间6月1日,德甲萨尔布吕肯俱乐部宣布中国运动员樊振东加盟该俱乐部,将参与2025-2026赛季德国乒乓球甲级联赛和欧洲冠军联赛。这并不意味着国内赛场上看不到樊振东的身影。目前樊振东仍处在奥运后的调整期,计划通过全国比赛以及国内外俱乐部比赛逐步恢复运动状态。樊振东…

少写一点,发布快一点:2025年的前端极简主义

我们先直白点:你大概并不需要那些 Button.js、PrimaryButton.js、OutlinePrimaryButton.js 甚至 MaybeIfItsFridayButton.js。 在2025年,我们被过度抽象的组件库淹没了——原子设计、过度工程化的 UI 库。 现在,该是我们聊聊「反潮流」的前端…

聊一聊接口测试中耗时请求如何合理安排?

目录 一、异步处理与轮询机制 轮询检查机制 二、 并行化测试执行 三、模拟与桩技术(Mock/Stub) 四、动态超时与重试策略 五、测试架构设计优化 分层测试策略 并行化执行 网络优化 六、测试用例分层管理 金字塔策略 七、 缓存与数据复用 响应…

VMware没有虚拟网卡,VMnet1,VMnet8显示黄色三角警告

VMware安装后没有虚拟网卡,VMnet1,VMnet8显示黄色三角警告 VMware安装后没有虚拟网卡,VMnet1,VMnet8显示黄色三角警告 VMware安装后没有虚拟网卡,VMnet1,VMnet8显示黄色三角警告 问题描述: 主机…