stock-ai-agent/docs/DEPLOYMENT.md
2026-02-03 10:08:15 +08:00

8.3 KiB
Raw Permalink Blame History

部署文档

本文档介绍如何部署A股AI分析Agent系统到生产环境。

部署方式

方式一:本地部署

1. 系统要求

  • 操作系统Linux/macOS/Windows
  • Python 3.9+
  • Redis 6.0+(可选)
  • 内存至少2GB
  • 磁盘至少1GB

2. 安装步骤

# 1. 克隆代码
git clone <repository_url>
cd Stock_Agent

# 2. 创建虚拟环境
python -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate

# 3. 安装依赖
cd backend
pip install -r requirements.txt

# 4. 配置环境变量
cp ../.env.example ../.env
# 编辑.env文件填写必要的配置

# 5. 启动Redis可选
redis-server

# 6. 启动应用
python -m app.main

3. 使用进程管理器

使用Supervisor推荐

创建配置文件 /etc/supervisor/conf.d/stock_agent.conf

[program:stock_agent]
directory=/path/to/Stock_Agent/backend
command=/path/to/venv/bin/python -m app.main
user=your_user
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/var/log/stock_agent.log

启动服务:

sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start stock_agent

使用systemd

创建服务文件 /etc/systemd/system/stock_agent.service

[Unit]
Description=Stock Agent Service
After=network.target

[Service]
Type=simple
User=your_user
WorkingDirectory=/path/to/Stock_Agent/backend
Environment="PATH=/path/to/venv/bin"
ExecStart=/path/to/venv/bin/python -m app.main
Restart=always

[Install]
WantedBy=multi-user.target

启动服务:

sudo systemctl daemon-reload
sudo systemctl enable stock_agent
sudo systemctl start stock_agent

方式二Docker部署

1. 创建Dockerfile

在项目根目录创建 Dockerfile

FROM python:3.9-slim

WORKDIR /app

# 安装依赖
COPY backend/requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# 复制代码
COPY backend/ ./backend/
COPY frontend/ ./frontend/
COPY .env .env

# 暴露端口
EXPOSE 8000

# 启动应用
CMD ["python", "-m", "backend.app.main"]

2. 创建docker-compose.yml

version: '3.8'

services:
  redis:
    image: redis:6-alpine
    ports:
      - "6379:6379"
    volumes:
      - redis_data:/data

  stock_agent:
    build: .
    ports:
      - "8000:8000"
    environment:
      - REDIS_HOST=redis
      - REDIS_PORT=6379
    env_file:
      - .env
    depends_on:
      - redis
    volumes:
      - ./backend:/app/backend
      - ./frontend:/app/frontend
      - ./stock_agent.db:/app/stock_agent.db

volumes:
  redis_data:

3. 启动服务

# 构建镜像
docker-compose build

# 启动服务
docker-compose up -d

# 查看日志
docker-compose logs -f

# 停止服务
docker-compose down

方式三:云服务器部署

阿里云/腾讯云部署

  1. 购买云服务器

    • 配置2核4GB内存
    • 系统Ubuntu 20.04 LTS
  2. 安全组配置

    • 开放8000端口HTTP
    • 开放22端口SSH
  3. 安装环境

# 更新系统
sudo apt update && sudo apt upgrade -y

# 安装Python
sudo apt install python3.9 python3.9-venv python3-pip -y

# 安装Redis
sudo apt install redis-server -y
sudo systemctl enable redis-server
sudo systemctl start redis-server

# 安装Nginx可选用于反向代理
sudo apt install nginx -y
  1. 部署应用

按照"本地部署"步骤进行。

  1. 配置Nginx反向代理

创建配置文件 /etc/nginx/sites-available/stock_agent

server {
    listen 80;
    server_name your_domain.com;

    location / {
        proxy_pass http://127.0.0.1:8000;
        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;
    }

    location /static {
        alias /path/to/Stock_Agent/frontend;
    }
}

启用配置:

sudo ln -s /etc/nginx/sites-available/stock_agent /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
  1. 配置HTTPS推荐

使用Let's Encrypt免费证书

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your_domain.com

生产环境配置

1. 环境变量配置

生产环境的 .env 配置:

# API密钥
TUSHARE_TOKEN=your_production_token
ZHIPUAI_API_KEY=your_production_key

