Files
backend/docs/deployment-guide.md
T
34047007@qq.com a6cd99a4ca
CI / backend (push) Canceled after 0s
CI / frontend (push) Canceled after 0s
feat: initial commit - oncology literature search platform
OncoLit: a multi-tenant oncology literature search, feed, and
collaboration platform. Built with FastAPI + Vue 3 + PostgreSQL.
Includes PubMed pipeline, drug approvals, AI summaries, and
systematic review tools.
2026-07-27 07:59:18 +08:00

126 lines
3.3 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.
# SciLit 生产部署指南
## 前置条件
- 服务器已安装 Docker 24+ + docker compose plugin
- SSH 可连接到服务器(推荐 `~/.ssh/config`
- 代码仓库可被服务器 `git pull`Gitee/GitHub/自建 Git
## 快速部署
```bash
# 1. 服务器上 clone 项目
ssh root@your-server.com
git clone https://gitee.com/your-org/scilit-oncology.git /root/scilit-oncology
cd /root/scilit-oncology
# 2. 配置环境变量
cp .env.example .env
# 编辑 .env,至少填写以下必填项:
# PG_PASSWORD, REDIS_PASSWORD, JWT_SECRET, PUBLIC_BASE_URL
# 3. 启动
docker compose -f docker-compose.prod.yml --env-file .env up -d
# 检查是否就绪
curl http://localhost:8000/health
curl http://localhost:80
```
## 使用 deploy.sh 自动化部署
```bash
# 1. 配置服务器连接信息
cp deploy.env.example deploy.env
# 编辑 deploy.env,填入 SCILIT_HOST / SCILIT_USER / SCILIT_PATH
# 2. 推送代码并部署
source deploy.env && ./deploy.sh
```
## PostgreSQL 备份与恢复
### 备份
```bash
# 全量备份(压缩)
docker exec -t scilit-oncology_postgres_1 pg_dump -U scilit scilit | gzip > scilit-backup-$(date +%F).sql.gz
# 仅数据(不含索引,恢复更快)
docker exec -t scilit-oncology_postgres_1 pg_dump -U scilit --data-only --exclude-table=alembic_version scilit | gzip > scilit-data-$(date +%F).sql.gz
```
### 恢复
```bash
# 先停止后端服务(避免写入冲突)
docker compose -f docker-compose.prod.yml stop backend worker
# 恢复全量备份
gunzip -c scilit-backup-2026-07-08.sql.gz | docker exec -i scilit-oncology_postgres_1 psql -U scilit scilit
# 重启
docker compose -f docker-compose.prod.yml start backend worker
```
### 定时自动备份(推荐)
在服务器上配置 cron
```cron
# 每天凌晨 3 点备份,保留 30 天
0 3 * * * cd /root/scilit-oncology && docker exec -t $(docker ps -q -f name=postgres) pg_dump -U scilit scilit | gzip > /backups/scilit-$(date +\%F).sql.gz && find /backups -name 'scilit-*.sql.gz' -mtime +30 -delete
```
## 健康检查与运维
```bash
# 查看所有服务状态
docker compose -f docker-compose.prod.yml ps
# 查看日志
docker compose -f docker-compose.prod.yml logs -f backend
docker compose -f docker-compose.prod.yml logs -f worker
# 单独重启某个服务
docker compose -f docker-compose.prod.yml restart backend
# 更新到最新代码
git pull origin main
docker compose -f docker-compose.prod.yml build
docker compose -f docker-compose.prod.yml up -d --no-deps --remove-orphans
```
## HTTPS 配置
docker-compose.prod.yml 中的 Nginx 仅提供 HTTP 服务。建议使用上游反向代理:
### Caddy(推荐,自动 Let's Encrypt
```caddy
your-domain.com {
reverse_proxy 127.0.0.1:80
}
```
### Nginx
```nginx
server {
listen 443 ssl;
server_name your-domain.com;
ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:80;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
```
验证证书可用后更新 `PUBLIC_BASE_URL=https://your-domain.com` 并重启 backend。