File size: 2,361 Bytes
244baf9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
#!/bin/bash
# /opt/sd-launch.sh

# 复制你手动运行时的完整环境变量
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
export LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/opt/lib:/soc/lib:$LD_LIBRARY_PATH
export PYTHONPATH=$PYTHONPATH
export DISPLAY=:0

# 等待系统完全启动
sleep 15

# 日志目录
LOG_DIR="/var/log/sd-launch"
mkdir -p "$LOG_DIR"

echo "Starting SD services at $(date)" >> "$LOG_DIR/startup.log"

# 1. 启动后端
cd /root/Desktop/SD1.5-AX650-Dark_Sushi_Mix
echo "Starting backend..." >> "$LOG_DIR/startup.log"

# 直接用 uvicorn 而不是 nohup,让脚本保持运行
uvicorn api_10steps:app --host 0.0.0.0 --port 7888 > "$LOG_DIR/backend.log" 2>&1 &
BACKEND_PID=$!
echo $BACKEND_PID > "$LOG_DIR/backend.pid"

# 等待后端启动
sleep 10
if ! kill -0 $BACKEND_PID 2>/dev/null; then
    echo "Backend failed to start" >> "$LOG_DIR/startup.log"
    exit 1
fi

# 2. 启动前端
cd /root/Desktop/SD1.5-AX650-Dark_Sushi_Mix/client
echo "Starting frontend..." >> "$LOG_DIR/startup.log"

python3 app.py > "$LOG_DIR/frontend.log" 2>&1 &
FRONTEND_PID=$!
echo $FRONTEND_PID > "$LOG_DIR/frontend.pid"

# 3. 等待前端端口就绪
echo "Waiting for frontend..." >> "$LOG_DIR/startup.log"
for i in {1..30}; do
    if curl -s http://localhost:5000/ >/dev/null 2>&1; then
        break
    fi
    sleep 2
done

# 4. 打开浏览器并全屏
echo "Opening browser..." >> "$LOG_DIR/startup.log"

# 等待图形界面完全就绪
sleep 5

# 确保 DISPLAY 正确设置
export DISPLAY=:0
echo "DISPLAY=$DISPLAY" >> "$LOG_DIR/startup.log"
echo "Current user: $(whoami)" >> "$LOG_DIR/startup.log"

# 直接使用 Firefox kiosk 模式
if command -v firefox >/dev/null 2>&1; then
    echo "Starting Firefox in kiosk mode..." >> "$LOG_DIR/startup.log"
    firefox --kiosk http://localhost:5000/ >> "$LOG_DIR/browser.log" 2>&1 &
    BROWSER_PID=$!
    echo "Firefox started with PID: $BROWSER_PID" >> "$LOG_DIR/startup.log"
    
    # 验证浏览器进程是否启动成功
    sleep 3
    if kill -0 $BROWSER_PID 2>/dev/null; then
        echo "Firefox process confirmed running" >> "$LOG_DIR/startup.log"
    else
        echo "Firefox process failed to start" >> "$LOG_DIR/startup.log"
        cat "$LOG_DIR/browser.log" >> "$LOG_DIR/startup.log"
    fi
else
    echo "Firefox not found" >> "$LOG_DIR/startup.log"
fi