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

5.9 KiB
Raw Blame History

部署指南 - Academic Search Proxy

前置要求

  1. Cloudflare 账号

  2. Wrangler CLI

    npm install -g wrangler
    
    # 登录
    wrangler login
    

部署步骤

1. 本地测试

cd workers/academic-search-proxy

# 本地开发模式
npx wrangler dev

# 测试健康检查
curl http://localhost:8787/health

2. 首次部署

# 部署到 Cloudflare
npx wrangler deploy

# 输出示例:
# ✨ Published academic-search-proxy
# https://academic-search-proxy.your-subdomain.workers.dev

3. 配置环境变量

3.1 公开变量wrangler.toml

编辑 wrangler.toml

[vars]
ENABLE_AUTH = "false"  # 改为 "true" 启用认证
ALLOWED_ORIGINS = "http://localhost:8080,https://yourdomain.com"

重新部署:

npx wrangler deploy

3.2 密钥变量Secrets

# 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. 选择你的 Workeracademic-search-proxy
  3. 点击 TriggersCustom Domains
  4. 添加域名,如:academic-search.yourdomain.com

4.2 通过 wrangler.toml

[[routes]]
pattern = "academic-search.yourdomain.com/*"
zone_name = "yourdomain.com"
npx wrangler deploy

客户端配置

修改前端代码

找到 js/processing/reference-doi-resolver.js,添加代理配置:

// 在文件顶部添加
const ACADEMIC_PROXY = {
    enabled: true,  // 是否启用代理
    baseUrl: 'https://academic-search-proxy.your-subdomain.workers.dev',
    authKey: null  // 如果启用了认证,填入 AUTH_SECRET
};

修改各个 Resolver 的请求 URL示例见下方

验证部署

1. 健康检查

curl https://your-worker.workers.dev/health

预期输出:

{
  "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. 测试各个服务

# 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"

更新部署

修改代码后重新部署:

npx wrangler deploy

查看部署历史和回滚:

# 查看部署历史
npx wrangler deployments list

# 回滚到上一个版本
npx wrangler rollback

监控和日志

实时日志

npx wrangler tail

Cloudflare Dashboard

  1. 进入:https://dash.cloudflare.com
  2. Workers & Pages → academic-search-proxy
  3. 查看:
    • 请求统计
    • 错误率
    • CPU 时间
    • 带宽使用

安全配置

生产环境建议

  1. 启用认证

    [vars]
    ENABLE_AUTH = "true"
    
  2. 限制来源

    [vars]
    ALLOWED_ORIGINS = "https://yourdomain.com,https://app.yourdomain.com"
    
  3. 设置强密钥

    # 生成随机密钥
    openssl rand -base64 32
    
    # 设置为 AUTH_SECRET
    npx wrangler secret put AUTH_SECRET
    
  4. 添加速率限制(需要付费计划)

    • 在 Cloudflare Dashboard 设置 Rate Limiting 规则

故障排查

部署失败

# 检查配置
npx wrangler whoami

# 重新登录
npx wrangler login

# 清理缓存
rm -rf node_modules .wrangler
npx wrangler deploy

CORS 错误

确认 ALLOWED_ORIGINS 包含你的域名:

[vars]
ALLOWED_ORIGINS = "http://localhost:8080,https://yourdomain.com"

401 错误

检查认证配置:

# 查看当前变量
npx wrangler secret list

# 重新设置
npx wrangler secret put AUTH_SECRET

速率限制

添加 API Keys

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. ⏭️ 在设置界面添加配置选项

参考资料