宝塔面板+Linux云服务器部署若依前后端分离项目全流程(含Nginx配置避坑指南)
·
宝塔面板+Linux云服务器部署若依前后端分离项目全流程(含Nginx配置避坑指南)
在数字化转型浪潮中,前后端分离架构已成为企业级应用开发的主流选择。若依(RuoYi)作为国内知名的开源权限管理系统,凭借其优雅的代码结构和丰富的功能组件,深受开发者喜爱。但对于不熟悉Linux命令行的开发者而言,在云服务器上部署若依前后端分离项目仍存在一定门槛。本文将基于宝塔面板这一可视化运维工具,手把手带你完成从零开始的部署全流程,特别针对Nginx配置中的高频陷阱提供解决方案。
1. 环境准备与工具配置
部署前的环境准备如同建筑地基,直接影响后续所有环节的稳定性。我们推荐使用CentOS 7.x系统,因其长期支持(LTS)特性可确保系统稳定性。以下是需要提前准备的组件清单:
-
基础环境:
- 2核4G及以上配置的云服务器(阿里云/腾讯云等)
- 已安装宝塔面板7.9+版本
- 支持SSH连接的终端工具(FinalShell/Xshell)
-
运行环境:
# 通过宝塔面板一键安装以下服务: Nginx 1.20+ MySQL 5.7+(需设置root密码) Redis 6.2+ JDK 1.8(建议使用Oracle JDK)
注意:若依系统对MySQL 8.0+的兼容性可能存在字符集问题,推荐使用5.7版本。安装完成后,务必在宝塔面板的「安全」页面放行3306、6379等数据库端口。
2. 项目获取与预处理
从Gitee官方仓库获取最新版若依项目:
git clone https://gitee.com/y_project/RuoYi.git
项目结构解析:
ruoyi-ui/:基于Vue的前端项目ruoyi-admin/:Spring Boot后端核心模块sql/:包含初始化数据库脚本
前端预处理关键步骤:
- 修改
ruoyi-ui/.env.production文件中的API基础路径:VUE_APP_BASE_API = '/prod-api' - 安装依赖时建议使用国内镜像源:
npm install --registry=https://registry.npmmirror.com - 构建生产环境包:
npm run build:prod
构建完成后会在目录下生成dist文件夹,这就是需要部署的前端静态资源。
3. 宝塔面板可视化部署
3.1 前端部署实践
- 通过宝塔面板「网站」菜单创建新站点
- 将
dist文件夹内容上传至网站根目录(如/www/wwwroot/ruoyi) - 配置Nginx反向代理:
server {
listen 80;
server_name your-domain.com;
location / {
root /www/wwwroot/ruoyi;
try_files $uri $uri/ /index.html;
index index.html;
}
location /prod-api/ {
proxy_pass http://localhost: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;
}
}
3.2 后端服务部署
- 使用Maven打包项目:
mvn clean package -DskipTests - 将生成的
ruoyi-admin.jar上传至服务器 - 通过宝塔「Supervisor」配置守护进程:
[program:ruoyi] command=java -jar /www/server/ruoyi-admin.jar directory=/www/server/ autostart=true autorestart=true user=root - 配置项目
application.yml中的数据库连接信息
4. Nginx配置深度优化
4.1 高频问题解决方案
问题1:静态资源404错误 解决方案:
location /static/ {
alias /www/wwwroot/ruoyi/static/;
expires 30d;
}
问题2:接口跨域报错 在Nginx配置中添加:
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
4.2 性能调优参数
# 全局配置优化
worker_processes auto;
worker_rlimit_nofile 65535;
events {
worker_connections 4096;
use epoll;
multi_accept on;
}
http {
# 启用gzip压缩
gzip on;
gzip_min_length 1k;
gzip_comp_level 4;
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript;
# 静态资源缓存
open_file_cache max=200000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
}
5. 安全加固措施
-
MySQL安全配置:
- 修改默认3306端口
- 创建专属数据库用户(非root)
- 设置IP白名单访问
-
Redis防护方案:
# 修改redis.conf requirepass yourStrongPassword bind 127.0.0.1 protected-mode yes -
服务器层面防护:
- 启用宝塔防火墙
- 定期更新系统补丁
- 配置SSH密钥登录
实际部署中遇到过最棘手的问题是Nginx的try_files指令配置不当导致的路由失效。经过多次测试发现,在Vue路由模式下必须确保所有非静态资源请求都重定向到index.html,这个细节在官方文档中往往容易被忽略。
更多推荐


所有评论(0)