#!/bin/bash # Tolan后端服务启动脚本 # 独立启动后端WebSocket服务器 set -e # 颜色定义 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color # 脚本目录和项目根目录 SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(dirname "$SCRIPT_DIR")" BACKEND_DIR="$PROJECT_ROOT/backend" echo -e "${BLUE}Tolan后端服务启动脚本${NC}" echo "===============================" # 检查后端目录是否存在 if [ ! -d "$BACKEND_DIR" ]; then echo -e "${RED}错误: 后端目录不存在: $BACKEND_DIR${NC}" exit 1 fi # 检查run.py文件是否存在 if [ ! -f "$BACKEND_DIR/run.py" ]; then echo -e "${RED}错误: 启动文件不存在: $BACKEND_DIR/run.py${NC}" exit 1 fi # 检查SSL证书文件 SSL_DIR="$PROJECT_ROOT/ssl" SSL_CERT_FILE="$SSL_DIR/tolan.crt" SSL_KEY_FILE="$SSL_DIR/tolan.key" if [ ! -f "$SSL_CERT_FILE" ]; then echo -e "${YELLOW}警告: SSL证书文件不存在: $SSL_CERT_FILE${NC}" echo -e "${YELLOW}建议运行 scripts/generate-ssl.sh 生成SSL证书${NC}" fi if [ ! -f "$SSL_KEY_FILE" ]; then echo -e "${YELLOW}警告: SSL私钥文件不存在: $SSL_KEY_FILE${NC}" echo -e "${YELLOW}建议运行 scripts/generate-ssl.sh 生成SSL证书${NC}" fi # 检查Python环境 echo -e "${BLUE}检查Python环境...${NC}" if ! command -v python &> /dev/null; then echo -e "${RED}错误: 未找到Python${NC}" exit 1 fi echo "Python版本: $(python --version)" # 切换到后端目录 echo -e "${BLUE}切换到后端目录: $BACKEND_DIR${NC}" cd "$BACKEND_DIR" # 设置环境变量 echo -e "${BLUE}设置环境变量...${NC}" export WS_HOST="0.0.0.0" export WS_PORT="8765" export WSS_PORT="8766" export SSL_ENABLED="true" export SSL_CERT_FILE="$SSL_CERT_FILE" export SSL_KEY_FILE="$SSL_KEY_FILE" export LOG_LEVEL="DEBUG" # 显示配置信息 echo -e "${GREEN}服务配置信息:${NC}" echo " WebSocket主机: $WS_HOST" echo " WebSocket端口: $WS_PORT" echo " WebSocket SSL端口: $WSS_PORT" echo " SSL启用: $SSL_ENABLED" echo " SSL证书文件: $SSL_CERT_FILE" echo " SSL私钥文件: $SSL_KEY_FILE" echo " 日志级别: $LOG_LEVEL" echo "" # 启动后端服务 echo -e "${GREEN}启动后端WebSocket服务器...${NC}" echo -e "${YELLOW}按 Ctrl+C 停止服务${NC}" echo "" python run.py