#!/bin/bash echo "🚀 开始部署彩票数据分析系统..." # 检查是否在项目根目录 if [ ! -f "README.md" ]; then echo "❌ 错误: 请在项目根目录运行此脚本" exit 1 fi # 1. 构建前端 echo "📦 构建前端..." cd frontend # 检查node_modules if [ ! -d "node_modules" ]; then echo "📦 安装前端依赖..." npm install fi # 构建生产版本 echo "🔨 构建生产版本..." npm run build # 检查构建是否成功 if [ ! -d "dist" ]; then echo "❌ 前端构建失败" exit 1 fi echo "✅ 前端构建成功" # 2. 部署前端文件 echo "📁 部署前端文件..." sudo mkdir -p /var/www/html sudo cp -r dist/* /var/www/html/ sudo chown -R www-data:www-data /var/www/html sudo chmod -R 755 /var/www/html echo "✅ 前端文件部署完成" # 3. 配置nginx echo "⚙️ 配置nginx..." cd .. # 备份原配置 if [ -f "/etc/nginx/sites-available/cp.mzh.one" ]; then sudo cp /etc/nginx/sites-available/cp.mzh.one /etc/nginx/sites-available/cp.mzh.one.backup fi # 复制新配置 sudo cp nginx.conf /etc/nginx/sites-available/cp.mzh.one # 启用站点 sudo ln -sf /etc/nginx/sites-available/cp.mzh.one /etc/nginx/sites-enabled/ # 测试nginx配置 echo "🔍 测试nginx配置..." sudo nginx -t if [ $? -eq 0 ]; then echo "✅ nginx配置正确" sudo systemctl reload nginx echo "✅ nginx重新加载完成" else echo "❌ nginx配置错误" exit 1 fi # 4. 启动后端服务 echo "🚀 启动后端服务..." # 检查后端依赖 cd backend if [ ! -d "venv" ]; then echo "📦 创建Python虚拟环境..." python3 -m venv venv fi # 激活虚拟环境 source venv/bin/activate # 安装依赖 echo "📦 安装后端依赖..." pip install -r requirements.txt # 启动后端服务 echo "🚀 启动后端服务..." nohup uvicorn app.main:app --host 0.0.0.0 --port 8000 > backend.log 2>&1 & # 等待服务启动 echo "⏳ 等待后端服务启动..." sleep 5 # 检查服务状态 if curl -f http://localhost:8000/health > /dev/null 2>&1; then echo "✅ 后端服务启动成功" else echo "❌ 后端服务启动失败" echo "📋 查看日志: tail -f backend/backend.log" exit 1 fi # 5. 启动定时任务(可选) read -p "🤔 是否启动定时任务调度器?(y/n): " -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]]; then echo "⏰ 启动定时任务调度器..." cd .. nohup python3 scheduler.py > scheduler.log 2>&1 & echo "✅ 定时任务调度器启动成功" fi echo "" echo "🎉 部署完成!" echo "" echo "📋 访问地址:" echo " - 前端: https://cp.mzh.one" echo " - API文档: https://cp.mzh.one/api/docs" echo " - 健康检查: https://cp.mzh.one/health" echo "" echo "📋 服务状态:" echo " - 后端服务: ps aux | grep uvicorn" echo " - nginx服务: sudo systemctl status nginx" echo " - 后端日志: tail -f backend/backend.log" echo " - 定时任务日志: tail -f scheduler.log" echo "" echo "🔧 常用命令:" echo " - 重启nginx: sudo systemctl reload nginx" echo " - 重启后端: pkill -f uvicorn && cd backend && nohup uvicorn app.main:app --host 0.0.0.0 --port 8000 > backend.log 2>&1 &" echo " - 查看错误日志: sudo tail -f /var/log/nginx/error.log"