当前位置: 首页 > news >正文

项目部署到服务器教程

适配环境:CentOS + Nginx + SpringBoot (Jar) + MySQL 8.0

服务器内网业务路径统一:/home/flowerShop

项目整体架构

  1. 前端:Vue3+Vite 项目shixun-ui,打包产出dist静态文件,Nginx 托管 80 端口

  2. 后端:SpringBoot 打包backend.jar,监听8080端口

  3. 数据库:MySQL8.0,业务库名flower_shop

  4. 反向代理:Nginx 将/api所有请求转发到后端 8080

1.后端部署

1.1 jar包

进入后端项目文件夹,使用cmd命令:

mvn clean package -DskipTests

然后上传服务器。

scp backend.jar 账户名@服务器公网ip:/home/

1.2 停止旧后端服务

kill -9 $(ps -ef | grep backend.jar | grep -v grep | awk '{print $2}')

1.3 启动服务

方法一:

java -jar backend.jar --server.port=8080 > log.out 2>&1 & ​ disown # 碎碎念:这一行指令我还不知道有什么用

方法二:

后台运行,日志存入 log.out,忽略终端挂断信号

nohup java -jar backend.jar --server.port=8080 > log.out 2>&1 &

1.4 检查服务是否启动

实时查看启动日志,排查异常

tail -f log.out

如果日志结尾有xxxApplication.java的字样应该就启动成功了。

看一下端口是不是正常监听:

ss -lnp | grep 8080 或者 netstat -lnp | grep 8080

检测一下连通性:

curl http://127.0.0.1:8080/api/auth/login

2.前端部署

包括前端打包+Nginx反向代理部署

2.1 修改.env

之前你肯定一直在本地跑的服务,所以要记得修改一下这里:

旧: VITE_BASE_URL='http://localhost:8080' 新: VITE_BASE_URL=''

2.2 打包

npm run build

打完包应该会有一个dist,上传到服务器就可以,这里面都是一些静态资源。

2.3 Nginx站点配置

使用vi指令新建一个配置文件:

