# 修复OSS配置问题 ## 问题确认 当前配置使用的Bucket: ``` ALIYUN_OSS_BUCKET_NAME=hello12312312 ALIYUN_OSS_ENDPOINT=https://oss-cn-hangzhou.aliyuncs.com ALIYUN_OSS_CDN_DOMAIN=https://hello12312312.oss-cn-hangzhou.aliyuncs.com ``` 但歌曲音频文件存储在: ``` nvlovers.oss-cn-qingdao.aliyuncs.com ``` ## 解决方案选择 ### 方案A: 统一使用 nvlovers Bucket(推荐) 如果 nvlovers 是主要的生产环境Bucket,建议统一使用它。 **步骤:** 1. 修改 `.env` 文件: ```bash ALIYUN_OSS_BUCKET_NAME=nvlovers ALIYUN_OSS_ENDPOINT=https://oss-cn-qingdao.aliyuncs.com ALIYUN_OSS_CDN_DOMAIN=https://nvlovers.oss-cn-qingdao.aliyuncs.com ``` 2. 修改 `lover/.env` 文件(如果有OSS配置) 3. 重启应用 ### 方案B: 统一使用 hello12312312 Bucket 如果要使用 hello12312312 作为主Bucket,需要迁移所有资源。 **步骤:** 1. 使用ossutil同步歌曲音频文件: ```bash # 安装ossutil(如果还没安装) # Windows: 下载 https://gosspublic.alicdn.com/ossutil/ossutil64.exe # 配置ossutil ossutil config # 同步uploads目录 ossutil cp -r \ oss://nvlovers/uploads/ \ oss://hello12312312/uploads/ \ --update ``` 2. 同步恋人图片(如果需要) 3. 更新数据库中的URL(可选) ### 方案C: 双Bucket配置(不推荐) 保持两个Bucket,但需要修改代码逻辑来处理不同来源的资源。这会增加复杂度,不推荐。 ## 推荐方案:方案A 建议统一使用 `nvlovers` Bucket,因为: 1. 歌曲音频已经存储在那里 2. 从数据库导出看,成功的任务都使用 nvlovers 3. 迁移成本最低 ## 具体操作步骤 ### 1. 备份当前配置 ```bash copy .env .env.backup copy lover\.env lover\.env.backup ``` ### 2. 修改主配置文件 编辑 `.env`: ```bash # 修改这几行 ALIYUN_OSS_BUCKET_NAME=nvlovers ALIYUN_OSS_ENDPOINT=https://oss-cn-qingdao.aliyuncs.com ALIYUN_OSS_CDN_DOMAIN=https://nvlovers.oss-cn-qingdao.aliyuncs.com ``` ### 3. 检查lover配置 确保 `lover/.env` 没有覆盖OSS配置,或者也同步修改。 ### 4. 重启应用 ```bash # 停止当前运行的服务 # 然后重新启动 启动项目.bat ``` ### 5. 验证修复 重新尝试生成唱歌视频,确认使用正确的Bucket。 ## 验证方法 ### 方法1: 查看新任务的URL 生成一个新任务后,检查数据库中的URL: ```sql SELECT id, JSON_EXTRACT(payload, '$.audio_url') as audio_url, JSON_EXTRACT(payload, '$.image_url') as image_url FROM nf_generation_tasks ORDER BY id DESC LIMIT 1; ``` 应该看到URL包含 `nvlovers.oss-cn-qingdao.aliyuncs.com` ### 方法2: 测试API ```bash # 创建一个测试任务 curl -X POST http://192.168.1.141:30101/sing/generate \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_TOKEN" \ -d '{ "song_id": 9, "lover_id": 64 }' ``` ## 注意事项 1. **访问密钥** 确保 ACCESS_KEY 对两个Bucket都有权限,或者更新为对应Bucket的密钥。 2. **已上传的文件** 如果用户已经上传了文件到 hello12312312,需要: - 迁移这些文件到 nvlovers - 或者保留 hello12312312 用于已有资源 3. **CDN配置** 如果使用了CDN,确保CDN配置指向正确的源站。 4. **跨域配置** 确保新Bucket的CORS配置正确。 ## 迁移现有资源(可选) 如果需要将 hello12312312 中的资源迁移到 nvlovers: ```bash # 使用ossutil批量复制 ossutil cp -r \ oss://hello12312312/lover/ \ oss://nvlovers/lover/ \ --update # 复制uploads目录 ossutil cp -r \ oss://hello12312312/uploads/ \ oss://nvlovers/uploads/ \ --update ``` ## 测试清单 修改配置后,测试以下功能: - [ ] 生成恋人形象 - [ ] 上传自定义图片 - [ ] 生成唱歌视频 - [ ] 生成跳舞视频 - [ ] 查看历史记录 - [ ] 图片和视频能正常显示 ## 回滚方案 如果修改后出现问题,可以快速回滚: ```bash copy .env.backup .env copy lover\.env.backup lover\.env # 重启应用 ``` ## 总结 任务382失败是因为OSS配置不一致。修复方法是统一使用 `nvlovers` Bucket,这样所有资源都在同一个地方,避免404错误。