mottery/deploy.sh

131 lines
3.2 KiB
Bash

#!/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"