| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- #!/bin/bash
- # 后端服务启动脚本
- set -e
- RED='\033[0;31m'
- GREEN='\033[0;32m'
- YELLOW='\033[1;33m'
- NC='\033[0m'
- echo -e "${GREEN}=== 启动后端服务 ===${NC}"
- # 加载环境变量
- if [ -f "../.env.local" ]; then
- echo -e "${YELLOW}加载配置...${NC}"
- export $(cat ../.env.local | grep -v '^#' | xargs)
- fi
- # 数据库配置
- DB_HOST=${DB_HOST:-127.0.0.1}
- DB_PORT=${DB_PORT:-3306}
- DB_USER=${DB_USER:-root}
- DB_PASSWORD=${DB_PASSWORD:-}
- # 构建数据库连接字符串
- if [ -z "$DB_PASSWORD" ]; then
- SQL_CONNECTION="mysql+pymysql://${DB_USER}@${DB_HOST}:${DB_PORT}/yunioncloud?charset=utf8mb4"
- else
- SQL_CONNECTION="mysql+pymysql://${DB_USER}:${DB_PASSWORD}@${DB_HOST}:${DB_PORT}/yunioncloud?charset=utf8mb4"
- fi
- echo "数据库连接: ${DB_USER}@${DB_HOST}:${DB_PORT}/yunioncloud"
- # 创建日志目录
- mkdir -p logs
- # 检查二进制文件是否存在
- check_binary() {
- local service=$1
- if [ ! -f "_output/bin/${service}" ]; then
- echo -e "${YELLOW}${service} 未编译,开始编译...${NC}"
- # 忽略 git 错误,只关注编译结果
- make cmd/${service} 2>&1 | grep -v "fatal: " | grep -v "error: malformed" || true
- fi
- }
- # 启动服务
- start_service() {
- local service=$1
- local port=$2
- local extra_args=$3
-
- echo -e "${YELLOW}启动 ${service} (端口 ${port})...${NC}"
-
- ./_output/bin/${service} \
- --config /dev/null \
- --sql-connection "$SQL_CONNECTION" \
- --port ${port} \
- --enable-ssl=false \
- ${extra_args} \
- > logs/${service}.log 2>&1 &
-
- echo $! > logs/${service}.pid
- echo -e "${GREEN}✓ ${service} 已启动 (PID: $!)${NC}"
- }
- # 停止已运行的服务
- stop_existing() {
- echo -e "${YELLOW}检查并停止已运行的服务...${NC}"
- for service in keystone region glance apigateway; do
- if [ -f "logs/${service}.pid" ]; then
- pid=$(cat logs/${service}.pid)
- if ps -p $pid > /dev/null 2>&1; then
- echo "停止 ${service} (PID: ${pid})"
- kill $pid 2>/dev/null || true
- fi
- rm logs/${service}.pid
- fi
- done
- sleep 1
- }
- # 主流程
- main() {
- stop_existing
-
- # 检查并编译服务
- check_binary keystone
- check_binary region
- check_binary glance
- check_binary apigateway
-
- # 启动服务
- start_service keystone 35357 ""
- sleep 2
-
- start_service region 30889 "--auth-url http://127.0.0.1:35357/v3"
- sleep 2
-
- start_service glance 9292 "--auth-url http://127.0.0.1:35357/v3"
- sleep 2
-
- start_service apigateway 3000 "--auth-url http://127.0.0.1:35357/v3"
- sleep 1
-
- echo ""
- echo -e "${GREEN}=== 后端服务启动成功 ===${NC}"
- echo ""
- echo "服务地址:"
- echo " Keystone (认证): http://localhost:35357"
- echo " Region (计算): http://localhost:30889"
- echo " Glance (镜像): http://localhost:9292"
- echo " APIGateway: http://localhost:3000"
- echo ""
- echo "日志目录: backend/logs/"
- echo "查看日志: tail -f logs/*.log"
- echo "停止服务: ./stop-backend.sh"
- echo ""
- }
- main
|