# S3文件存储系统 - 部署说明 ## 📋 部署步骤 ### 第一步:上传文件到服务器 在**本地Mac**上执行以下命令,将所有新文件上传到服务器: ```bash # 设置变量 SERVER="root@192.168.150.22" BACKEND_DIR="/root/designhub-backend" # 请根据实际情况修改 # 1. 上传实体类 scp backend/src/main/java/com/designhub/entity/S3Config.java $SERVER:$BACKEND_DIR/src/main/java/com/designhub/entity/ scp backend/src/main/java/com/designhub/entity/FileUpload.java $SERVER:$BACKEND_DIR/src/main/java/com/designhub/entity/ # 2. 上传Mapper scp backend/src/main/java/com/designhub/mapper/S3ConfigMapper.java $SERVER:$BACKEND_DIR/src/main/java/com/designhub/mapper/ scp backend/src/main/java/com/designhub/mapper/FileUploadMapper.java $SERVER:$BACKEND_DIR/src/main/java/com/designhub/mapper/ # 3. 上传Service scp backend/src/main/java/com/designhub/service/S3Service.java $SERVER:$BACKEND_DIR/src/main/java/com/designhub/service/ scp backend/src/main/java/com/designhub/service/S3ConfigService.java $SERVER:$BACKEND_DIR/src/main/java/com/designhub/service/ # 4. 上传Controller scp backend/src/main/java/com/designhub/controller/S3ConfigController.java $SERVER:$BACKEND_DIR/src/main/java/com/designhub/controller/ scp backend/src/main/java/com/designhub/controller/FileUploadController.java $SERVER:$BACKEND_DIR/src/main/java/com/designhub/controller/ # 5. 上传pom.xml(已包含AWS SDK依赖) scp backend/pom.xml $SERVER:$BACKEND_DIR/ ``` ### 第二步:在服务器上执行数据库脚本 ```bash # SSH登录到服务器 ssh root@192.168.150.22 # 执行数据库脚本 mysql -uroot -p'Abc123456' designhub < /path/to/create_s3_config.sql # 或者直接执行SQL(如果文件已上传) mysql -uroot -p'Abc123456' designhub << EOF -- 执行 create_s3_config.sql 中的内容 EOF ``` ### 第三步:编译后端 ```bash # 在服务器上 cd /root/designhub-backend # 根据实际路径修改 # 清理并编译 mvn clean package -DskipTests ``` ### 第四步:部署和重启 ```bash # 1. 备份当前JAR cp /path/to/designhub-backend.jar /path/to/designhub-backend.jar.backup # 2. 复制新JAR(根据实际路径) cp target/designhub-backend-*.jar /path/to/designhub-backend.jar # 3. 重启服务 systemctl restart designhub-backend # 4. 检查状态 systemctl status designhub-backend # 5. 查看日志 journalctl -u designhub-backend -f ``` --- ## 🔍 验证部署 ### 1. 检查数据库表 ```sql -- 检查S3配置表 SELECT * FROM sys_s3_config; -- 检查文件上传表 SHOW CREATE TABLE sys_file_upload; ``` ### 2. 测试API ```bash # 获取激活的S3配置(需要token) curl -X GET http://localhost:8080/api/s3/config/active \ -H "Authorization: Bearer YOUR_TOKEN" # 上传文件测试(需要token) curl -X POST http://localhost:8080/api/file/upload \ -H "Authorization: Bearer YOUR_TOKEN" \ -F "files=@test.pdf" \ -F "relatedType=task" ``` --- ## 📝 文件清单 需要上传的文件: 1. **实体类** (Entity) - `S3Config.java` - `FileUpload.java` 2. **Mapper接口** - `S3ConfigMapper.java` - `FileUploadMapper.java` 3. **服务类** (Service) - `S3Service.java` - `S3ConfigService.java` 4. **控制器** (Controller) - `S3ConfigController.java` - `FileUploadController.java` 5. **配置文件** - `pom.xml` (已添加AWS SDK依赖) 6. **数据库脚本** - `database/create_s3_config.sql` --- ## ⚠️ 注意事项 1. **路径确认**:请确认服务器上的后端代码路径,可能需要修改 `BACKEND_DIR` 变量 2. **数据库密码**:如果数据库密码不是 `Abc123456`,请修改脚本中的密码 3. **Maven依赖**:确保 `pom.xml` 已包含以下依赖: ```xml software.amazon.awssdk s3 2.20.26 commons-io commons-io 2.11.0 ``` 4. **JwtUtil注入**:`FileUploadController` 需要注入 `JwtUtil`,确保 `JwtUtil` 是 `@Component` 5. **S3配置**:部署后需要在数据库中激活S3配置,默认配置已插入但需要确认 --- ## 🐛 常见问题 ### 问题1:编译失败 - 找不到AWS SDK类 **解决**:检查 `pom.xml` 是否包含AWS SDK依赖,然后执行 `mvn clean install` ### 问题2:运行时错误 - S3配置未激活 **解决**:检查数据库中的 `sys_s3_config` 表,确保有一条 `is_active=1` 的记录 ### 问题3:文件上传失败 - 连接S3超时 **解决**: - 检查S3服务端点是否可访问 - 检查AccessKey和SecretKey是否正确 - 检查网络连接和防火墙设置 --- ## ✅ 部署完成检查清单 - [ ] 所有Java文件已上传到服务器 - [ ] `pom.xml` 已更新并包含AWS SDK依赖 - [ ] 数据库脚本已执行,表已创建 - [ ] 后端编译成功,无错误 - [ ] JAR文件已部署到正确位置 - [ ] 服务已重启 - [ ] 服务状态正常(`systemctl status`) - [ ] 日志无错误信息 - [ ] API测试通过 --- 部署完成后,请告诉我,我将继续完成前端的S3配置管理界面!