保姆级教程:用宝塔面板从零部署若依前后端分离项目(含SSL证书配置与跨域解决)

张开发
2026/4/6 4:12:10 15 分钟阅读

分享文章

保姆级教程:用宝塔面板从零部署若依前后端分离项目(含SSL证书配置与跨域解决)
宝塔面板实战若依前后端分离项目自动化部署指南第一次将本地开发的若依项目部署到线上服务器时面对复杂的Nginx配置和命令行操作我完全不知所措。直到发现宝塔面板这个神器整个部署过程从噩梦变成了享受甜点般的体验。本文将带你用宝塔面板实现若依项目的全自动化部署包括SSL证书配置和跨域问题的一站式解决方案。1. 环境准备与项目初始化在开始部署前确保你已经拥有一台云服务器推荐2核4G以上配置并完成基础系统安装。登录宝塔面板后第一件事是搭建项目运行所需的基础环境。必备软件安装清单Nginx 1.20用于前端部署和反向代理Java 8/11根据若依版本选择MySQL 5.7数据库服务Redis 6缓存服务PM2管理器可选用于Node项目在宝塔的软件商店中搜索并安装这些组件通常10分钟内就能完成所有基础环境搭建。记得在安装Java后通过以下命令验证版本java -version # 预期输出类似openjdk version 11.0.15 2022-04-19提示若依4.7版本建议使用Java 11旧版兼容Java 8。宝塔自带的OpenJDK通常能满足需求如需特定版本可手动上传JDK压缩包到/www/server/java目录。2. 后端项目部署详解2.1 项目配置调整在本地开发环境找到若依的admin模块需要修改三个关键配置文件application.yml- 修改服务器端口默认8080和Redis连接信息application-druid.yml- 更新生产环境数据库配置logback.xml- 调整日志存储路径建议改为/www/wwwlogs/ruoyi典型的数据库配置示例# application-druid.yml datasource: master: url: jdbc:mysql://localhost:3306/ry?useUnicodetruecharacterEncodingutf8zeroDateTimeBehaviorconvertToNulluseSSLtrueserverTimezoneGMT%2B8 username: ry_admin password: StrongPassword1232.2 打包与上传使用Maven进行项目打包IDE中双击package或命令行执行mvn clean package生成的jar包通常位于admin/target目录下文件名类似ruoyi-admin.jar。通过宝塔的文件功能将jar包上传到服务器推荐路径为/www/wwwroot/backend。接着在宝塔面板创建Java项目进入网站→Java项目→添加项目选择上传的jar文件设置项目端口如8002配置JDK路径默认/www/server/java内存分配建议1G以上启动项目后访问http://服务器IP:8002/swagger-ui/index.html验证是否成功。如果遇到日志路径错误确保/www/wwwlogs/ruoyi目录存在且可写。3. 前端项目部署策略3.1 环境配置调整前端项目需要根据部署环境修改API基础路径生产环境.env.productionVITE_APP_BASE_API https://api.yourdomain.com开发环境.env.developmentVITE_APP_BASE_API /dev-api在vite.config.js中配置代理规则确保开发时能正确转发请求server: { proxy: { /dev-api: { target: http://localhost:8002, changeOrigin: true, rewrite: (path) path.replace(/^\/dev-api/, ) } } }3.2 构建与部署执行构建命令生成生产环境代码npm run build生成的dist目录包含所有静态资源。通过宝塔创建PHP站点即使项目不含PHP进入网站→添加站点绑定域名如www.yourdomain.com根目录选择/www/wwwroot/frontend上传并解压dist目录内容注意虽然创建的是PHP站点但实际上我们只使用Nginx来托管静态文件。这种做法的好处是可以利用宝塔的SSL证书管理等高级功能。4. HTTPS与跨域终极解决方案4.1 SSL证书自动化配置宝塔面板最强大的功能之一就是SSL证书的一键申请和自动续期在站点设置中选择SSL→Lets Encrypt勾选需要绑定的域名选择文件验证方式最简单开启强制HTTPS选项证书续期通过宝塔的计划任务实现# 自动续期脚本示例 /www/server/panel/pyenv/bin/python /www/server/panel/class/acme_v2.py --renew1设置每月执行一次即可保证证书永不过期。4.2 Nginx反向代理配置解决前后端分离部署的核心是正确配置Nginx反向代理。在宝塔的站点设置中找到配置文件添加以下规则location /prod-api/ { proxy_pass http://127.0.0.1:8002/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location / { try_files $uri $uri/ /index.html; }4.3 混合内容问题修复当浏览器控制台出现Mixed Content错误时需要在Nginx配置中添加全局HTTPS强制server { listen 80; server_name yourdomain.com; return 301 https://$host$request_uri; }同时确保前端所有请求都使用HTTPS协议。在若依前端项目中检查vite.config.js和.env.production中的API地址是否以https://开头。5. 高级优化与监控部署完成后可以通过以下方式进一步提升项目稳定性性能优化配置表优化项配置建议生效位置静态缓存开启Nginx静态资源缓存站点设置→配置文件Gzip压缩启用Brotli或Gzip压缩软件商店→Nginx设置内存限制设置Java项目内存上限Java项目管理→JVM参数日志切割配置日志自动分割计划任务→日志切割对于生产环境建议添加基础监控在宝塔安全中配置防火墙规则仅开放必要端口使用监控功能设置资源告警阈值定期备份数据库和项目文件宝塔计划任务可自动化遇到突发流量时快速扩容方案# 临时增加Java项目内存 jcmd PID VM.flags -XX:MaxRAMPercentage70实际部署中最大的坑往往是路径权限问题。记得定期检查/www/wwwlogs和/tmp目录的写入权限特别是当项目自动更新后。有一次凌晨三点我被紧急电话叫醒处理线上故障最终发现只是因为日志目录被意外删除导致服务崩溃。现在我会在所有部署文档中用红色标注重要确保日志目录存在且可写

更多文章