# 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配置管理界面!