宝塔面板部署SpringBoot+Vue项目,我踩过的那些坑(含路由配置、端口占用、打包错误解决)
宝塔面板部署SpringBootVue项目实战避坑指南1. 环境准备与基础配置在开始部署之前确保服务器环境已经正确配置。对于CentOS系统建议使用7.x版本这是目前最稳定且兼容性最好的选择。通过SSH工具连接服务器后执行以下命令安装宝塔面板yum install -y wget wget -O install.sh https://download.bt.cn/install/install_6.0.sh sh install.sh ed8484bec安装完成后系统会显示面板的访问地址和默认账号密码。首次登录后建议立即修改这些默认凭证并安装必要的运行环境Nginx1.18版本MySQL5.7或8.0版本Java根据SpringBoot版本选择JDK8或JDK11提示在阿里云等云服务器上部署时记得在安全组中放行宝塔面板默认端口8888以及项目所需的其他端口。2. 前端Vue项目部署常见问题2.1 路由配置404问题这是Vue项目部署中最常见的问题之一。当刷新页面或直接访问子路由时出现404错误通常是因为Nginx没有正确配置。解决方法是在宝塔面板中找到对应的网站设置修改Nginx配置文件location / { try_files $uri $uri/ /index.html; }2.2 打包错误与优化在打包Vue项目时可能会遇到各种错误。以下是几个常见问题及解决方案内存不足在打包大型项目时Node.js可能会因内存不足而崩溃。可以通过增加内存限制解决export NODE_OPTIONS--max_old_space_size4096 npm run build依赖冲突删除node_modules和package-lock.json后重新安装依赖rm -rf node_modules package-lock.json npm install路径问题在vue.config.js中设置正确的publicPathmodule.exports { publicPath: process.env.NODE_ENV production ? / : /, }3. 后端SpringBoot项目部署要点3.1 数据库连接配置在application.properties或application.yml中确保数据库连接信息正确spring: datasource: url: jdbc:mysql://服务器IP:3306/数据库名?useSSLfalseserverTimezoneAsia/Shanghai username: 数据库用户名 password: 数据库密码注意宝塔面板创建的MySQL数据库默认只允许本地连接如果需要远程连接需在宝塔的数据库管理中设置权限为所有人或指定IP。3.2 端口占用问题当启动SpringBoot应用时可能会遇到端口被占用的情况。可以通过以下命令查找并释放端口# 查看端口占用情况 netstat -lnp | grep 8080 # 杀死占用进程 kill -9 进程ID3.3 JAR包运行与日志管理使用nohup命令后台运行SpringBoot应用并记录日志nohup java -jar your-application.jar app.log 21 为了方便管理可以创建一个简单的启动脚本start.sh#!/bin/bash nohup java -Xms512m -Xmx1024m -jar your-application.jar app.log 21 echo $! pid.file4. 前后端联调与Nginx配置4.1 反向代理配置在宝塔面板中创建网站后配置Nginx反向代理将前端请求转发到后端APIlocation /api/ { proxy_pass http://127.0.0.1:后端端口/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }4.2 静态资源缓存优化对于Vue打包生成的静态资源可以设置长期缓存以提高性能location /static/ { expires 1y; add_header Cache-Control public; } location /img/ { expires 1y; add_header Cache-Control public; }4.3 HTTPS配置在宝塔面板中可以一键申请SSL证书并配置HTTPS。配置完成后强制HTTP跳转到HTTPSserver { listen 80; server_name yourdomain.com; return 301 https://$server_name$request_uri; }5. 性能监控与优化5.1 内存泄漏排查当Java应用运行一段时间后出现内存泄漏可以使用以下命令生成堆转储文件分析jmap -dump:formatb,fileheap.hprof 进程ID5.2 数据库性能优化在宝塔面板的MySQL管理中可以开启慢查询日志SET GLOBAL slow_query_log ON; SET GLOBAL long_query_time 1; SET GLOBAL slow_query_log_file /var/log/mysql/mysql-slow.log;5.3 Nginx性能调优根据服务器配置调整Nginx工作进程数和连接数worker_processes auto; events { worker_connections 1024; multi_accept on; }6. 自动化部署方案6.1 宝塔WebHook实现自动部署在宝塔面板的软件商店中安装WebHook插件然后添加一个钩子#!/bin/bash cd /www/wwwroot/your-project git pull origin master npm install npm run build pm2 restart all6.2 使用PM2管理Node进程对于需要运行Node服务的项目可以使用PM2进行管理npm install pm2 -g pm2 start npm --name your-app -- run start pm2 save pm2 startup6.3 备份策略配置在宝塔面板的计划任务中设置定期备份数据库备份每天一次保留最近7天网站文件备份每周一次保留最近4周项目代码备份每次部署前自动备份7. 疑难杂症解决方案在实际部署过程中总会遇到一些意想不到的问题。以下是一些常见问题的快速解决方法前端样式丢失检查publicPath配置是否正确确保静态资源路径无误跨域问题在后端添加CORS配置或通过Nginx代理解决上传文件大小限制在Nginx和SpringBoot中分别调整配置时区问题在服务器和Java应用中统一设置为东八区字体文件加载失败在Nginx中添加字体文件的MIME类型经过多次项目部署实践我发现最耗时的往往不是技术问题而是环境配置和权限设置。建议在部署前做好详细规划记录每个步骤的操作和配置这样在遇到问题时可以快速定位和解决