File size: 3,603 Bytes
17bc34e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#!/bin/bash

# Hugging Face Spaces WordPress 服务启动脚本
# 管理 WordPress、Python 应用和清理服务

set -e

echo "=== 启动 WordPress for Hugging Face Spaces ==="

# 创建必要的目录
echo "创建必要的目录..."
mkdir -p /var/www/html/wp-content/database
mkdir -p /var/www/html/wp-content/uploads
mkdir -p /var/www/html/wp-content/cache
mkdir -p /var/log/wordpress
mkdir -p /var/log/apache2

# 设置权限
echo "设置文件权限..."
chown -R www-data:www-data /var/www/html
chmod -R 755 /var/www/html
chown -R www-data:www-data /var/www/html/wp-content/database
chmod -R 755 /var/www/html/wp-content/database

# 检查并安装 SQLite 插件
echo "检查 SQLite 插件..."
if [ ! -d "/var/www/html/wp-content/plugins/sqlite-database-integration" ]; then
    echo "安装 SQLite 数据库集成插件..."
    cd /tmp
    wget -q https://downloads.wordpress.org/plugin/sqlite-database-integration.2.1.5.zip
    unzip -q sqlite-database-integration.2.1.5.zip
    mv sqlite-database-integration /var/www/html/wp-content/plugins/
    chown -R www-data:www-data /var/www/html/wp-content/plugins/sqlite-database-integration
    rm sqlite-database-integration.2.1.5.zip
    echo "SQLite 插件安装完成"
else
    echo "SQLite 插件已存在"
fi

# 复制 wp-config.php 如果不存在
if [ ! -f "/var/www/html/wp-config.php" ]; then
    echo "复制 wp-config.php..."
    cp /usr/src/wordpress/wp-config.php /var/www/html/
    chown www-data:www-data /var/www/html/wp-config.php
fi

# 启动 cron 服务
echo "启动 cron 服务..."
service cron start

# 启动 Apache 在后台
echo "启动 Apache 服务..."
apache2ctl start

# 等待 Apache 启动
sleep 3

# 检查 Apache 状态
if pgrep apache2 > /dev/null; then
    echo "Apache 启动成功"
else
    echo "Apache 启动失败"
    exit 1
fi

# 启动 Python 应用
echo "启动 Python 应用..."
cd /app
export FLASK_ENV=production
export FLASK_APP=app.py

# 在后台启动 Python 应用
python3 app.py &
PYTHON_PID=$!

echo "Python 应用启动,PID: $PYTHON_PID"

# 等待服务启动
sleep 5

# 健康检查
echo "执行健康检查..."
for i in {1..10}; do
    if curl -f -s http://localhost:7860/health > /dev/null; then
        echo "健康检查通过"
        break
    else
        echo "等待服务启动... ($i/10)"
        sleep 2
    fi
    
    if [ $i -eq 10 ]; then
        echo "健康检查失败,服务可能未正常启动"
    fi
done

# 显示服务状态
echo "=== 服务状态 ==="
echo "Apache: $(pgrep apache2 > /dev/null && echo '运行中' || echo '已停止')"
echo "Python App: $(kill -0 $PYTHON_PID 2>/dev/null && echo '运行中' || echo '已停止')"
echo "Cron: $(pgrep cron > /dev/null && echo '运行中' || echo '已停止')"

# 显示访问信息
echo "=== 访问信息 ==="
echo "WordPress: http://localhost:7860/wordpress"
echo "应用首页: http://localhost:7860/"
echo "健康检查: http://localhost:7860/health"
echo "清理状态: http://localhost:7860/api/cleanup/status"

echo "=== 启动完成 ==="

# 保持容器运行
echo "保持服务运行..."
while true; do
    # 检查关键服务是否还在运行
    if ! pgrep apache2 > /dev/null; then
        echo "Apache 服务已停止,重新启动..."
        apache2ctl start
    fi
    
    if ! kill -0 $PYTHON_PID 2>/dev/null; then
        echo "Python 应用已停止,重新启动..."
        cd /app
        python3 app.py &
        PYTHON_PID=$!
    fi
    
    if ! pgrep cron > /dev/null; then
        echo "Cron 服务已停止,重新启动..."
        service cron start
    fi
    
    sleep 30
done