wordpress / start-services.sh
CatPtain's picture
Upload 8 files
17bc34e verified
raw
history blame
3.6 kB
#!/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