# 宝塔面板部署指南 ## 快速开始 ### 方式一:使用部署脚本(推荐) ```bash # 1. 配置环境变量 export REMOTE_HOST=你的服务器 IP export REMOTE_USER=root # 2. 部署后端 ./deploy-backend.sh # 3. 部署前端 ./deploy-frontend.sh ``` ### 方式二:手动部署 --- ## 第一步:在宝塔安装基础服务 1. 登录宝塔面板(`http://你的IP:8888`) 2. 安装 LNMP 套件: - Nginx 1.24+ - MySQL 8.0+ - PHP 纯静态(前端不需要 PHP) - Redis 7.x 3. 安装 JDK 17: - 软件商店 → 搜索 "Java" - 安装 JDK 17 版本 --- ## 第二步:创建数据库 1. 宝塔面板 → 数据库 → 添加 2. 填写信息: - 数据库名:`lesingle-edu-reading-platform` - 用户名:`reading_platform` - 密码:设置一个强密码(保存好) - 权限:全部 3. 记录数据库信息,后面要用 --- ## 第三步:部署后端 ### 3.1 上传 JAR 包 ```bash # 本地构建 cd /f/LesingleProject/lesingle-kindergarten-course/kindergarten_java/lesingle-edu-reading-platform-backend mvn clean package -DskipTests # 上传到服务器 scp target/reading-platform-1.0.0.jar root@你的 IP:/www/wwwroot/reading-platform/app.jar ``` ### 3.2 创建启动脚本 在服务器上创建 `/www/wwwroot/reading-platform/start.sh`: ```bash #!/bin/bash export SPRING_PROFILES_ACTIVE=prod export SERVER_PORT=8480 export DB_HOST=localhost export DB_PASSWORD=你的数据库密码 export JWT_SECRET=你的 JWT 密钥 nohup java -jar -Xms512m -Xmx1024m /www/wwwroot/reading-platform/app.jar \ --spring.profiles.active=prod > /www/wwwroot/reading-platform/logs/app.log 2>&1 & echo $! > /www/wwwroot/reading-platform/app.pid ``` ```bash chmod +x /www/wwwroot/reading-platform/start.sh ``` ### 3.3 创建环境变量文件 `/www/wwwroot/reading-platform/.env`: ```bash # 数据库 DB_HOST=localhost DB_PASSWORD=你的数据库密码 # JWT JWT_SECRET=你的-production-jwt-secret-至少-32-字符 JWT_EXPIRATION=86400000 # Redis REDIS_HOST=localhost REDIS_PORT=6379 # OSS OSS_ACCESS_KEY_ID=LTAI5tKZhPofbThbSzDSiWoK OSS_ACCESS_KEY_SECRET=FtcsC7oQX3T0NaChaa9FYq2aoysQFM OSS_BUCKET_NAME=lesingle-kid-course ``` ### 3.4 启动后端 ```bash cd /www/wwwroot/reading-platform ./start.sh # 查看日志 tail -f logs/app.log ``` --- ## 第四步:部署前端 ### 4.1 本地构建 ```bash cd /f/LesingleProject/lesingle-kindergarten-course/kindergarten_java/lesingle-edu-reading-platform-frontend npm run build ``` ### 4.2 上传到服务器 ```bash # 上传到宝塔站点目录 scp -r dist/* root@你的 IP:/www/wwwroot/你的域名/ ``` --- ## 第五步:配置 Nginx 反向代理 1. 宝塔面板 → 网站 → 添加站点 2. 填写域名,根目录设为 `/www/wwwroot/你的域名` 3. 确定后,点击网站 → 设置 → 配置文件 4. 添加以下配置: ```nginx # 前端页面 location / { try_files $uri $uri/ /index.html; } # 后端 API 反向代理 location /api { proxy_pass http://localhost:8480; 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 /uploads { proxy_pass http://localhost:8480; } ``` 5. 保存配置 --- ## 第六步:配置防火墙 1. 宝塔面板 → 安全 → 放行端口 2. 放行以下端口: - 80(HTTP) - 443(HTTPS,如果用 SSL) - 8480(后端 API,可选,如果通过 Nginx 代理就不需要) --- ## 第七步:验证部署 ```bash # 检查后端健康状态 curl http://localhost:8480/actuator/health # 访问前端 curl http://localhost # 测试 API curl http://localhost:8480/api/v1 ``` --- ## 第八步:申请 SSL 证书(可选) 1. 宝塔面板 → 网站 → 点击对应网站 → SSL 2. 选择 "Let's Encrypt" 免费证书 3. 填写邮箱,点击申请 4. 申请成功后,开启"强制 HTTPS" --- ## 管理命令 ### 后端管理 ```bash # 启动 cd /www/wwwroot/reading-platform && ./start.sh # 停止 cd /www/wwwroot/reading-platform && ./stop.sh # 重启 cd /www/wwwroot/reading-platform && ./stop.sh && ./start.sh # 查看日志 tail -f /www/wwwroot/reading-platform/logs/app.log # 查看进程 ps aux | grep reading-platform ``` ### 前端更新 ```bash # 本地重新构建并上传 cd lesingle-edu-reading-platform-frontend npm run build scp -r dist/* root@你的 IP:/www/wwwroot/你的域名/ ``` --- ## 常见问题 ### 1. 后端启动失败 检查日志: ```bash tail -100 /www/wwwroot/reading-platform/logs/app.log ``` 常见原因: - JDK 版本不对(必须是 17) - 数据库连接失败 - 端口被占用 ### 2. 前端页面空白 - 检查 Nginx 配置是否正确 - 打开浏览器 Console 查看错误 - 检查 API 请求是否 404 ### 3. API 请求失败 - 检查 Nginx 反向代理配置 - 确认后端服务是否运行 - 检查防火墙端口 ### 4. 文件上传失败 - 检查 OSS 配置 - 检查 Nginx 上传大小限制 - 查看后端日志 --- ## 性能优化 ### JVM 优化参数 ```bash java -jar \ -Xms1g \ -Xmx2g \ -XX:+UseG1GC \ -XX:MaxGCPauseMillis=200 \ -XX:+HeapDumpOnOutOfMemoryError \ app.jar ``` ### Nginx 优化 ```nginx # 开启 gzip 压缩 gzip on; gzip_types text/plain text/css application/json application/javascript; # 上传大小限制 client_max_body_size 100M; ``` --- ## 备份与恢复 ### 数据库备份 ```bash # 宝塔面板 → 数据库 → 备份 # 或命令行 mysqldump -u reading_platform -p lesingle-edu-reading-platform > backup.sql ``` ### 文件备份 ```bash tar -czf backup-$(date +%Y%m%d).tar.gz /www/wwwroot/reading-platform ```