wordpress / start-hf.sh
CatPtain's picture
Upload 9 files
efc9636 verified
raw
history blame
6.82 kB
#!/bin/bash
set -e
echo "Starting WordPress for Hugging Face Spaces..."
# Ensure directories exist (they should already be created in Dockerfile)
test -d /var/www/html/wp-content/database || mkdir -p /var/www/html/wp-content/database
test -d /var/www/html/wp-content/uploads || mkdir -p /var/www/html/wp-content/uploads
test -d /var/www/html/wp-content/cache || mkdir -p /var/www/html/wp-content/cache
# Ensure proper permissions (fallback)
chmod 777 /var/www/html 2>/dev/null || true
chmod 777 /var/www/html/wp-content/uploads 2>/dev/null || true
chmod 777 /var/www/html/wp-content/database 2>/dev/null || true
chmod 777 /var/www/html/wp-content/cache 2>/dev/null || true
# Initialize SQLite database if it doesn't exist
if [ ! -f "/var/www/html/wp-content/database/wordpress.db" ]; then
echo "Initializing WordPress database..."
# Create empty SQLite database with proper permissions
touch /var/www/html/wp-content/database/wordpress.db
chmod 666 /var/www/html/wp-content/database/wordpress.db 2>/dev/null || true
# Initialize WordPress tables - let WordPress handle it on first visit
echo "Database will be initialized on first visit"
fi
# Create a simple health check file
echo "Creating health check file..."
cat > /var/www/html/health.html << 'EOF' || { echo "Warning: Could not create health.html"; touch /var/www/html/health.html 2>/dev/null || true; }
<!DOCTYPE html>
<html>
<head>
<title>WordPress on Hugging Face Spaces</title>
<meta charset="utf-8">
<style>
body { font-family: Arial, sans-serif; margin: 40px; background: #f1f1f1; }
.container { background: white; padding: 20px; border-radius: 8px; box-shadow: 0 2px 4px rgba(0,0,0,0.1); }
.status { color: #46b450; font-weight: bold; }
.info { background: #e7f3ff; padding: 15px; border-radius: 4px; margin: 20px 0; }
</style>
</head>
<body>
<div class="container">
<h1>πŸš€ WordPress on Hugging Face Spaces</h1>
<p class="status">βœ… Service is running</p>
<div class="info">
<h3>πŸ“‹ Setup Information:</h3>
<ul>
<li><strong>WordPress Version:</strong> 6.8.1</li>
<li><strong>PHP Version:</strong> 8.3</li>
<li><strong>Database:</strong> SQLite</li>
<li><strong>Web Server:</strong> Apache</li>
</ul>
</div>
<p><a href="/" style="background: #0073aa; color: white; padding: 10px 20px; text-decoration: none; border-radius: 4px;">🏠 Go to WordPress</a></p>
<p><a href="/wp-admin/" style="background: #46b450; color: white; padding: 10px 20px; text-decoration: none; border-radius: 4px;">βš™οΈ Admin Panel</a></p>
</div>
</body>
</html>
EOF
# Create demo content script
echo "Creating demo setup script..."
cat > /var/www/html/wp-content/demo-setup.php << 'EOF' || { echo "Warning: Could not create demo-setup.php"; }
<?php
/**
* Demo content setup for WordPress on HF Spaces
*/
if (!defined('ABSPATH')) {
define('ABSPATH', dirname(__FILE__) . '/../');
}
require_once ABSPATH . 'wp-config.php';
require_once ABSPATH . 'wp-includes/wp-db.php';
require_once ABSPATH . 'wp-admin/includes/upgrade.php';
// Create demo user if not exists
if (!username_exists('demo') && !email_exists('[email protected]')) {
$user_id = wp_create_user('demo', 'demo123', '[email protected]');
if (!is_wp_error($user_id)) {
$user = new WP_User($user_id);
$user->set_role('administrator');
echo "Demo user created: demo/demo123\n";
}
}
// Create demo post
$demo_post = array(
'post_title' => 'Welcome to WordPress on Hugging Face Spaces!',
'post_content' => '<h2>πŸŽ‰ Congratulations!</h2><p>You have successfully deployed WordPress on Hugging Face Spaces. This is a demo installation running on:</p><ul><li><strong>WordPress 6.8.1</strong></li><li><strong>PHP 8.3</strong></li><li><strong>SQLite Database</strong></li><li><strong>Apache Web Server</strong></li></ul><h3>πŸš€ What you can do:</h3><ul><li>Create and edit posts</li><li>Install themes and plugins</li><li>Customize your site</li><li>Explore WordPress features</li></ul><p><em>Note: This is a demo environment. Data may not persist between deployments.</em></p>',
'post_status' => 'publish',
'post_author' => 1,
'post_type' => 'post'
);
if (!get_page_by_title('Welcome to WordPress on Hugging Face Spaces!')) {
wp_insert_post($demo_post);
echo "Demo post created\n";
}
echo "Demo setup completed\n";
?>
EOF
# Set up WordPress if not already configured
if [ ! -f "/var/www/html/wp-config.php" ]; then
echo "WordPress configuration not found, copying HF Spaces config..."
cp /var/www/html/wp-config-hf.php /var/www/html/wp-config.php
fi
# Verify SQLite database integration
echo "Verifying SQLite database integration..."
if [ -f "/var/www/html/wp-content/db.php" ]; then
echo "βœ“ SQLite db.php found in wp-content"
else
echo "βœ— SQLite db.php not found, copying..."
cp /var/www/html/db.php /var/www/html/wp-content/db.php 2>/dev/null || true
chmod 644 /var/www/html/wp-content/db.php 2>/dev/null || true
fi
# Verify WordPress configuration
echo "Verifying WordPress configuration..."
if [ -f "/var/www/html/wp-config.php" ]; then
echo "βœ“ wp-config.php found"
else
echo "βœ— wp-config.php not found"
fi
# Test PHP syntax
echo "Testing PHP configuration..."
php -l /var/www/html/wp-config.php || echo "Warning: wp-config.php has syntax errors"
php -l /var/www/html/wp-content/db.php || echo "Warning: db.php has syntax errors"
# Start Apache in background
echo "Starting Apache web server on port 7860..."
apache2-foreground &
APACHE_PID=$!
# Wait for Apache to start
sleep 5
# Check if WordPress is accessible
echo "Checking WordPress accessibility..."
if curl -f http://localhost:7860/health.html > /dev/null 2>&1; then
echo "βœ… WordPress is accessible at http://localhost:7860"
else
echo "⚠️ WordPress may not be fully ready yet"
fi
# Keep the container running
echo "WordPress is ready! Visit your Hugging Face Space to see it in action."
echo "Demo login: demo / demo123"
echo ""
echo "=== Debugging Information ==="
echo "If WordPress shows errors, try these debug pages:"
echo "β€’ /test.php - Basic PHP and SQLite test"
echo "β€’ /debug.php - Detailed system information"
echo "β€’ Check Space logs for detailed error messages"
echo ""
echo "WordPress files:"
echo "β€’ wp-config.php: $([ -f /var/www/html/wp-config.php ] && echo 'βœ“' || echo 'βœ—')"
echo "β€’ wp-content/db.php: $([ -f /var/www/html/wp-content/db.php ] && echo 'βœ“' || echo 'βœ—')"
echo "β€’ Database dir: $([ -d /var/www/html/wp-content/database ] && echo 'βœ“' || echo 'βœ—')"
echo ""
# Keep the container running
tail -f /var/log/apache2/access.log