vi /etc/nginx/conf.d/flowerShop.conf
server { listen 80; server_name 服务器公网IP; ​ root /home/flowerShop/frontend/dist; index index.html; ​ # Vue路由模式,解决刷新404 location / { try_files $uri $uri/ /index.html; } ​ # 反向代理/api全部请求到后端8080 location /api/ { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }

按照自己的环境配置就好。

2.4 Nginx重载生效

校验配置语法:

nginx -t

重启Nginx

systemctl restart nginx ​ // 设置开机自启动 systemctl enable nginx

2.5 (补)权限修复

非必做:你的服务器可能有多个用户,希望其他用户也能够修改你的文件:

# 整体赋权 chmod -R 755 /home/flowerShop chown -R root:root /home/flowerShop

2.6 端口放行

安装防火墙:

yum install firewalld -y systemctl enable firewalld # 开机自启动 firewall-cmd -status # 查看状态

放行我们需要在外网访问到的端口:

#永久放行SSH、网页80、后端8080端口 firewall-cmd --add-port=22/tcp --permanent firewall-cmd --add-port=80/tcp --permanent firewall-cmd --add-port=8080/tcp --permanent # 重载规则生效 firewall-cmd --reload

3.数据库部署

3.1 启动数据库

systemctl start mysqld

3.2 重置root密码(非必要)

systemctl stop mysqld # 停止数据库 mysqld_safe --skip-grant-tables & # 跳过权限校验临时启动 mysql -u root # 免密登录mysql

进入数据库之后:

use mysql; flush privileges; ALTER USER 'root'@'localhost' IDENTIFIED mysql_native_password BY '123456'; exit;

关闭临时进程,重启正式MySQL

pkill mysqld systemctl start mysqld

验证登录

mysql -u root -p

3.3 执行数据库初始化脚本

在数据库里面执行:

source /home/flowerShop/database_init.sql;

4.问题

问题 1:Nginx 500 / 页面打不开,日志 Permission denied

原因:项目存放在/root,Nginx 无访问权限

解决:整体迁移项目到/home/flowerShop,执行赋权命令

问题 2:MySQL 登录报错ERROR 1045 (28000): Access denied

原因:root 密码错误

解决:跳过权限模式重置 MySQL root 密码为123456

问题 3:后端报错Public Key Retrieval is not allowed

原因:MySQL8.0 与新版 JDBC 加密校验策略问题

解决:连接 URL 追加参数&allowPublicKeyRetrieval=true,重启后端

问题 4:Request method 'GET' not supported

原因:登录接口限定 POST 请求,手动浏览器直接访问接口地址触发;页面表单提交不会出现该异常,无需处理

问题 5:页面提示「用户名或密码错误」

  1. 未执行数据库初始化脚本,缺少用户表与初始数据 → 重新source执行database_init.sql

  2. 后端密码采用 BCrypt 加密,不能使用 MD5 函数修改数据库密码

http://www.zskr.cn/news/1520638.html

相关文章:

  • 新手必看:用Hypack 2023搭配R2Sonic多波束,从设备接线到数据采集的完整避坑指南
  • 触觉感知技术在农业采摘机器人中的应用与优化
  • 2026年更新:湖州不错的物流公司深度解析——湖州杭平物流有限公司 - 品牌鉴赏官2026
  • 2026年工业滑环市场观察:耐用的帽式滑环品牌与供应商推荐榜单 - 优质品牌商家
  • 3个关键功能解锁Mac睡眠管理新境界:SleeperX深度解析
  • SpringMVC 实现简易加法器
  • Mac触控板Windows驱动终极指南:如何在Windows 10/11上实现完美触控体验
  • UniApp项目实战:用uQRCode生成带动态Logo和样式切换的会员卡二维码
  • 深度实战:Python爬虫完美解析QQ音乐歌单——接口逆向分析与数据抓取全攻略
  • 2026年旅游招商加盟市场深度分析:哪些品牌值得关注? - 优质品牌商家
  • 别再自己造轮子了!用SKIT.FlurlHttpClient.Wechat.TenpayV3库,5分钟搞定C#微信Native支付
  • 如何在Mac上完美使用Xbox手柄:360Controller完整指南
  • 不用复杂环境配置 OpenClaw 一键部署流程完整拆解【附安装包】
  • SAP MM顾问必看:OBYC自动记账配置保姆级教程,从BSX到GBB一次讲透
  • 保姆级教程:用Python+Cartopy绘制专业气象图(以ERA5 500hPa位势高度场为例)
  • 开会不用埋头记!5款AI神器自动整理全套会议记录
  • 【课程设计/毕业设计】基于 SpringBoot 的校园家教信息平台的设计与实现高校校园家教服务信息平台【附源码、数据库、万字文档】
  • AI 时代,忙碌不再等于价值
  • 新手也能懂的DC-DC降压电路PCB布局:从MPQ8633A实战到自检清单
  • 别再只会生成黑白码了!用uQRCode在UniApp里玩转彩色、带Logo和边框的个性化二维码
  • 20250931在RK3399的Buildroot【linux-6.1】下关闭camera_engine_rkisp
  • Devin AI 自主式 AI 软件工程师智能体
  • Python多重循环实战:从鸡兔同笼到打印字母金字塔,新手必练的5个经典案例
  • 联想拯救者工具箱终极指南:3步轻松掌控游戏本性能
  • ArcMap布局视图下,给专题图加上专业经纬网的保姆级教程(含样式自定义)
  • MATLAB数据处理效率翻倍:巧用reshape函数将表格数据快速转为图像输入格式
  • 华为OD机试真题 新系统 2026-06-10 JavaGoC 实现【双系统资源类型调配】【200】
  • R3nzSkin:游戏换肤技术的Windows钩子注入实现深度解析
  • LS1046A SEC中断聚合配置实战:提升嵌入式安全处理器性能
  • 智能科学与技术=人工智能专业? [特殊字符] 高考志愿的十字路口,深度解析与通关秘籍!