Files
aiapply/CONFIGURATION.md
2025-09-06 08:28:47 +08:00

321 lines
7.1 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.
# 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. **备份和恢复**
- 定期备份数据库
- 测试恢复流程
- 保存配置文件备份