start_prod.sh 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. #!/bin/bash
  2. # 生产环境启动脚本
  3. # 用于启动验证码发送服务(邮件/短信)
  4. set -e # 遇到错误立即退出
  5. # 获取脚本所在目录
  6. SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
  7. cd "$SCRIPT_DIR"
  8. # 颜色输出
  9. GREEN='\033[0;32m'
  10. YELLOW='\033[1;33m'
  11. RED='\033[0;31m'
  12. BLUE='\033[0;34m'
  13. NC='\033[0m' # No Color
  14. # 服务类型:email 或 sms
  15. SERVICE_TYPE="${1:-all}"
  16. # 检查配置文件
  17. CONF_FILE="$SCRIPT_DIR/send.conf"
  18. if [ ! -f "$CONF_FILE" ]; then
  19. echo -e "${RED}❌ 错误: 未找到配置文件 $CONF_FILE${NC}"
  20. echo -e "${YELLOW}提示: 请确保 send.conf 文件存在于 sendmsg 目录${NC}"
  21. exit 1
  22. fi
  23. echo -e "${GREEN}✅ 找到配置文件: $CONF_FILE${NC}"
  24. # 检查 Python 环境
  25. if ! command -v python3 &> /dev/null; then
  26. echo -e "${RED}❌ 错误: 未找到 python3 命令${NC}"
  27. exit 1
  28. fi
  29. # 检查虚拟环境(可选,如果使用虚拟环境)
  30. if [ -d "venv" ] || [ -d ".venv" ]; then
  31. VENV_DIR=""
  32. if [ -d "venv" ]; then
  33. VENV_DIR="venv"
  34. else
  35. VENV_DIR=".venv"
  36. fi
  37. echo -e "${GREEN}✅ 激活虚拟环境: $VENV_DIR${NC}"
  38. source "$VENV_DIR/bin/activate"
  39. fi
  40. # 检查依赖是否已安装
  41. if ! python3 -c "import sqlalchemy" &> /dev/null; then
  42. echo -e "${YELLOW}⚠️ 警告: 未检测到 SQLAlchemy,请确保已安装依赖${NC}"
  43. echo -e "${YELLOW}提示: 可能需要安装 backend 目录的依赖${NC}"
  44. fi
  45. # 启动服务的函数
  46. start_email_service() {
  47. echo -e "${BLUE}📧 启动邮件验证码发送服务...${NC}"
  48. nohup python3 send_email.py > send_email_nohup.log 2>&1 &
  49. EMAIL_PID=$!
  50. echo $EMAIL_PID > send_email.pid
  51. echo -e "${GREEN}✅ 邮件服务已启动,PID: $EMAIL_PID${NC}"
  52. echo -e "${YELLOW}日志文件: send_email.log, send_email_error.log${NC}"
  53. echo -e "${YELLOW}后台日志: send_email_nohup.log${NC}"
  54. }
  55. start_sms_service() {
  56. echo -e "${BLUE}📱 启动短信验证码发送服务...${NC}"
  57. nohup python3 send_sms_gn.py > send_sms_gn_nohup.log 2>&1 &
  58. SMS_PID=$!
  59. echo $SMS_PID > send_sms_gn.pid
  60. echo -e "${GREEN}✅ 短信服务已启动,PID: $SMS_PID${NC}"
  61. echo -e "${YELLOW}日志文件: send_sms_gn.log, send_sms_gn_error.log${NC}"
  62. echo -e "${YELLOW}后台日志: send_sms_gn_nohup.log${NC}"
  63. }
  64. # 根据参数启动相应服务
  65. case "$SERVICE_TYPE" in
  66. email)
  67. start_email_service
  68. ;;
  69. sms)
  70. start_sms_service
  71. ;;
  72. all)
  73. start_email_service
  74. sleep 1
  75. start_sms_service
  76. echo ""
  77. echo -e "${GREEN}✅ 所有服务已启动${NC}"
  78. echo -e "${YELLOW}查看进程: ps aux | grep -E 'send_email|send_sms_gn'${NC}"
  79. echo -e "${YELLOW}停止服务: ./stop_prod.sh${NC}"
  80. ;;
  81. *)
  82. echo -e "${RED}❌ 错误: 未知的服务类型 '$SERVICE_TYPE'${NC}"
  83. echo ""
  84. echo "用法: $0 [email|sms|all]"
  85. echo ""
  86. echo "参数说明:"
  87. echo " email - 仅启动邮件验证码发送服务"
  88. echo " sms - 仅启动短信验证码发送服务"
  89. echo " all - 启动所有服务(默认)"
  90. exit 1
  91. ;;
  92. esac
  93. echo ""
  94. echo -e "${GREEN}🚀 服务启动完成!${NC}"