74 lines
1.8 KiB
Bash
Executable File
74 lines
1.8 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# fumamxCRM 启动脚本(双端口模式)
|
|
# 前端: 10000, 后端: 10001
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
BACKEND_DIR="$SCRIPT_DIR/backend"
|
|
FRONTEND_DIR="$SCRIPT_DIR/frontend"
|
|
LOG_FILE="$SCRIPT_DIR/fumamxCRM.log"
|
|
|
|
# 颜色
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
RED='\033[0;31m'
|
|
NC='\033[0m'
|
|
|
|
echo -e "${GREEN}🚀 启动 fumamxCRM (双端口模式)...${NC}"
|
|
|
|
# 检查并结束现有进程
|
|
echo "📋 检查现有进程..."
|
|
BACKEND_PID=$(lsof -t -i:10001 2>/dev/null || true)
|
|
FRONTEND_PID=$(lsof -t -i:10000 2>/dev/null || true)
|
|
|
|
if [ -n "$BACKEND_PID" ]; then
|
|
echo -e "${YELLOW}⚠️ 结束后端进程: $BACKEND_PID${NC}"
|
|
kill $BACKEND_PID 2>/dev/null || true
|
|
sleep 1
|
|
fi
|
|
|
|
if [ -n "$FRONTEND_PID" ]; then
|
|
echo -e "${YELLOW}⚠️ 结束前端进程: $FRONTEND_PID${NC}"
|
|
kill $FRONTEND_PID 2>/dev/null || true
|
|
sleep 1
|
|
fi
|
|
|
|
# 启动后端
|
|
echo -e "${GREEN}📡 启动后端 API (端口: 10001)...${NC}"
|
|
cd "$BACKEND_DIR"
|
|
nohup python3 -c "
|
|
import uvicorn
|
|
from app import app
|
|
uvicorn.run(app, host='0.0.0.0', port=10001)
|
|
" >> "$LOG_FILE" 2>&1 &
|
|
BACKEND_PID=$!
|
|
echo " 后端 PID: $BACKEND_PID"
|
|
|
|
# 等待后端启动
|
|
sleep 3
|
|
|
|
# 启动前端(用 SPA 服务器支持前端路由)
|
|
echo -e "${GREEN}🌐 启动前端页面 (端口: 10000)...${NC}"
|
|
cd "$SCRIPT_DIR"
|
|
nohup python3 frontend_server.py >> "$LOG_FILE" 2>&1 &
|
|
FRONTEND_PID=$!
|
|
echo " 前端 PID: $FRONTEND_PID"
|
|
|
|
# 保存 PID
|
|
echo "$BACKEND_PID" > "$SCRIPT_DIR/.backend.pid"
|
|
echo "$FRONTEND_PID" > "$SCRIPT_DIR/.frontend.pid"
|
|
|
|
sleep 2
|
|
|
|
echo ""
|
|
echo -e "${GREEN}✓ fumamxCRM 已启动!${NC}"
|
|
echo ""
|
|
echo " 前端页面: http://129.211.173.87:10000"
|
|
echo " 后端 API: http://129.211.173.87:10001"
|
|
echo " 默认账号: admin / abcd1234"
|
|
echo ""
|
|
echo " 📋 日志文件: $LOG_FILE"
|
|
echo " 🛑 停止服务: bash stop.sh"
|