paper-burner/workers/academic-search-proxy/DEPLOY.md

293 lines
5.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.

# 部署指南 - Academic Search Proxy
## 前置要求
1. **Cloudflare 账号**
- 注册地址https://dash.cloudflare.com/sign-up
- Workers 免费套餐100,000 请求/天
2. **Wrangler CLI**
```bash
npm install -g wrangler
# 登录
wrangler login
```
## 部署步骤
### 1. 本地测试
```bash
cd workers/academic-search-proxy
# 本地开发模式
npx wrangler dev
# 测试健康检查
curl http://localhost:8787/health
```
### 2. 首次部署
```bash
# 部署到 Cloudflare
npx wrangler deploy
# 输出示例:
# ✨ Published academic-search-proxy
# https://academic-search-proxy.your-subdomain.workers.dev
```
### 3. 配置环境变量
#### 3.1 公开变量wrangler.toml
编辑 `wrangler.toml`
```toml
[vars]
ENABLE_AUTH = "false" # 改为 "true" 启用认证
ALLOWED_ORIGINS = "http://localhost:8080,https://yourdomain.com"
```
重新部署:
```bash
npx wrangler deploy
```
#### 3.2 密钥变量Secrets
```bash
# Semantic Scholar API Key可选
# 获取https://www.semanticscholar.org/product/api
npx wrangler secret put SEMANTIC_SCHOLAR_API_KEY
# 输入你的 API Key 并回车
# PubMed API Key可选
# 获取https://www.ncbi.nlm.nih.gov/account/settings/
npx wrangler secret put PUBMED_API_KEY
# 认证密钥(如果 ENABLE_AUTH = "true"
npx wrangler secret put AUTH_SECRET
# 输入一个强密码,客户端需要使用这个密钥
```
### 4. 自定义域名(可选)
#### 4.1 通过 Cloudflare Dashboard
1. 进入 Dashboardhttps://dash.cloudflare.com
2. 选择你的 Worker`academic-search-proxy`
3. 点击 **Triggers****Custom Domains**
4. 添加域名,如:`academic-search.yourdomain.com`
#### 4.2 通过 wrangler.toml
```toml
[[routes]]
pattern = "academic-search.yourdomain.com/*"
zone_name = "yourdomain.com"
```
```bash
npx wrangler deploy
```
## 客户端配置
### 修改前端代码
找到 `js/processing/reference-doi-resolver.js`,添加代理配置:
```javascript
// 在文件顶部添加
const ACADEMIC_PROXY = {
enabled: true, // 是否启用代理
baseUrl: 'https://academic-search-proxy.your-subdomain.workers.dev',
authKey: null // 如果启用了认证,填入 AUTH_SECRET
};
```
修改各个 Resolver 的请求 URL示例见下方
## 验证部署
### 1. 健康检查
```bash
curl https://your-worker.workers.dev/health
```
预期输出:
```json
{
"status": "ok",
"timestamp": 1234567890,
"services": {
"semanticscholar": { "enabled": true, "hasApiKey": false },
"pubmed": { "enabled": true, "hasApiKey": false },
"crossref": { "enabled": true },
"openalex": { "enabled": true },
"arxiv": { "enabled": true }
},
"authentication": {
"required": false
}
}
```
### 2. 测试各个服务
```bash
# Semantic Scholar
curl "https://your-worker.workers.dev/api/semanticscholar/graph/v1/paper/search?query=test&limit=1"
# PubMed
curl "https://your-worker.workers.dev/api/pubmed/esearch.fcgi?db=pubmed&term=cancer&retmode=json&retmax=1"
# CrossRef
curl "https://your-worker.workers.dev/api/crossref/works?query.title=test&rows=1"
# OpenAlex
curl "https://your-worker.workers.dev/api/openalex/works?search=test"
# arXiv
curl "https://your-worker.workers.dev/api/arxiv/query?search_query=ti:test&max_results=1"
```
## 更新部署
修改代码后重新部署:
```bash
npx wrangler deploy
```
查看部署历史和回滚:
```bash
# 查看部署历史
npx wrangler deployments list
# 回滚到上一个版本
npx wrangler rollback
```
## 监控和日志
### 实时日志
```bash
npx wrangler tail
```
### Cloudflare Dashboard
1. 进入https://dash.cloudflare.com
2. Workers & Pages → `academic-search-proxy`
3. 查看:
- 请求统计
- 错误率
- CPU 时间
- 带宽使用
## 安全配置
### 生产环境建议
1. **启用认证**
```toml
[vars]
ENABLE_AUTH = "true"
```
2. **限制来源**
```toml
[vars]
ALLOWED_ORIGINS = "https://yourdomain.com,https://app.yourdomain.com"
```
3. **设置强密钥**
```bash
# 生成随机密钥
openssl rand -base64 32
# 设置为 AUTH_SECRET
npx wrangler secret put AUTH_SECRET
```
4. **添加速率限制**(需要付费计划)
- 在 Cloudflare Dashboard 设置 Rate Limiting 规则
## 故障排查
### 部署失败
```bash
# 检查配置
npx wrangler whoami
# 重新登录
npx wrangler login
# 清理缓存
rm -rf node_modules .wrangler
npx wrangler deploy
```
### CORS 错误
确认 `ALLOWED_ORIGINS` 包含你的域名:
```toml
[vars]
ALLOWED_ORIGINS = "http://localhost:8080,https://yourdomain.com"
```
### 401 错误
检查认证配置:
```bash
# 查看当前变量
npx wrangler secret list
# 重新设置
npx wrangler secret put AUTH_SECRET
```
### 速率限制
添加 API Keys
```bash
npx wrangler secret put SEMANTIC_SCHOLAR_API_KEY
npx wrangler secret put PUBMED_API_KEY
```
## 成本
### 免费套餐
- **请求数**: 100,000 请求/天
- **CPU 时间**: 10ms/请求免费额度10ms x 100,000 = 1,000秒/天)
- **足够覆盖**: 中小型应用
### 付费套餐($5/月)
- **请求数**: 10,000,000 请求/月
- **CPU 时间**: 30,000,000 CPU 毫秒/月
- **适合**: 大型应用
## 下一步
1. ✅ 部署 Worker
2. ✅ 配置环境变量
3. ✅ 测试所有端点
4. ⏭️ 修改前端代码使用代理(见 README.md
5. ⏭️ 在设置界面添加配置选项
## 参考资料
- [Cloudflare Workers 文档](https://developers.cloudflare.com/workers/)
- [Wrangler CLI 文档](https://developers.cloudflare.com/workers/wrangler/)
- [Workers 定价](https://developers.cloudflare.com/workers/platform/pricing/)