Spaces:
Running
Running
File size: 3,944 Bytes
1ea875f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 |
#!/bin/bash
# ============================================================
# GitHub RAG Agent - 生产环境部署脚本 (2核2G服务器优化版)
# ============================================================
#
# 使用方法:
# chmod +x deploy.sh
# ./deploy.sh
#
# 前置要求:
# - Python 3.10+
# - Docker (用于运行 Qdrant)
#
# ============================================================
set -e
echo "🚀 GitHub RAG Agent 部署脚本"
echo "=========================================="
# 检查是否在项目目录
if [ ! -f "requirements.txt" ]; then
echo "❌ 请在项目根目录运行此脚本"
exit 1
fi
# 检查 .env 文件
if [ ! -f ".env" ]; then
echo "❌ 未找到 .env 文件,请先复制 .env.example 并配置"
echo " cp .env.example .env"
echo " vim .env"
exit 1
fi
# ============================================================
# 1. 启动 Qdrant Server (Docker)
# ============================================================
echo ""
echo "📦 步骤 1: 启动 Qdrant Server..."
# 检查 Docker 是否运行
if ! docker info > /dev/null 2>&1; then
echo "❌ Docker 未运行,请先启动 Docker"
exit 1
fi
# 检查 Qdrant 容器是否已存在
if docker ps -a --format '{{.Names}}' | grep -q "^qdrant-server$"; then
echo " Qdrant 容器已存在,检查状态..."
if docker ps --format '{{.Names}}' | grep -q "^qdrant-server$"; then
echo " ✅ Qdrant 已在运行"
else
echo " 🔄 启动已有的 Qdrant 容器..."
docker start qdrant-server
fi
else
echo " 🆕 创建并启动 Qdrant 容器 (内存限制 512MB)..."
docker run -d \
--name qdrant-server \
--restart unless-stopped \
-p 6333:6333 \
-p 6334:6334 \
-v qdrant_data:/qdrant/storage \
-m 512m \
-e QDRANT__STORAGE__ON_DISK_PAYLOAD=true \
qdrant/qdrant:latest
fi
# 等待 Qdrant 就绪
echo " ⏳ 等待 Qdrant 就绪..."
for i in {1..30}; do
if curl -s http://localhost:6333/health > /dev/null 2>&1; then
echo " ✅ Qdrant 已就绪"
break
fi
sleep 1
done
# ============================================================
# 2. 创建 Python 虚拟环境
# ============================================================
echo ""
echo "🐍 步骤 2: 配置 Python 环境..."
if [ ! -d "venv" ]; then
echo " 创建虚拟环境..."
python3 -m venv venv
fi
echo " 激活虚拟环境..."
source venv/bin/activate
echo " 安装依赖..."
pip install -q --upgrade pip
pip install -q -r requirements.txt
# ============================================================
# 3. 创建必要目录
# ============================================================
echo ""
echo "📁 步骤 3: 创建数据目录..."
mkdir -p data/locks
mkdir -p data/contexts
mkdir -p logs
# ============================================================
# 4. 设置环境变量
# ============================================================
echo ""
echo "⚙️ 步骤 4: 配置环境变量..."
# 从 .env 加载
set -a
source .env
set +a
# 设置 Server 模式
export QDRANT_MODE=server
export QDRANT_URL=http://localhost:6333
export LOCK_BACKEND=file
export LOCK_DIR=data/locks
export GUNICORN_WORKERS=2
echo " QDRANT_MODE=$QDRANT_MODE"
echo " QDRANT_URL=$QDRANT_URL"
echo " GUNICORN_WORKERS=$GUNICORN_WORKERS"
# ============================================================
# 5. 启动应用
# ============================================================
echo ""
echo "🌐 步骤 5: 启动 FastAPI 应用..."
echo "=========================================="
echo " Workers: 2 (优化2核CPU)"
echo " 监听地址: 0.0.0.0:8000"
echo " Qdrant: http://localhost:6333"
echo "=========================================="
echo ""
echo " 按 Ctrl+C 停止服务"
echo ""
# 使用 Gunicorn 启动 (2 Workers)
gunicorn app.main:app -c gunicorn_conf.py
|