|
#!/bin/bash |
|
|
|
|
|
|
|
|
|
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 |
|
|
|
|
|
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 |
|
|
|
|
|
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 |
|
|
|
|
|
echo "启动 cron 服务..." |
|
service cron start |
|
|
|
|
|
echo "启动 Apache 服务..." |
|
apache2ctl start |
|
|
|
|
|
sleep 3 |
|
|
|
|
|
if pgrep apache2 > /dev/null; then |
|
echo "Apache 启动成功" |
|
else |
|
echo "Apache 启动失败" |
|
exit 1 |
|
fi |
|
|
|
|
|
echo "启动 Python 应用..." |
|
cd /app |
|
export FLASK_ENV=production |
|
export FLASK_APP=app.py |
|
|
|
|
|
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 |