start_all.sh
3.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#!/bin/bash
BASE_DIR=$(cd "$(dirname "$0")"; pwd)
# Load shared configuration
if [ -f "$BASE_DIR/.env.sh" ]; then
source "$BASE_DIR/.env.sh"
else
echo "Error: .env.sh not found in $BASE_DIR"
exit 1
fi
FRONTEND_DIR="$BASE_DIR/z-image-generator"
BACKEND_DIR="$BASE_DIR"
CONSTANTS_FILE="$FRONTEND_DIR/constants.ts"
CONFIG_JS_FILE="$FRONTEND_DIR/public/config.js"
LOGS_DIR="$BASE_DIR/logs"
# Ensure logs directory exists
mkdir -p "$LOGS_DIR"
# Function to rotate logs
rotate_log() {
local log_file="$1"
if [ -f "$log_file" ]; then
local timestamp=$(date +"%Y%m%d_%H%M%S")
local filename=$(basename "$log_file")
local archived_log="$LOGS_DIR/${filename%.*}_$timestamp.log"
echo "Rotating log: $log_file -> $archived_log"
mv "$log_file" "$archived_log"
fi
}
echo "=================================================="
echo "Initializing Front-Backend Z-Image Services"
echo "=================================================="
# 1. Generate Runtime Config (config.js)
echo "Generating runtime configuration in $CONFIG_JS_FILE..."
# Ensure directory exists
mkdir -p "$(dirname "$CONFIG_JS_FILE")"
cat > "$CONFIG_JS_FILE" <<EOF
window.APP_CONFIG = {
Z_IMAGE_DIRECT_BASE_URL: "http://$PUBLIC_IP:$PUBLIC_ZIMAGE_PORT",
TURBO_DIFFUSION_API_URL: "http://$PUBLIC_IP:$PUBLIC_TURBO_PORT",
VIDEO_OSS_BASE_URL: "http://$PUBLIC_IP:$PUBLIC_OSS_PORT",
API_BASE_URL: "http://$PUBLIC_IP:$PUBLIC_BACKEND_PORT"
};
EOF
echo "Configuration generated."
# 2. Start Backend Service
echo "--------------------------------------------------"
echo "Starting Backend Service..."
echo "Host: 0.0.0.0, Port: $LOCAL_BACKEND_PORT"
echo "Public URL: http://$PUBLIC_IP:$PUBLIC_BACKEND_PORT"
cd "$BACKEND_DIR" || exit 1
PID_BACKEND=$(lsof -t -i:$LOCAL_BACKEND_PORT)
if [ -n "$PID_BACKEND" ]; then
echo "Killing existing backend process on port $LOCAL_BACKEND_PORT (PID: $PID_BACKEND)..."
kill -9 "$PID_BACKEND"
fi
rotate_log "$BASE_DIR/backend.log"
# Use venv uvicorn
UVICORN_BIN="$BASE_DIR/venv/bin/uvicorn"
if [ ! -f "$UVICORN_BIN" ]; then
echo "Warning: venv uvicorn not found at $UVICORN_BIN, trying system uvicorn..."
UVICORN_BIN="uvicorn"
fi
nohup "$UVICORN_BIN" backend.main:app --host 0.0.0.0 --port "$LOCAL_BACKEND_PORT" > backend.log 2>&1 &
echo "Backend started with PID: $!"
# 3. Start Frontend Service
echo "--------------------------------------------------"
echo "Starting Frontend Service..."
echo "Host: 0.0.0.0, Port: $LOCAL_FRONTEND_PORT"
echo "Public URL: http://$PUBLIC_IP:$PUBLIC_FRONTEND_PORT"
cd "$FRONTEND_DIR" || exit 1
PID_FRONTEND=$(lsof -t -i:$LOCAL_FRONTEND_PORT)
if [ -n "$PID_FRONTEND" ]; then
echo "Killing existing frontend process on port $LOCAL_FRONTEND_PORT (PID: $PID_FRONTEND)..."
kill -9 "$PID_FRONTEND"
fi
rotate_log "$BASE_DIR/frontend.log"
export VITE_API_BASE_URL="http://$PUBLIC_IP:$PUBLIC_BACKEND_PORT"
nohup npm run dev -- --port "$LOCAL_FRONTEND_PORT" --host 0.0.0.0 > ../frontend.log 2>&1 &
echo "Frontend started with PID: $!"
echo "=================================================="
echo "All services initiated."