news 2026/6/10 16:18:20

宝塔面板实战:从零部署Ruoyi前后端分离项目的完整指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
宝塔面板实战:从零部署Ruoyi前后端分离项目的完整指南

1. 环境准备与宝塔面板安装

第一次用宝塔部署Ruoyi项目时,我对着命令行界面发呆了半小时——这可能是很多小白的真实写照。其实整个过程就像组装乐高积木,只要按步骤来就能搭建出完整的系统。我们先从最基础的服务器环境说起。

选择云服务器时,国内主流平台1核2G配置就足够运行Ruoyi。记得在安全组开放以下端口:8888(宝塔面板)、80/443(Web服务)、3306(MySQL)、6379(Redis)以及项目要用的端口(如8080)。拿到服务器后,用SSH工具连接,执行这条"魔法咒语":

yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec

安装完成后会显示面板地址和初始账号密码,建议立即保存到本地。首次登录宝塔会弹出环境安装向导,我建议选择"LNMP"组合(Nginx 1.20+、MySQL 5.7、PHP 7.4)。这里有个小技巧:PHP版本选7.4足够用,MySQL一定要选5.7以上,否则导入数据时会报错。

2. 后端部署全流程

2.1 数据库配置

在宝塔面板的数据库菜单新建数据库,字符集选utf8mb4。下载的Ruoyi源码里会有SQL文件(通常在/sql目录),通过宝塔的phpMyAdmin导入时,我遇到过两个典型问题:

  • 文件过大无法上传:修改php.ini中的upload_max_filesize
  • 外键约束报错:在导入前执行SET FOREIGN_KEY_CHECKS=0

记得检查application-druid.yml中的数据库配置,特别是密码字段。有次我折腾半天连接失败,最后发现是密码里的特殊字符没转义。

2.2 项目打包与上传

用IDEA打开项目后,先修改这三个配置文件:

  1. application.yml:server.port改为计划使用的端口(如8080)
  2. application-druid.yml:数据库连接信息
  3. logback.xml:日志路径改为服务器真实路径(如/www/wwwroot/logs)

执行maven打包时,建议跳过测试:

mvn clean package -Dmaven.test.skip=true

上传jar包到服务器后,在宝塔的"Java项目"菜单新建项目。关键配置点:

  • 项目路径:建议放在/www/wwwroot/目录下
  • JDK版本:与本地开发环境保持一致
  • 端口号:与配置文件中的server.port一致

2.3 常见启动问题

第一次启动失败时别慌,查看日志通常能发现:

  • 端口冲突:netstat -tlnp查看占用端口的进程
  • 数据库连接失败:检查账号密码及远程连接权限
  • 文件权限问题:chmod -R 777 /www/wwwroot/logs

3. 前端部署实战

3.1 项目打包技巧

在ruoyi-ui目录下执行打包时,Node.js版本建议用16.x。遇到过两个坑:

  1. 高版本Node报openssl错误:在package.json的build命令前加SET NODE_OPTIONS=--openssl-legacy-provider
  2. 打包后页面空白:修改vue.config.js中的publicPath为./

3.2 Nginx配置精髓

宝塔新建站点后,关键配置在Nginx的location块:

location / { try_files $uri $uri/ /index.html; root /www/wwwroot/ruoyi-ui/dist; } location /prod-api/ { proxy_pass http://127.0.0.1:8080/; proxy_set_header Host $http_host; }

特别注意:

  • proxy_pass末尾的/不能漏
  • 前端路由需要try_files配置
  • 静态资源缓存可以设置expires

4. 安全加固与优化

部署完成后,建议立即:

  1. 修改宝塔面板默认端口
  2. 设置SSH密钥登录
  3. 配置防火墙规则
  4. 开启Nginx的gzip压缩
  5. 设置定时任务备份数据库

性能优化方面,可以:

  • 调整JVM参数:-Xms512m -Xmx1024m
  • 配置Redis缓存
  • 开启Nginx的http2

5. 故障排查指南

遇到问题先看日志:

  • 后端日志:/www/wwwroot/项目名/logs
  • Nginx错误日志:/www/wwwlogs/域名.error.log
  • MySQL慢查询日志:通过宝塔面板开启

常见问题解决方案:

  1. 502错误:检查后端服务是否运行
  2. 接口404:确认Nginx的proxy_pass配置
  3. 静态资源加载失败:检查路径和权限
  4. 登录失败:确认Redis服务正常

记得第一次成功看到登录页面的成就感,所有报错都成了值得回味的经历。部署过程中养成记录配置变更的习惯,下次再部署同样项目时效率能提升数倍。

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

智能音乐识别实战:用Web应用轻松分类16种音乐流派

智能音乐识别实战:用Web应用轻松分类16种音乐流派 你有没有过这样的经历:听到一段旋律,心里直犯嘀咕——这到底是爵士还是蓝调?是电子还是拉丁?想查又懒得翻资料,想问又怕被当成乐理小白?现在&…

作者头像 李华
网站建设 2026/6/10 10:43:08

小白福音:3步搞定BSHM人像抠图,无需配置环境

小白福音:3步搞定BSHM人像抠图,无需配置环境 你是不是也遇到过这些情况:想给照片换背景,但PS太复杂;想批量处理人像,可抠图工具不是收费就是效果差;好不容易找到个开源模型,结果卡在…

作者头像 李华
网站建设 2026/6/10 10:46:03

MyBatis-Plus与JSQLParser版本冲突的深度解析:从依赖树到解决方案

MyBatis-Plus与JSQLParser版本冲突的深度解析:从依赖树到解决方案 1. 依赖冲突的本质与常见表现 在Java生态系统中,依赖冲突是开发过程中最常见的痛点之一。当MyBatis-Plus与JSQLParser版本不匹配时,通常会遇到以下几种典型错误: …

作者头像 李华
网站建设 2026/6/10 10:46:01

小白必看:如何用麦橘超然快速生成赛博朋克风城市

小白必看:如何用麦橘超然快速生成赛博朋克风城市 1. 这不是“又一个AI画图工具”,而是你能真正上手的赛博朋克造景台 你有没有试过在深夜刷到一张赛博朋克城市图——雨夜、霓虹、飞车、全息广告、潮湿的街道倒映着紫蓝色光晕,然后心里一紧&…

作者头像 李华
网站建设 2026/6/10 10:46:45

当Spring Data Redis遇见领域驱动设计:重构数据访问层的艺术

领域驱动设计下的Spring Data Redis深度实践:从聚合根到事件溯源的架构演进 Redis作为高性能内存数据库,早已超越简单的缓存角色,成为现代分布式架构的核心组件。但当我们将Redis置于领域驱动设计(DDD)的语境下&#…

作者头像 李华
网站建设 2026/6/10 11:42:53

Auto.js实战指南:Scrcpy无线投屏与自动化脚本开发环境搭建

1. Scrcpy无线投屏基础配置 Scrcpy作为一款开源的安卓设备投屏工具,最大的优势在于无需在手机端安装任何应用。我最初接触这个工具时,被它的低延迟表现惊艳到了——在5GHz WiFi环境下,延迟可以控制在50ms以内,完全满足实时操作的…

作者头像 李华