# 部署文档 本文档介绍如何部署A股AI分析Agent系统到生产环境。 ## 部署方式 ### 方式一:本地部署 #### 1. 系统要求 - 操作系统:Linux/macOS/Windows - Python 3.9+ - Redis 6.0+(可选) - 内存:至少2GB - 磁盘:至少1GB #### 2. 安装步骤 ```bash # 1. 克隆代码 git clone 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`: ```ini [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 ``` 启动服务: ```bash sudo supervisorctl reread sudo supervisorctl update sudo supervisorctl start stock_agent ``` **使用systemd** 创建服务文件 `/etc/systemd/system/stock_agent.service`: ```ini [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 ``` 启动服务: ```bash sudo systemctl daemon-reload sudo systemctl enable stock_agent sudo systemctl start stock_agent ``` ### 方式二:Docker部署 #### 1. 创建Dockerfile 在项目根目录创建 `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 ```yaml 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. 启动服务 ```bash # 构建镜像 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. **安装环境** ```bash # 更新系统 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 ``` 4. **部署应用** 按照"本地部署"步骤进行。 5. **配置Nginx反向代理** 创建配置文件 `/etc/nginx/sites-available/stock_agent`: ```nginx 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; } } ``` 启用配置: ```bash sudo ln -s /etc/nginx/sites-available/stock_agent /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginx ``` 6. **配置HTTPS(推荐)** 使用Let's Encrypt免费证书: ```bash sudo apt install certbot python3-certbot-nginx -y sudo certbot --nginx -d your_domain.com ``` ## 生产环境配置 ### 1. 环境变量配置 生产环境的 `.env` 配置: ```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: ```bash sudo apt install postgresql postgresql-contrib -y ``` 创建数据库: ```sql 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`: ```conf maxmemory 256mb maxmemory-policy allkeys-lru save 900 1 save 300 10 save 60 10000 ``` **应用配置优化** 在 `config.py` 中调整: ```python # 增加工作进程数 workers = multiprocessing.cpu_count() * 2 + 1 # 调整超时时间 timeout = 120 ``` ### 4. 监控和日志 **日志配置** 在 `utils/logger.py` 中配置日志文件: ```python 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备份** ```bash # 备份 cp stock_agent.db stock_agent_backup_$(date +%Y%m%d).db # 恢复 cp stock_agent_backup_20240101.db stock_agent.db ``` **PostgreSQL备份** ```bash # 备份 pg_dump -U stock_user stock_agent > backup_$(date +%Y%m%d).sql # 恢复 psql -U stock_user stock_agent < backup_20240101.sql ``` ### Redis备份 ```bash # 备份 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. 防火墙配置 ```bash # 使用ufw sudo ufw allow 22/tcp sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw enable ``` ### 2. 限制API访问 在Nginx中配置限流: ```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. 定期更新 ```bash # 更新系统 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进行压力测试: ```bash # 安装ab sudo apt install apache2-utils -y # 测试API ab -n 1000 -c 50 http://localhost:8000/api/stock/quote/600519 ``` ## 更新部署 ### 零停机更新 使用蓝绿部署或滚动更新: ```bash # 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或联系技术支持。