# Redis
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=your_redis_password

# 数据库生产环境建议使用PostgreSQL
DATABASE_URL=postgresql://user:password@localhost/stock_agent

# API设置
API_HOST=0.0.0.0
API_PORT=8000
DEBUG=False

# 安全
SECRET_KEY=your_very_long_random_secret_key_here
RATE_LIMIT=100/minute

# CORS根据实际域名配置
CORS_ORIGINS=https://your_domain.com

2. 数据库迁移到PostgreSQL

安装PostgreSQL

sudo apt install postgresql postgresql-contrib -y

创建数据库:

sudo -u postgres psql
CREATE DATABASE stock_agent;
CREATE USER stock_user WITH PASSWORD 'your_password';
GRANT ALL PRIVILEGES ON DATABASE stock_agent TO stock_user;
\q

更新 .env 中的 DATABASE_URL

3. 性能优化

Redis配置优化

编辑 /etc/redis/redis.conf

maxmemory 256mb
maxmemory-policy allkeys-lru
save 900 1
save 300 10
save 60 10000

应用配置优化

config.py 中调整:

# 增加工作进程数
workers = multiprocessing.cpu_count() * 2 + 1

# 调整超时时间
timeout = 120

4. 监控和日志

日志配置

utils/logger.py 中配置日志文件:

logger = setup_logger(
    name="stock_agent",
    level=logging.INFO,
    log_file="/var/log/stock_agent/app.log"
)

日志轮转

创建 /etc/logrotate.d/stock_agent

/var/log/stock_agent/*.log {
    daily
    rotate 7
    compress
    delaycompress
    notifempty
    create 0640 your_user your_user
    sharedscripts
}

监控工具

推荐使用:

  • Prometheus + Grafana系统监控
  • Sentry错误追踪
  • ELK Stack日志分析

备份和恢复

数据库备份

SQLite备份

# 备份
cp stock_agent.db stock_agent_backup_$(date +%Y%m%d).db

# 恢复
cp stock_agent_backup_20240101.db stock_agent.db

PostgreSQL备份

# 备份
pg_dump -U stock_user stock_agent > backup_$(date +%Y%m%d).sql

# 恢复
psql -U stock_user stock_agent < backup_20240101.sql

Redis备份

# 备份
redis-cli SAVE
cp /var/lib/redis/dump.rdb /backup/redis_$(date +%Y%m%d).rdb

# 恢复
sudo systemctl stop redis
cp /backup/redis_20240101.rdb /var/lib/redis/dump.rdb
sudo systemctl start redis

安全加固

1. 防火墙配置

# 使用ufw
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable

2. 限制API访问

在Nginx中配置限流

limit_req_zone $binary_remote_addr zone=api_limit:10m rate=10r/s;

location /api/ {
    limit_req zone=api_limit burst=20 nodelay;
    proxy_pass http://127.0.0.1:8000;
}

3. 定期更新

# 更新系统
sudo apt update && sudo apt upgrade -y

# 更新Python依赖
pip install --upgrade -r requirements.txt

故障排查

常见问题

  1. 服务无法启动

    • 检查端口是否被占用:lsof -i :8000
    • 查看日志:tail -f /var/log/stock_agent.log
  2. Redis连接失败

    • 检查Redis状态sudo systemctl status redis
    • 测试连接:redis-cli ping
  3. 数据库错误

    • 检查数据库连接:psql -U stock_user -d stock_agent
    • 查看数据库日志:sudo tail -f /var/log/postgresql/postgresql-*.log
  4. API响应慢

    • 检查Redis缓存是否正常
    • 查看系统资源:htop
    • 分析慢查询日志

性能测试

使用Apache Bench进行压力测试

# 安装ab
sudo apt install apache2-utils -y

# 测试API
ab -n 1000 -c 50 http://localhost:8000/api/stock/quote/600519

更新部署

零停机更新

使用蓝绿部署或滚动更新:

# 1. 拉取最新代码
git pull origin main

# 2. 安装新依赖
pip install -r requirements.txt

# 3. 运行数据库迁移(如有)
# python manage.py migrate

# 4. 重启服务
sudo supervisorctl restart stock_agent
# 或
sudo systemctl restart stock_agent

联系支持

如遇到部署问题请提交Issue或联系技术支持。