当前位置: 首页 > news >正文

宝塔面板实战:从零部署Java前后端分离项目

1. 环境准备与项目获取

第一次用宝塔面板部署Java前后端分离项目时,我踩了不少坑。记得当时接手一个类似芋道的电商管理系统,光是环境配置就折腾了大半天。现在回想起来,如果当时有人能给我一份详细指南,至少能节省3小时摸索时间。

首先需要准备一台云服务器,建议选择CentOS 7.6或Ubuntu 20.04这些宝塔面板官方推荐系统。我常用的是2核4G配置,对于中小型Java项目完全够用。登录服务器后,直接执行宝塔的一键安装命令:

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

安装过程大概5-10分钟,完成后会显示面板地址和初始账号密码。强烈建议第一时间修改默认端口和密码,我就遇到过被暴力破解的情况。

获取项目源码时,直接从Gitee克隆芋道这类开源项目最方便:

git clone https://gitee.com/zhijiantianya/ruoyi-vue-pro.git

这个项目结构很典型:

  • yudao-server是Spring Boot后端
  • yudao-ui-admin是Vue管理后台
  • yudao-ui-app是uniapp移动端

2. 后端部署实战

2.1 数据库与中间件配置

第一次部署时,我犯了个低级错误——直接用localhost连接数据库。结果部署后前端死活调不通接口,排查半天才发现是连接地址问题。正确做法是:

  1. 在宝塔面板创建MySQL数据库
  2. 修改application-prod.yml中的配置:
spring: datasource: url: jdbc:mysql://服务器内网IP:3306/yudao?useSSL=false username: root password: 你的数据库密码 redis: host: 服务器内网IP

有个细节要注意:如果使用云数据库,记得在安全组放行3306和6379端口。我有次部署就卡在这,本地测试通过但服务器连不上,后来发现是阿里云安全组没配置。

2.2 打包与本地测试

打包前建议先执行mvn clean,避免缓存问题。我习惯用这个命令:

mvn clean package -Dmaven.test.skip=true

打包成功后,在target目录会生成jar文件。本地测试时别直接用java -jar,推荐用这个带内存限制的命令:

java -Xms512m -Xmx1024m -jar yudao-server.jar

测试时我常用Postman调这几个接口:

  • GET /admin-api/system/demo/list测试基础连通性
  • POST /admin-api/login测试表单提交
  • GET /admin-api/infra/file/config测试文件配置

2.3 宝塔部署Java项目

宝塔的Java项目管理器真是神器,比手动写systemd服务方便多了。具体步骤:

  1. 在软件商店安装"Java项目管理器"
  2. 上传打包好的jar文件到/www/server/java目录
  3. 添加项目:
    • 项目路径选择上传的jar包
    • 端口建议用48080(记得防火墙放行)
    • JDK版本选1.8或11(根据项目需求)

有个坑要注意:如果项目启动失败,先检查ps -ef|grep java看进程是否存在。我遇到过宝塔显示运行中但实际进程已挂的情况。

3. 前端部署技巧

3.1 管理后台部署

前端部署最容易出问题的就是环境变量配置。以芋道为例,需要修改.env.production

VUE_APP_BASE_API = 'http://你的域名:48080' VUE_APP_WS_API = 'ws://你的域名:48080'

打包时用这个命令能生成更优化的产物:

npm run build:prod

打包后的dist文件,我习惯用宝塔的"网站"功能来部署:

  1. 添加PHP站点(虽然前端是静态资源,但PHP容器更方便管理)
  2. 删除默认的index.html
  3. 上传dist文件夹内容到网站根目录

3.2 解决F5刷新404问题

这个经典问题困扰过无数前端开发者。解决方案是在宝塔的站点配置里添加nginx规则:

location / { try_files $uri $uri/ /index.html; }

更完善的配置应该加上缓存策略,这是我常用的模板:

location / { try_files $uri $uri/ /index.html; expires 30d; add_header Cache-Control "public, no-transform"; } location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { expires 1y; add_header Cache-Control "public, no-transform"; }

4. 联调与问题排查

4.1 跨域问题处理

前后端分离项目必遇跨域问题。推荐在后端直接配置:

@Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("*") .allowedMethods("*") .allowedHeaders("*"); } }

