File size: 6,820 Bytes
bf47729
 
 
 
 
ca8657b
 
 
 
bf47729
ca8657b
e6e4558
ca8657b
 
 
bf47729
 
 
 
 
ca8657b
bf47729
ca8657b
bf47729
ca8657b
bf47729
 
 
e6e4558
 
 
bf47729
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e6e4558
 
bf47729
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
efc9636
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bf47729
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
efc9636
 
 
 
 
 
 
 
 
 
 
 
 
 
bf47729
efc9636
 
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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
#!/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