it

WordPress Headless Production Setup Guide —

WordPress Headless Production Setup Guide —

เตรียมความพร้อมสำหรับ Production

WordPress Headless Production Setup Guide —

การนำ 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:

WordPress Headless Production Setup Guide —

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

XM Legend · เทรดเดอร์ & ผู้สอน Forex 13 ปี

ผู้ก่อตั้ง SiamCafe ตั้งแต่ปี 1997 · เทรดเดอร์สาย Forex มากกว่า 13 ปี ได้รับการยกย่องเป็น XM Legend · แบ่งปันความรู้ Forex, ไอที, AI และการเทรด จากประสบการณ์จริงในตลาดจริง