如果还遇到问题,可以检查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 接口调试技巧

我习惯用这几个方法验证接口:

  1. 直接在浏览器访问http://ip:port/admin-api/system/demo/list
  2. 用curl测试:
curl -X POST "http://ip:port/admin-api/login" \ -H "Content-Type: application/json" \ -d '{"username":"admin","password":"admin123"}'
  1. 查看宝塔的Java项目日志,过滤ERROR级别信息

4.3 性能优化建议

上线后可以做这些优化:

  1. 开启nginx gzip压缩:
gzip on; gzip_min_length 1k; gzip_comp_level 6; gzip_types text/plain text/css application/json application/javascript text/xml;
  1. 配置Java启动参数:
-server -Xms2048m -Xmx2048m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m
  1. 静态资源上CDN,修改前端配置:
VUE_APP_CDN_URL = 'https://你的CDN域名'

5. 移动端特别处理

uniapp项目部署有些特殊注意事项。打包时要选择"生产环境":

npm run build:h5 --mode production

上传到服务器后,需要额外配置manifest.json里的接口地址:

"h5": { "router": { "base": "/mobile/" }, "axios": { "baseURL": "http://你的域名:48080" } }

对于微信小程序等平台,还需要在宝塔配置HTTPS。建议使用Let's Encrypt免费证书,在宝塔面板一键申请即可。

http://www.jsqmd.com/news/484507/

相关文章:

  • 基于Arduino的LED台灯照度闭环控制系统设计
  • html5在线教材订购系统的设计与实现毕业设计论文
  • 颠覆性XML树状可视化:开发者效率革命
  • 告别界面设计烦恼!MAI-UI-8B智能体5分钟帮你搞定
  • MCP OAuth 2026密钥轮转机制深度解析,如何在不中断服务前提下实现毫秒级凭证吊销(附NIST SP 800-218兼容检查表)
  • DeepSeek-R1-Distill-Llama-8B保姆级教程:5分钟搭建AI推理环境
  • 【活动获奖作品】基于HLK-MT7628模块的三网口桌面路由器硬件设计与OpenWrt刷机实战
  • Qwen3Guard-Gen-WEB在智能客服中的应用:防止AI胡说八道的后置审核方案
  • 重庆厂房建设工程价格大概多少,哪家供应商比较靠谱? - myqiye
  • Python还是MATLAB?5个真实项目案例告诉你深度学习该选谁
  • 聊聊选购反应釜,沙家浜药机的性价比怎么样 - mypinpai
  • Z-Image-Turbo-rinaiqiao-huiyewunv部署案例:低配显卡(6GB VRAM)流畅运行Turbo模型实录
  • 实战应用进阶,利用快马ai生成可扩展的银行账户管理系统项目
  • 盘点2026年高温老化试验箱源头厂家,选哪家 - 工业推荐榜
  • AutoCAD选择集过滤全攻略:从图层到颜色的精准选择
  • 造相-Z-Image-Turbo亚洲美女LoRA:10秒生成专业级电商模特图
  • 告别手动测试:用快马AI自动生成OpenClaw多配置对比与评估报告
  • GD32——外部中断EXTI实战:按键响应与优先级管理
  • 海峰自动门操作便捷性如何,深圳、佛山等地自动门价格对比 - 工业设备
  • 张国栋web作业
  • 新手避坑指南:为什么你的Pandas导出Excel总出现dtype: object?(附修复代码)
  • RexUniNLU多领域泛化能力展示:同一模型在电商搜索与医疗问答中表现对比
  • ai赋能开发:借助快马平台智能生成yolov5超参数调优与模型优化代码
  • Windows下用Supervisor管理Python进程的3种姿势(含开机自启)
  • 细聊天津塑料袋品牌制造商,金盛昱产品价格贵不贵? - 工业品牌热点
  • Nunchaku-flux-1-dev与STM32嵌入式开发:工业检测图像生成方案
  • 突破180帧瓶颈:《魔兽争霸3》帧率优化实战指南
  • 为什么专业开发者都在用Beyond Compare?Sourcetree集成全攻略
  • 2026年北京地区温室大棚厂家推荐,华誉农业定制生产优势凸显 - 工业品网
  • 深度解析Geo优化:AI引用的底层逻辑与“双核四驱”实战范式