321 lines
7.1 KiB
Markdown
321 lines
7.1 KiB
Markdown
# PromptForge 配置说明
|
||
|
||
本文档详细说明了 PromptForge 平台的环境变量配置和系统设置。
|
||
|
||
## 🔧 环境变量配置
|
||
|
||
### 创建配置文件
|
||
|
||
1. 在项目根目录创建 `.env.local` 文件
|
||
2. 复制以下配置模板并填入实际值
|
||
|
||
### 配置模板
|
||
|
||
```env
|
||
# ==================== 数据库配置 ====================
|
||
# 本地 MySQL 数据库
|
||
DATABASE_URL=mysql://root:your_password@localhost:3306/promptforge
|
||
|
||
# 腾讯云数据库配置(可选)
|
||
TENCENT_DATABASE_URL=mysql://root:!Rjb12191@gz-cynosdbmysql-grp-d26pzce5.sql.tencentcdb.com:24936/pronode_db?charset=utf8mb4
|
||
|
||
# ==================== API 密钥配置 ====================
|
||
# OpenAI API 配置
|
||
OPENAI_API_KEY=your_openai_api_key_here
|
||
OPENAI_API_URL=https://api.openai.com/v1
|
||
|
||
# Anthropic API 配置
|
||
ANTHROPIC_API_KEY=your_anthropic_api_key_here
|
||
ANTHROPIC_API_URL=https://api.anthropic.com
|
||
|
||
# DeepSeek API 配置
|
||
DEEPSEEK_API_KEY=sk-fdf7cc1c73504e628ec0119b7e11b8cc
|
||
DEEPSEEK_API_URL=https://api.deepseek.com/v1
|
||
|
||
# ==================== 应用配置 ====================
|
||
# NextAuth.js 配置
|
||
NEXTAUTH_SECRET=your_secret_key_here_make_it_long_and_random
|
||
NEXTAUTH_URL=http://localhost:3000
|
||
|
||
# 应用环境
|
||
NODE_ENV=development
|
||
|
||
# 端口配置
|
||
PORT=3000
|
||
|
||
# ==================== 可选配置 ====================
|
||
# 日志级别
|
||
LOG_LEVEL=info
|
||
|
||
# 缓存配置
|
||
REDIS_URL=redis://localhost:6379
|
||
|
||
# 文件上传配置
|
||
UPLOAD_DIR=./uploads
|
||
MAX_FILE_SIZE=10485760
|
||
|
||
# 邮件配置(可选)
|
||
SMTP_HOST=smtp.gmail.com
|
||
SMTP_PORT=587
|
||
SMTP_USER=your_email@gmail.com
|
||
SMTP_PASS=your_app_password
|
||
|
||
# ==================== 安全配置 ====================
|
||
# CORS 配置
|
||
CORS_ORIGIN=http://localhost:3000
|
||
|
||
# 会话配置
|
||
SESSION_SECRET=your_session_secret_here
|
||
|
||
# ==================== 开发配置 ====================
|
||
# 调试模式
|
||
DEBUG=true
|
||
|
||
# 热重载
|
||
FAST_REFRESH=true
|
||
|
||
# ==================== 生产配置 ====================
|
||
# 生产环境 URL
|
||
NEXT_PUBLIC_APP_URL=https://your-domain.com
|
||
|
||
# CDN 配置
|
||
NEXT_PUBLIC_CDN_URL=https://cdn.your-domain.com
|
||
|
||
# 分析配置
|
||
NEXT_PUBLIC_GA_ID=your_google_analytics_id
|
||
NEXT_PUBLIC_GTM_ID=your_google_tag_manager_id
|
||
```
|
||
|
||
## 🔑 API 密钥获取
|
||
|
||
### OpenAI API
|
||
1. 访问 [OpenAI Platform](https://platform.openai.com/)
|
||
2. 注册账户并登录
|
||
3. 进入 API Keys 页面
|
||
4. 点击 "Create new secret key"
|
||
5. 复制生成的密钥
|
||
|
||
### Anthropic API
|
||
1. 访问 [Anthropic Console](https://console.anthropic.com/)
|
||
2. 注册账户并登录
|
||
3. 进入 API Keys 页面
|
||
4. 点击 "Create Key"
|
||
5. 复制生成的密钥
|
||
|
||
### DeepSeek API
|
||
1. 访问 [DeepSeek Platform](https://platform.deepseek.com/)
|
||
2. 注册账户并登录
|
||
3. 进入 API Keys 页面
|
||
4. 创建新的 API 密钥
|
||
5. 复制生成的密钥
|
||
|
||
## 🔐 安全密钥生成
|
||
|
||
### 生成 NEXTAUTH_SECRET
|
||
```bash
|
||
# 使用 OpenSSL
|
||
openssl rand -base64 32
|
||
|
||
# 或使用 Node.js
|
||
node -e "console.log(require('crypto').randomBytes(32).toString('base64'))"
|
||
```
|
||
|
||
### 生成 SESSION_SECRET
|
||
```bash
|
||
# 使用 OpenSSL
|
||
openssl rand -base64 32
|
||
|
||
# 或使用 Node.js
|
||
node -e "console.log(require('crypto').randomBytes(32).toString('base64'))"
|
||
```
|
||
|
||
## 🗄️ 数据库配置
|
||
|
||
### 本地 MySQL 配置
|
||
|
||
1. **安装 MySQL**
|
||
```bash
|
||
# Ubuntu/Debian
|
||
sudo apt install mysql-server
|
||
|
||
# macOS
|
||
brew install mysql
|
||
|
||
# Windows
|
||
# 下载 MySQL Installer
|
||
```
|
||
|
||
2. **启动 MySQL 服务**
|
||
```bash
|
||
# Ubuntu/Debian
|
||
sudo systemctl start mysql
|
||
sudo systemctl enable mysql
|
||
|
||
# macOS
|
||
brew services start mysql
|
||
```
|
||
|
||
3. **创建数据库**
|
||
```sql
|
||
CREATE DATABASE promptforge CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||
CREATE DATABASE pronode_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||
```
|
||
|
||
4. **配置连接字符串**
|
||
```env
|
||
DATABASE_URL=mysql://username:password@localhost:3306/promptforge
|
||
```
|
||
|
||
### 腾讯云数据库配置
|
||
|
||
1. **获取连接信息**
|
||
- 主机地址:gz-cynosdbmysql-grp-d26pzce5.sql.tencentcdb.com
|
||
- 端口:24936
|
||
- 用户名:root
|
||
- 密码:!Rjb12191
|
||
- 数据库:pronode_db
|
||
|
||
2. **配置连接字符串**
|
||
```env
|
||
TENCENT_DATABASE_URL=mysql://root:!Rjb12191@gz-cynosdbmysql-grp-d26pzce5.sql.tencentcdb.com:24936/pronode_db?charset=utf8mb4
|
||
```
|
||
|
||
## 🚀 部署配置
|
||
|
||
### 开发环境
|
||
```env
|
||
NODE_ENV=development
|
||
DEBUG=true
|
||
FAST_REFRESH=true
|
||
```
|
||
|
||
### 生产环境
|
||
```env
|
||
NODE_ENV=production
|
||
DEBUG=false
|
||
FAST_REFRESH=false
|
||
NEXT_PUBLIC_APP_URL=https://your-domain.com
|
||
```
|
||
|
||
### Vercel 部署
|
||
1. 在 Vercel 项目设置中添加环境变量
|
||
2. 确保所有必需的变量都已配置
|
||
3. 重新部署应用
|
||
|
||
### Docker 部署
|
||
```dockerfile
|
||
# 使用环境变量文件
|
||
COPY .env.local .env.local
|
||
```
|
||
|
||
## 🔧 配置验证
|
||
|
||
### 验证数据库连接
|
||
```bash
|
||
# 测试数据库连接
|
||
node -e "
|
||
const mysql = require('mysql2/promise');
|
||
const url = process.env.DATABASE_URL;
|
||
mysql.createConnection(url).then(() => {
|
||
console.log('数据库连接成功');
|
||
}).catch(err => {
|
||
console.error('数据库连接失败:', err);
|
||
});
|
||
"
|
||
```
|
||
|
||
### 验证 API 密钥
|
||
```bash
|
||
# 测试 DeepSeek API
|
||
node test-deepseek-api.js
|
||
|
||
# 测试 OpenAI API
|
||
curl -H "Authorization: Bearer $OPENAI_API_KEY" \
|
||
https://api.openai.com/v1/models
|
||
```
|
||
|
||
## 📝 配置检查清单
|
||
|
||
### 必需配置
|
||
- [ ] `DATABASE_URL` - 数据库连接字符串
|
||
- [ ] `NEXTAUTH_SECRET` - 认证密钥
|
||
- [ ] `NEXTAUTH_URL` - 应用 URL
|
||
|
||
### 可选配置
|
||
- [ ] `OPENAI_API_KEY` - OpenAI API 密钥
|
||
- [ ] `ANTHROPIC_API_KEY` - Anthropic API 密钥
|
||
- [ ] `DEEPSEEK_API_KEY` - DeepSeek API 密钥
|
||
- [ ] `SMTP_*` - 邮件服务配置
|
||
- [ ] `REDIS_URL` - Redis 缓存配置
|
||
|
||
### 安全配置
|
||
- [ ] 使用强密码和密钥
|
||
- [ ] 限制数据库访问权限
|
||
- [ ] 配置防火墙规则
|
||
- [ ] 启用 HTTPS
|
||
- [ ] 定期更新密钥
|
||
|
||
## 🛠️ 故障排除
|
||
|
||
### 常见问题
|
||
|
||
1. **数据库连接失败**
|
||
- 检查数据库服务是否运行
|
||
- 验证连接字符串格式
|
||
- 确认用户名和密码正确
|
||
|
||
2. **API 密钥无效**
|
||
- 检查密钥是否正确复制
|
||
- 确认账户余额充足
|
||
- 验证 API 权限设置
|
||
|
||
3. **环境变量未生效**
|
||
- 重启开发服务器
|
||
- 检查文件路径和格式
|
||
- 确认变量名称正确
|
||
|
||
### 调试命令
|
||
```bash
|
||
# 检查环境变量
|
||
node -e "console.log(process.env.DATABASE_URL)"
|
||
|
||
# 检查端口占用
|
||
lsof -i :3000
|
||
|
||
# 检查数据库状态
|
||
sudo systemctl status mysql
|
||
|
||
# 查看应用日志
|
||
npm run dev 2>&1 | tee app.log
|
||
```
|
||
|
||
## 📚 参考资源
|
||
|
||
- [Next.js 环境变量](https://nextjs.org/docs/basic-features/environment-variables)
|
||
- [MySQL 连接字符串格式](https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-jdbc-url-format.html)
|
||
- [OpenAI API 文档](https://platform.openai.com/docs/api-reference)
|
||
- [Anthropic API 文档](https://docs.anthropic.com/claude/reference)
|
||
- [DeepSeek API 文档](https://platform.deepseek.com/docs)
|
||
|
||
## 🔒 安全建议
|
||
|
||
1. **密钥管理**
|
||
- 使用环境变量存储敏感信息
|
||
- 定期轮换 API 密钥
|
||
- 使用强密码和密钥
|
||
|
||
2. **访问控制**
|
||
- 限制数据库用户权限
|
||
- 配置防火墙规则
|
||
- 启用双因素认证
|
||
|
||
3. **监控和日志**
|
||
- 启用访问日志
|
||
- 监控异常活动
|
||
- 定期安全审计
|
||
|
||
4. **备份和恢复**
|
||
- 定期备份数据库
|
||
- 测试恢复流程
|
||
- 保存配置文件备份
|