WordPress Headless Production Setup Guide —
เตรียมความพร้อมสำหรับ Production

การนำ WordPress Headless ขึ้น Production ต้องเตรียมหลายด้าน ได้แก่ Server Configuration ที่เหมาะสม, Security Hardening ป้องกันการโจมตี, Performance Optimization ให้ API ตอบสนองเร็ว, Backup Strategy ป้องกันข้อมูลสูญหาย และ Monitoring ติดตามปัญหา
WordPress Headless ใช้เป็น API Server อย่างเดียว ไม่ต้อง Render Frontend ทำให้ Optimize ได้ง่ายกว่า WordPress ปกติ แต่ต้องให้ความสำคัญกับ API Performance และ Security เป็นพิเศษ
wp-config.php สำหรับ Production
=== wp-config.php — Production Settings ===
เพิ่มหลัง DB Settings ใน wp-config.php
--- Performance ---
Redis Object Cache
define('WP_REDIS_HOST', '127.0.0.1');
define('WP_REDIS_PORT', 6379);
define('WP_REDIS_DATABASE', 0);
define('WP_REDIS_PREFIX', 'wp_');
Disable File Editing
define('DISALLOW_FILE_EDIT', true);
define('DISALLOW_FILE_MODS', true);
Limit Revisions
define('WP_POST_REVISIONS', 5);
define('AUTOSAVE_INTERVAL', 300);
Memory
define('WP_MEMORY_LIMIT', '256M');
define('WP_MAX_MEMORY_LIMIT', '512M');
Cron — ใช้ System Cron แทน
define('DISABLE_WP_CRON', true);
เพิ่มใน crontab: */5 * * * * curl -s https://api.example.com/wp-cron.php > /dev/null
--- Headless Mode ---
define('WP_HOME', 'https://api.example.com');
define('WP_SITEURL', 'https://api.example.com');
define('HEADLESS_MODE_CLIENT_URL', 'https://www.example.com');
Disable Frontend Theme Rendering
ใช้ Plugin "Headless Mode" หรือเพิ่มใน functions.php:

add_action('template_redirect', function() {
เนื้อหาเกี่ยวข้อง — kháng cự và hỗ trợ — ทุกสิ่งที่ต้องรู้ในปี 2026
if (!is_admin() && !wp_doing_ajax() &&
!defined('REST_REQUEST') && !defined('GRAPHQL_REQUEST')) {
wp_redirect('https://www.example.com');
exit;
}
});
--- Security ---
แนะนำเพิ่มเติม — SiamCafeBook
define('FORCE_SSL_ADMIN', true);
define('WP_DEBUG', false);
define('WP_DEBUG_LOG', false);
define('WP_DEBUG_DISPLAY', false);
Security Keys (generate from https://api.wordpress.org/secret-key/1.1/salt/)
define('AUTH_KEY', '...');
define('SECURE_AUTH_KEY', '...');
define('LOGGED_IN_KEY', '...');
define('NONCE_KEY', '...');
=== PHP-FPM Configuration ===
/etc/php/8.3/fpm/pool.d/wordpress.conf
[wordpress]
user = www-data
group = www-data
listen = /run/php/php8.3-fpm.sock
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
เนื้อหาเกี่ยวข้อง — บทความที่เกี่ยวข้อง: LangChain Agent Certification Path
pm.max_requests = 500
php_admin_value[memory_limit] = 256M
php_admin_value[upload_max_filesize] = 64M
php_admin_value[post_max_size] = 64M
php_admin_value[max_execution_time] = 300
php_admin_value[opcache.enable] = 1
php_admin_value[opcache.memory_consumption] = 256
php_admin_value[opcache.max_accelerated_files] = 20000
Backup และ Monitoring Scripts
!/bin/bash
wp-backup.sh — Automated Backup Script สำหรับ WordPress
เพิ่มใน crontab: 0 2 * * * /opt/scripts/wp-backup.sh
set -e
Configuration
WP_DIR="/var/www/wordpress"
แนะนำเพิ่มเติม — คอร์สเทรด Forex ที่ iCafeForex
DB_NAME="wordpress"
DB_USER="wp_user"
DB_PASS="secure_password"
BACKUP_DIR="/backups/wordpress"
S3_BUCKET="s3://my-backups/wordpress"
RETENTION_DAYS=30
DATE=$(date +%Y%m%d_%H%M%S)
echo "[$(date)] Starting WordPress backup..."
สร้าง Backup Directory
mkdir -p "$BACKUP_DIR"
1. Database Backup
echo " Backing up database..."
mysqldump -u"$DB_USER" -p"$DB_PASS" "$DB_NAME" \เนื้อหาเกี่ยวข้อง — Nginx Plus Audit Trail Logging
--single-transaction --quick --lock-tables=false \
| gzip > "$BACKUP_DIR/db_.sql.gz"
2. Files Backup (wp-content only — ไม่ต้อง Backup Core)
echo " Backing up wp-content..."
tar czf "$BACKUP_DIR/files_.tar.gz" \
-C "$WP_DIR" wp-content/ \
--exclude="wp-content/cache" \
--exclude="wp-content/upgrade"
3. Upload to S3 (ถ้ามี AWS CLI)
if command -v aws &> /dev/null; then
echo " Uploading to S3..."
aws s3 cp "$BACKUP_DIR/db_.sql.gz" "$S3_BUCKET/"
aws s3 cp "$BACKUP_DIR/files_.tar.gz" "$S3_BUCKET/"
fi
4. ลบ Backup เก่า
echo " Cleaning old backups..."
find "$BACKUP_DIR" -name "*.gz" -mtime +$RETENTION_DAYS -delete
5. ตรวจสอบ Backup Size
DB_SIZE=$(du -h "$BACKUP_DIR/db_.sql.gz" | cut -f1)
FILES_SIZE=$(du -h "$BACKUP_DIR/files_.tar.gz" | cut -f1)
echo "[$(date)] Backup complete!"
echo " Database: $DB_SIZE"
echo " Files: $FILES_SIZE"
=== Monitoring Script ===
wp-monitor.sh — ตรวจสอบสถานะ WordPress
#!/bin/bash
# ตรวจสอบ WordPress API
เนื้อหาเกี่ยวข้อง — บทความที่เกี่ยวข้อง: GitHub Actions Matrix Interview Preparation
API_URL="https://api.example.com"
ALERT_EMAIL="admin@example.com"
# Check REST API
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" \
"$API_URL/wp-json/wp/v2/posts?per_page=1")
if [ "$HTTP_CODE" != "200" ]; then
echo "WordPress API DOWN! HTTP $HTTP_CODE" | \
mail -s "ALERT: WordPress API Down" "$ALERT_EMAIL"
fi
# Check Response Time
RESPONSE_TIME=$(curl -s -o /dev/null -w "%{time_total}" \
"$API_URL/wp-json/wp/v2/posts?per_page=1")
# Alert if response > 2 seconds
if (( $(echo "$RESPONSE_TIME > 2.0" | bc -l) )); then
echo "WordPress API SLOW! s" | \
mail -s "ALERT: WordPress API Slow" "$ALERT_EMAIL"
fi
# Check Disk Usage
DISK_USAGE=$(df -h /var/www/wordpress | tail -1 | awk '{print $5}' | tr -d '%')
if [ "$DISK_USAGE" -gt 80 ]; then
echo "Disk usage: %" | \
mail -s "ALERT: Disk Usage High" "$ALERT_EMAIL"
fi
echo "[$(date)] Health: HTTP=$HTTP_CODE Time=s Disk=%"
Production Checklist
- SSL/HTTPS: ติดตั้ง SSL Certificate บังคับ HTTPS ทุก Connection ใช้ Let's Encrypt (ฟรี)
- Security Plugins: ติดตั้ง Wordfence หรือ Sucuri ป้องกัน Brute Force และ Malware
- Redis Cache: ติดตั้ง Redis และ Redis Object Cache Plugin ลด Database Load
- CDN: ใช้ Cloudflare หรือ CloudFront Cache Static Assets และ API Responses
- Backup: ตั้ง Automated Backup ทุกวัน เก็บทั้ง Local และ Cloud ทดสอบ Restore
- Monitoring: ติดตาม API Response Time, Error Rate, Disk Usage ตั้ง Alert
- Updates: Update WordPress, Plugins, PHP อย่างสม่ำเสมอ ทดสอบใน Staging ก่อน
- CORS: อนุญาตเฉพาะ Frontend Domain ไม่ใช้ wildcard (*)
WordPress Headless Production ต้องเตรียมอะไรบ้าง
Web Server (Nginx), PHP 8.x, MySQL/MariaDB, Redis Object Cache, SSL Certificate, CDN, Backup System, Monitoring ติดตั้ง WPGraphQL, ACF, Yoast SEO และ Security Plugins





