news 2026/6/14 1:31:41

项目部署到服务器教程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
项目部署到服务器教程

适配环境: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 函数修改数据库密码

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/14 1:31:39

触觉感知技术在农业采摘机器人中的应用与优化

1. 项目概述:触觉感知如何革新农业采摘机器人在伊利诺伊大学香槟分校的实验室里,一个看似简单的机械夹爪正轻柔地捏起一颗樱桃番茄。与普通夹爪不同,它的硅胶指尖在接触果实瞬间,内部摄像头立即捕捉到果皮表面的微观形变&#xff…

作者头像 李华
网站建设 2026/6/14 1:23:27

BilibiliDown:解锁B站视频下载新体验,你的个人视频管家

BilibiliDown:解锁B站视频下载新体验,你的个人视频管家 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/…

作者头像 李华
网站建设 2026/6/14 1:15:53

Lovable 无代码 AI 应用 / 网页全自动生成智能体平台

Lovable AI 完整介绍一、基础定位Lovable 是一款无代码 AI 应用 / 网页全自动生成智能体平台,主打一句话自然语言描述,就能独立生成完整可部署、可联网、可对接 API 的 Web 应用、前端站点、内部工具,无需写任何代码,和 Devin&…

作者头像 李华
网站建设 2026/6/14 1:14:58

网站建设价格怎么算?

网站建设价格通常由功能需求、设计要求、开发方式、维护服务等因素决定。以下为详细介绍。功能需求如何影响价格?功能是影响网站建设价格的关键因素之一。简单的展示型网站,仅包含公司介绍、产品展示、联系方式等基础功能,开发难度低&#xf…

作者头像 李华
网站建设 2026/6/14 1:12:52

告别按键!用LD3320语音模块给你的Arduino智能小车升级‘耳朵’

用LD3320语音模块为Arduino智能小车打造免提控制系统在创客项目的世界里,智能小车一直是入门和进阶的经典载体。从最初的基础巡线、避障,到后来的手机蓝牙遥控、图像识别导航,每一次交互方式的升级都让这个小机器更加"聪明"。而今天…

作者头像 李华
网站建设 2026/6/14 1:10:54

别再死记硬背for循环了!用Python解决‘完全数’和‘阶乘等式’,带你直观理解循环嵌套的执行流程

用Python可视化拆解循环嵌套:从完全数到阶乘等式的思维跃迁每次看到新手盯着屏幕上那几行嵌套循环代码发呆时,我总会想起自己初学编程时的窘境。那些看似简单的for和while就像俄罗斯套娃,打开一层还有一层,变量值在循环间跳来跳去…

作者头像 李华