131 lines
3.2 KiB
Bash
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" |