mottery/service_manager.sh

131 lines
3.3 KiB
Bash

#!/bin/bash
# 服务管理脚本
SERVICE_NAME="lottery-system"
case "$1" in
start)
echo "🚀 启动彩票数据分析系统..."
# 启动后端
cd backend
source venv/bin/activate
nohup uvicorn app.main:app --host 0.0.0.0 --port 8000 > backend.log 2>&1 &
echo $! > backend.pid
cd ..
# 启动定时任务
nohup python3 scheduler.py > scheduler.log 2>&1 &
echo $! > scheduler.pid
echo "✅ 服务启动完成"
;;
stop)
echo "🛑 停止彩票数据分析系统..."
# 停止后端
if [ -f "backend/backend.pid" ]; then
kill $(cat backend/backend.pid) 2>/dev/null
rm backend/backend.pid
fi
# 停止定时任务
if [ -f "scheduler.pid" ]; then
kill $(cat scheduler.pid) 2>/dev/null
rm scheduler.pid
fi
# 强制停止所有相关进程
pkill -f uvicorn
pkill -f scheduler.py
echo "✅ 服务停止完成"
;;
restart)
echo "🔄 重启彩票数据分析系统..."
$0 stop
sleep 2
$0 start
;;
status)
echo "📊 服务状态检查..."
# 检查后端
if curl -f http://localhost:8000/health > /dev/null 2>&1; then
echo "✅ 后端服务: 运行中"
else
echo "❌ 后端服务: 未运行"
fi
# 检查nginx
if curl -f http://localhost/ > /dev/null 2>&1; then
echo "✅ nginx服务: 运行中"
else
echo "❌ nginx服务: 未运行"
fi
# 检查定时任务
if pgrep -f scheduler.py > /dev/null; then
echo "✅ 定时任务: 运行中"
else
echo "❌ 定时任务: 未运行"
fi
# 显示进程信息
echo ""
echo "📋 进程信息:"
ps aux | grep -E "(uvicorn|scheduler)" | grep -v grep
;;
logs)
echo "📋 查看日志..."
case "$2" in
backend)
tail -f backend/backend.log
;;
scheduler)
tail -f scheduler.log
;;
nginx)
sudo tail -f /var/log/nginx/error.log
;;
*)
echo "用法: $0 logs {backend|scheduler|nginx}"
;;
esac
;;
deploy)
echo "🚀 部署系统..."
# 构建前端
cd frontend
npm run build
cd ..
# 部署前端文件
sudo cp -r frontend/dist/* /var/www/html/
sudo chown -R www-data:www-data /var/www/html
# 重启服务
$0 restart
echo "✅ 部署完成"
;;
*)
echo "用法: $0 {start|stop|restart|status|logs|deploy}"
echo ""
echo "命令说明:"
echo " start - 启动所有服务"
echo " stop - 停止所有服务"
echo " restart - 重启所有服务"
echo " status - 查看服务状态"
echo " logs - 查看日志 (用法: $0 logs {backend|scheduler|nginx})"
echo " deploy - 部署系统"
exit 1
;;
esac