Files
wish-pool/VERCEL-DEPLOYMENT.md
2025-07-19 02:47:06 +08:00

185 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 心願星河 - Vercel 部署指南
## 📋 部署前检查清单
### 1. 数据库准备
- ✅ Supabase 项目已创建并配置
- ✅ 数据库表格已创建(运行过所有 SQL 脚本)
- ✅ Storage 桶已设置
- ✅ RLS 政策已配置
### 2. 代码准备
- ✅ 代码已推送到 GitHub
- ✅ 项目可以在本地正常运行
- ✅ 构建命令可以成功执行
## 🚀 Vercel 部署步骤
### 第一步:连接 GitHub
1. 访问 [Vercel Dashboard](https://vercel.com/dashboard)
2. 点击 "New Project"
3. 从 GitHub 选择 `wish-pool` 仓库
4. 点击 "Import"
### 第二步:项目配置
**Framework Preset**: Next.js
**Root Directory**: `./`
**Build Command**: `npm run build`
**Output Directory**: `.next`(默认,无需修改)
### 第三步:环境变量设置 ⚠️ 重要
在 Vercel 项目设置中添加以下环境变量:
#### 必要的环境变量
```env
# Supabase 配置 (必需)
NEXT_PUBLIC_SUPABASE_URL=your_supabase_project_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
# 生产环境 URL (必需修改)
NEXT_PUBLIC_APP_URL=https://your-app-name.vercel.app
# Supabase Service Role Key (可选,用于管理功能)
SUPABASE_SERVICE_ROLE_KEY=your_service_role_key
```
#### 🔧 如何获取 Supabase 配置
1. 访问 [Supabase Dashboard](https://app.supabase.com/)
2. 选择您的项目
3. 进入 Settings → API
4. 复制以下值:
- **Project URL** → `NEXT_PUBLIC_SUPABASE_URL`
- **Anon public** → `NEXT_PUBLIC_SUPABASE_ANON_KEY`
- **Service role** → `SUPABASE_SERVICE_ROLE_KEY`
#### 🌐 设置生产环境 URL
部署完成后Vercel 会给您一个域名,例如:
- 临时域名:`https://wish-pool-abcd1234.vercel.app`
- 自定义域名:`https://your-custom-domain.com`
将这个域名设置为 `NEXT_PUBLIC_APP_URL` 的值。
### 第四步:执行部署
1. 确认所有设置正确
2. 点击 "Deploy"
3. 等待部署完成(通常 2-5 分钟)
## 🎯 部署后配置
### 1. 更新环境变量
部署成功后,获取 Vercel 分配的域名,然后:
1. 进入 Vercel 项目设置
2. 找到 Environment Variables
3. 编辑 `NEXT_PUBLIC_APP_URL`
4. 设置为实际的生产域名
5. 重新部署(可选,如果应用需要这个变量)
### 2. Supabase 域名配置
在 Supabase Dashboard 中:
1. 进入 Authentication → Settings
2. 添加您的 Vercel 域名到 Site URL
3. 添加到 Redirect URLs如果有登录功能
## ✅ 部署后验证
### 功能测试
- [ ] 访问主页是否正常加载
- [ ] 提交困扰案例功能
- [ ] 查看公开困扰功能
- [ ] 点赞功能是否正常
- [ ] 图片上传功能
- [ ] 背景音乐控制
- [ ] 响应式设计在不同设备
### 性能检查
- [ ] 页面加载速度
- [ ] 图片显示正常
- [ ] API 调用响应时间
- [ ] SEO 元标签
### 数据库连接测试
```bash
# 可以在本地测试生产环境的连接
NEXT_PUBLIC_SUPABASE_URL=your_production_url \
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_production_key \
npm run dev
```
## 🔧 常见问题解决
### 1. 构建失败
**错误**: `Module not found` 或类型错误
**解决**: 检查所有依赖是否已安装,运行 `npm install`
### 2. Supabase 连接失败
**错误**: 401 Unauthorized 或连接超时
**解决**:
- 检查环境变量是否正确设置
- 确认 Supabase 项目状态是否正常
- 验证 API 密钥是否有效
### 3. 图片上传失败
**错误**: Storage 相关错误
**解决**:
- 检查 Storage 桶是否已创建
- 确认 RLS 政策是否正确配置
- 验证 CORS 设置
### 4. 环境变量未生效
**错误**: 环境变量读取为 undefined
**解决**:
- 确保变量名以 `NEXT_PUBLIC_` 开头(客户端变量)
- 重新部署项目
- 检查变量值中没有多余的空格或引号
## 📈 生产环境优化
### 1. 自定义域名设置
1. 在 Vercel 项目设置中点击 "Domains"
2. 添加您的自定义域名
3. 配置 DNS 记录
4. 更新 `NEXT_PUBLIC_APP_URL` 环境变量
### 2. 分析和监控
```env
# 可选:添加分析工具
NEXT_PUBLIC_GOOGLE_ANALYTICS=GA_MEASUREMENT_ID
NEXT_PUBLIC_VERCEL_ANALYTICS=true
```
### 3. 安全配置
- 启用 HTTPSVercel 自动配置)
- 配置适当的 CORS 政策
- 设置合适的 CSP 标头
## 🚨 重要提醒
1. **环境变量安全**
- 不要在客户端代码中暴露 Service Role Key
- 只有 `NEXT_PUBLIC_` 开头的变量可以在浏览器中访问
2. **数据备份**
- 部署前确保 Supabase 数据已备份
- 保存环境变量配置的副本
3. **测试环境**
- 建议先在 Preview 环境测试
- 确认所有功能正常后再推广到生产环境
## 📞 支持
如果遇到部署问题,请检查:
1. Vercel 部署日志
2. Supabase 项目状态
3. 浏览器控制台错误
4. 网络连接状况
---
**快速部署检查表**
- [ ] GitHub 代码已推送
- [ ] Supabase 项目已配置
- [ ] 环境变量已设置
- [ ] 部署成功
- [ ] 功能测试通过
- [ ] 域名已配置