跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Java大前端java

Linux 环境下前后端分离项目(Spring Boot + Vue)手动部署

Linux 服务器部署前后端分离项目需准备 Redis、Nginx、JDK 及 MySQL 环境。后端通过 Maven 打包为 Jar 文件,使用 nohup 后台启动并配置防火墙端口。前端执行 npm run build 生成 dist 目录上传至服务器。核心在于 Nginx 配置,设置静态资源根路径解决 Vue History 模式刷新 404 问题,并通过反向代理将 API 请求转发至后端服务。最后验证接口与页面访问是否正常。

涅槃凤凰发布于 2026/2/3更新于 2026/9/1264 浏览
Linux 环境下前后端分离项目(Spring Boot + Vue)手动部署

Linux 环境下前后端分离项目手动部署指南

本指南详细记录了在 Linux 服务器上部署前后端分离项目(Spring Boot + Vue)的完整流程,涵盖环境准备、后端部署、前端部署及 Nginx 配置等核心步骤。

0. 环境准备

在开始部署前,请确保服务器已安装以下基础环境:

  • Redis: 缓存服务
  • Nginx: 反向代理与静态资源服务器
  • JDK: Java 运行环境 (建议 JDK 1.8+)
  • MySQL: 数据库服务

1. 后端部署 (Spring Boot)

1.1 源码打包

在本地开发环境中,使用 Maven 对后端项目进行打包。

  • 操作:运行 Maven 的 package 命令。
  • 产物:在 target 目录下生成 .jar 文件(例如 ruoyi-admin.jar)。

图:后端源码打包流程

1.2 上传程序

将打包好的 jar 包上传至服务器指定目录。建议创建规范的目录结构以便管理。

  • 推荐路径示例:/home/www/project_name/server/

操作示意:

图:服务器目录结构规划

图:上传 Jar 包至对应位置

1.3 启动服务

使用 nohup 命令后台启动 Java 程序,避免关闭终端后服务停止。

详细启动脚本参考:请查阅 Linux 系统操作文档

常用启动命令:

# 基础启动命令 (根据实际 jar 包名称修改)
# > temp.txt 表示将日志输出重定向到 temp.txt,& 表示后台运行
nohup java -jar ruoyi-admin.jar > temp.txt &
1.4 进程管理与验证

查看 Java 进程:

# 检查是否有 java 进程在运行
ps -ef | grep java

关闭进程: 如果需要重启或停止服务,先查询进程号 (PID),然后执行 kill 命令。

# -9 表示强制终止
kill -9 <PID>

[!IMPORTANT] 网络安全配置 云服务器安全组:需在云厂商控制台开放后端端口(如 8080)。 Linux 防火墙:如果服务器开启了 firewalld,也需放行对应端口。

部署验证: 后端启动成功后,Swagger 或接口文档应可访问。

图:后端启动成功示例


2. 前端部署 (Vue)

2.1 项目打包

在本地前端项目根目录下,构建生产环境代码。

# 构建生产环境 (根据 package.json 中的脚本名称调整)
npm run build

打包结果:

  • 生成 dist 文件夹。
  • 包含 index.html 和 static 资源。

图:前端打包过程

图:打包生成的 dist 目录

2.2 上传静态资源

将生成的 dist 文件夹上传至服务器。

[!NOTE] 目录规范建议 建议重命名 dist 文件夹以区分不同项目或端(如 parking-back),不要直接使用默认的 dist 名称。

上传路径示例:/home/www/parking-back/parking-back

图:前端文件上传位置


3. Nginx 配置 (核心步骤)

Nginx 负责处理静态资源请求和将 API 请求反向代理到后端。

3.1 修改配置文件

编辑 Nginx 配置文件(通常位于 /usr/local/nginx/conf/nginx.conf 或 /etc/nginx/nginx.conf)。

图:定位 nginx.conf 文件

配置示例与详解:

server {
    # 1. 监听端口 (前端访问入口)
    # 注意:此端口 (如 9090) 同样需要在安全组和防火墙中开放
    listen 9090;
    
    # 2. 服务器域名或 IP
    server_name localhost;
    
    # 3. 前端静态资源配置
    location / {
        # 指定前端文件上传的绝对路径
        root "/home/www/parking-back/parking-back";
        # 默认首页
        index index.html index.htm;
        
        # 4. 解决 Vue History 模式刷新 404 问题 (关键)
        # 尝试寻找 $uri,找不到找 $uri/,再找不到跳转 index.html
        try_files $uri $uri/ /index.html;
    }
    
    # 5. 后端接口反向代理配置
    # 拦截以 /prod-api/ 开头的请求
    location /prod-api/ {
        # 代理转发到后端服务地址
        # 注意:proxy_pass 结尾带 / 会去除 /prod-api/ 前缀
        proxy_pass http://localhost:8080/;
        
        # 传递真实客户端 IP 等头部信息
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    
    # 错误页面配置
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root html;
    }
}

图:Nginx 配置截图

3.2 重启 Nginx

修改配置文件后,必须重载或重启 Nginx 才能生效。

# 进入 Nginx sbin 目录 (根据实际安装位置调整)
cd /usr/local/nginx/sbin

# 检查配置文件语法是否正确
./nginx -t

# 重载配置文件 (推荐,无需停止服务)
./nginx -s reload

4. 最终验证

在浏览器中访问 http://服务器 IP:前端端口(例如 http://x.x.x.x:9090)。 如果能正常显示页面且验证码/数据加载正常,说明前后端部署及 Nginx 代理配置成功。

图:项目访问成功效果

目录

  1. Linux 环境下前后端分离项目手动部署指南
  2. 0. 环境准备
  3. 1. 后端部署 (Spring Boot)
  4. 1.1 源码打包
  5. 1.2 上传程序
  6. 1.3 启动服务
  7. 基础启动命令 (根据实际 jar 包名称修改)
  8. > temp.txt 表示将日志输出重定向到 temp.txt,& 表示后台运行
  9. 1.4 进程管理与验证
  10. 检查是否有 java 进程在运行
  11. -9 表示强制终止
  12. 2. 前端部署 (Vue)
  13. 2.1 项目打包
  14. 构建生产环境 (根据 package.json 中的脚本名称调整)
  15. 2.2 上传静态资源
  16. 3. Nginx 配置 (核心步骤)
  17. 3.1 修改配置文件
  18. 3.2 重启 Nginx
  19. 进入 Nginx sbin 目录 (根据实际安装位置调整)
  20. 检查配置文件语法是否正确
  21. 重载配置文件 (推荐,无需停止服务)
  22. 4. 最终验证

更多推荐文章

查看全部
  • 2025 年 12 月航拍无人机选购指南:从入门到专业机型推荐
  • Spring Boot 4.0 新特性深度解析与实战指南
  • Lostlife2.0 角色对话系统升级:基于 LLama-Factory 微调剧情模型
  • Python 开发效率提升与性能优化核心工具指南
  • AIGC 试用:AI 辅助软件开发流程与测试系统设计
  • Windows 环境下 Git 的安装与基础配置
  • Lua 语言入门指南
  • 图论算法总结:单源最短路(Dijkstra 与 SPFA)
  • Rust 性能优化全流程:从 flamegraph 定位瓶颈到 unsafe 与 SIMD 加速
  • LLaMA-3 本地部署指南:Ollama 与 Open WebUI 搭建
  • LoRA训练入门指南:5步掌握AI绘画模型定制
  • C++ STL 核心基础:迭代器、auto 与范围循环
  • 特征工程深度解析:原理、方法与工程实践
  • 飞书自定义机器人 Webhook 接入与实现
  • Jimeng AI Studio 零代码 AI 绘画使用指南
  • SQLAlchemy 核心用法与实战案例解析
  • 按下 F5 后浏览器前端发生了什么
  • C++ 多线程任务系统实现:mutex、condition_variable 与 atomic 组合实战
  • 系统接收多种报文时,如何避免 if-else 地狱?策略与工厂模式实战
  • 基于 OpenClaw 与 Claude 的自动化写作工作流搭建实践

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online