รับเครดิต $200

ติดตั้ง WordPress บน DigitalOcean ด้วย Nginx + MySQL + PHP + SSL (Ubuntu) ทีละขั้น

อัปเดตล่าสุด 3 พฤศจิกายน 2569 · อ่านประมาณ 11 นาที · โดย DigitalOcean Review ไทย

คู่มือติดตั้ง WordPress บน Droplet Ubuntu แบบ LEMP (Nginx, MySQL, PHP-FPM) พร้อม SSL ฟรี Let's Encrypt, ตั้งค่าความเร็ว, แคช, สำรองข้อมูล และเลือกขนาดเครื่องที่เหมาะสม

เปิดเผยข้อมูล: บทความนี้มีลิงก์แนะนำ (referral) ของ DigitalOcean หากคุณสมัครผ่านลิงก์ เจ้าของเว็บอาจได้รับเครดิต โดยคุณไม่เสียค่าใช้จ่ายเพิ่ม · อ่านนโยบายการรีวิว

ภาพรวมก่อนเริ่ม

WordPress เป็น CMS ที่ใช้มากที่สุดในโลก และ DigitalOcean เป็นตัวเลือกยอดนิยมสำหรับโฮสต์ WordPress ที่ต้องการควบคุมเองเต็มที่ ราคาถูก และเร็ว บทความนี้สอนติดตั้งแบบ LEMP: Linux + Nginx (อ่านว่า engine-x) + MySQL + PHP-FPM บน Ubuntu LTS

ถ้ายังไม่เคยสร้าง Droplet ให้ทำตาม สอนสร้าง Droplet แรก ก่อน (สร้างเครื่อง ตั้งผู้ใช้ ไฟร์วอลล์) แล้วกลับมาที่นี่

ทางเลือกอื่น

  • 1-Click App (Marketplace): DigitalOcean มี image WordPress ที่ติดตั้งสำเร็จรูป สร้างเครื่องแล้วใช้ได้เลย สะดวก แต่คุณควรเข้าใจโครงสร้างที่ติดตั้งมาเพื่อดูแลต่อได้ ดูรายละเอียดและเวอร์ชันล่าสุดในหน้า Marketplace
  • Panel จัดการโฮสติ้ง: ติดตั้ง HestiaCP, CloudPanel, CyberPanel, Plesk (เสียเงิน) เพื่อมีหน้าเว็บจัดการหลายเว็บ แต่ใช้ RAM เพิ่ม
  • แบบ manual (บทความนี้): ควบคุมได้ละเอียดที่สุด เบาที่สุด และเรียนรู้ได้มากที่สุด

เลือกขนาด Droplet

การใช้งานขนาดแนะนำราคา/เดือน
บล็อกใหม่ ทราฟฟิกน้อย1 GiB (ใส่ swap)$6
เว็บบริษัท/บล็อก ทราฟฟิกปานกลาง2 GiB$12
WooCommerce หรือหลายเว็บ4 GiB$24
ทราฟฟิกสูง/ปลั๊กอินหนัก8 GiB ขึ้นไป$48

ราคา ณ 3 พ.ย. 2569 ดูตารางเต็มที่ ราคา DigitalOcean ทุกบริการ เริ่มต้นเล็กไปก่อนแล้วอัปเกรดได้เมื่อจำเป็น

ขั้นที่ 1: ติดตั้ง Nginx, MySQL, PHP

sudo apt update
sudo apt install nginx mysql-server php-fpm php-mysql php-curl php-gd php-intl php-mbstring php-soap php-xml php-xmlrpc php-zip php-imagick unzip curl -y

ตรวจเวอร์ชัน PHP ที่ติดตั้ง (เพื่อใช้ชื่อ socket ในขั้นต่อไป)

php -v
ls /run/php/

จะเห็นไฟล์ เช่น php8.3-fpm.sock (ตัวเลขเวอร์ชันขึ้นกับ Ubuntu ที่ใช้)

เปิดไฟร์วอลล์สำหรับเว็บ

sudo ufw allow 'Nginx Full'

ขั้นที่ 2: สร้างฐานข้อมูลและผู้ใช้

sudo mysql_secure_installation
sudo mysql

ใน MySQL prompt (เปลี่ยนรหัสผ่านให้ยาวและสุ่ม)

CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'ใส่รหัสผ่านที่แข็งแรง';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

ใช้ utf8mb4 เพื่อรองรับภาษาไทยและอีโมจิได้ถูกต้อง

ขั้นที่ 3: ดาวน์โหลดและวาง WordPress

cd /tmp
curl -LO https://wordpress.org/latest.tar.gz
tar xzf latest.tar.gz
sudo mkdir -p /var/www/example.com
sudo cp -a wordpress/. /var/www/example.com/
sudo chown -R www-data:www-data /var/www/example.com

เปลี่ยน example.com เป็นโดเมนของคุณ แล้วสร้างไฟล์ตั้งค่า

cd /var/www/example.com
sudo cp wp-config-sample.php wp-config.php
sudo nano wp-config.php

แก้ DB_NAME เป็น wordpress, DB_USER เป็น wpuser, DB_PASSWORD เป็นรหัสผ่านที่ตั้งไว้ และแทนค่า Authentication Unique Keys and Salts ด้วยค่าใหม่จาก https://api.wordpress.org/secret-key/1.1/salt/

ขั้นที่ 4: ตั้งค่า Nginx server block

sudo nano /etc/nginx/sites-available/example.com

ใส่เนื้อหา (แก้ชื่อโดเมน และชื่อ socket ให้ตรงกับเวอร์ชัน PHP)

server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/example.com;
    index index.php index.html;

    client_max_body_size 64M;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
    }

    location ~* \.(jpg|jpeg|png|gif|ico|css|js|webp|svg|woff2)$ {
        expires 30d;
        access_log off;
    }

    location ~ /\.ht { deny all; }
}

เปิดใช้งานและทดสอบ

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

แก้ upload_max_filesize และ post_max_size ใน /etc/php/8.3/fpm/php.ini ให้สอดคล้องกับ client_max_body_size (เช่น 64M) แล้ว sudo systemctl restart php8.3-fpm

ขั้นที่ 5: ติดตั้ง SSL ฟรีด้วย Let's Encrypt

ตรวจสอบก่อนว่า DNS ของโดเมนชี้มาที่ IP ของ Droplet แล้ว (dig +short example.com)

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d example.com -d www.example.com

ตอบคำถามอีเมลและเงื่อนไข แล้วเลือกให้ redirect HTTP ไป HTTPS ใบรับรองต่ออายุอัตโนมัติ ทดสอบได้ด้วย

sudo certbot renew --dry-run

ขั้นที่ 6: ตั้งค่า WordPress ผ่านเบราว์เซอร์

เปิด https://example.com ทำตามตัวช่วยติดตั้ง ตั้งชื่อเว็บ ผู้ดูแล (อย่าใช้ชื่อ admin) และรหัสผ่านแข็งแรง จากนั้นเข้า Settings → General ตรวจว่า URL เป็น https://

ขั้นที่ 7: ทำให้เร็วขึ้น

1. เปิด OPcache

PHP 8 มี OPcache ติดมา ตรวจว่าเปิดอยู่ใน /etc/php/8.3/fpm/conf.d/10-opcache.ini (opcache.enable=1)

2. ใช้แคชหน้าเว็บ

เลือกอย่างใดอย่างหนึ่ง

  • ปลั๊กอินแคช เช่น WP Super Cache, W3 Total Cache, LiteSpeed Cache (ถ้าใช้ LiteSpeed), WP Rocket (เสียเงิน)
  • Nginx FastCGI Cache ประสิทธิภาพสูงสุด ตั้งค่าเองได้ แต่ซับซ้อนกว่า
  • ใช้ Redis Object Cache ถ้ามีการเรียกฐานข้อมูลมาก

3. ใช้ CDN

Cloudflare แพ็กเกจฟรีช่วยลดภาระเครื่องและเร็วขึ้นสำหรับผู้เยี่ยมชมจากทั่วโลก หรือใช้ Spaces CDN สำหรับรูปและไฟล์มีเดีย

4. ปรับรูปภาพ

บีบอัดและแปลงเป็น WebP ด้วยปลั๊กอินเช่น ShortPixel, Imagify, EWWW หรือ Converter for Media

5. เลือกธีมและปลั๊กอินที่เบา

ปลั๊กอินที่ไม่จำเป็นคือสาเหตุอันดับต้น ๆ ของเว็บช้าและช่องโหว่ ลบทิ้งถ้าไม่ได้ใช้

รับเครดิตฟรี $200 (ใช้ได้ 60 วัน)สมัคร DigitalOcean ผ่านลิงก์แนะนำของเรา แล้วเพิ่มวิธีชำระเงินที่ใช้งานได้ ระบบจะให้เครดิตทดลองใช้งาน ตามเงื่อนไขของ DigitalOcean ณ วันที่สมัคร
สมัครรับเครดิต $200 →

ขั้นที่ 8: ความปลอดภัยของ WordPress

  • อัปเดต core ธีม ปลั๊กอิน สม่ำเสมอ (เปิด auto-update ให้ minor/security release)
  • ใช้ 2FA สำหรับผู้ดูแล
  • จำกัดการล็อกอินผิดซ้ำ (ปลั๊กอิน Limit Login Attempts หรือ fail2ban)
  • ปิดการแก้ไขไฟล์จากหน้า admin: ใส่ define('DISALLOW_FILE_EDIT', true); ใน wp-config.php
  • ตั้งสิทธิ์ไฟล์ให้ถูกต้อง (ไฟล์ 644, โฟลเดอร์ 755 และ wp-config.php 640 หรือ 600)
  • ปิด XML-RPC ถ้าไม่ได้ใช้
  • ทำตามเช็กลิสต์ใน คู่มือความปลอดภัยเซิร์ฟเวอร์

ขั้นที่ 9: สำรองข้อมูล

วิธีที่แนะนำคือผสมกัน

  1. Backup ระดับ Droplet ของ DigitalOcean (รายสัปดาห์ +20% หรือรายวัน +30%)
  2. dump ฐานข้อมูล + ไฟล์ wp-content ทุกวัน เก็บภายนอกเครื่อง เช่นส่งขึ้น Spaces ด้วย s3cmd/rclone หรือใช้ปลั๊กอิน UpdraftPlus ส่งไป Cloud storage
  3. Snapshot ก่อนอัปเกรดใหญ่ เช่น เปลี่ยนเวอร์ชัน PHP

ตัวอย่างสคริปต์ cron

#!/bin/bash
D=$(date +%F)
mysqldump --single-transaction wordpress | gzip > /var/backups/wp-db-$D.sql.gz
tar czf /var/backups/wp-files-$D.tar.gz -C /var/www/example.com wp-content
find /var/backups -type f -mtime +14 -delete

ขั้นที่ 10: ย้ายเว็บ WordPress จากโฮสต์เดิม

  1. ทำตามขั้นตอนข้างต้นจนมี WordPress ใหม่บน Droplet (หรือเตรียมโฟลเดอร์ว่าง)
  2. ที่โฮสต์เดิม ส่งออกฐานข้อมูล (phpMyAdmin → Export หรือ mysqldump) และบีบอัดโฟลเดอร์ wp-content
  3. นำเข้าฐานข้อมูลบน Droplet: mysql -u wpuser -p wordpress < dump.sql
  4. คัดลอก wp-content ไปวาง แล้วตั้ง owner เป็น www-data
  5. แก้ wp-config.php ให้ตรงกับฐานข้อมูลใหม่
  6. ทดสอบก่อนเปลี่ยน DNS โดยแก้ไฟล์ hosts ในเครื่องคุณให้โดเมนชี้ IP ใหม่ชั่วคราว
  7. ลดค่า TTL ของ DNS ล่วงหน้า 1 วัน จากนั้นเปลี่ยน A record ไป IP ใหม่
  8. เก็บโฮสต์เดิมไว้ 1-2 สัปดาห์ เผื่อต้องย้อนกลับ

หากเว็บเดิมใช้ปลั๊กอินย้ายเว็บอย่าง All-in-One WP Migration หรือ Duplicator ก็ใช้ได้สะดวกสำหรับเว็บขนาดเล็ก

ปัญหาที่พบบ่อย

502 Bad Gateway

มักเกิดจาก PHP-FPM ไม่ทำงานหรือชื่อ socket ใน Nginx ไม่ตรงกับเวอร์ชันจริง ตรวจ systemctl status php8.3-fpm และ sudo tail /var/log/nginx/error.log

อัปโหลดไฟล์ไม่ได้ / 413 Request Entity Too Large

เพิ่ม client_max_body_size ใน Nginx และ upload_max_filesize/post_max_size ใน php.ini

เว็บช้าหรือ MySQL ล้ม (RAM ไม่พอ)

เครื่อง 1 GiB อาจโดน OOM killer ฆ่า MySQL ให้เพิ่ม swap ลดจำนวน PHP-FPM children (pm.max_children) หรืออัปเกรดเป็น 2 GiB

WordPress ขอ FTP credentials ตอนติดตั้งปลั๊กอิน

สิทธิ์ไฟล์ไม่ถูกต้อง ตรวจว่า owner ของโฟลเดอร์ WordPress เป็น www-data ตามขั้นตอนที่ 3

ต้นทุนรวมโดยประมาณ

รายการราคา/เดือน
Droplet 2 GiB$12
Backup รายสัปดาห์ (+20%)~$2.40
โดเมน .comประมาณ $10-15 ต่อปี (แยกจาก DigitalOcean)
SSLฟรี (Let's Encrypt)
รวม~$14.40/เดือน + โดเมน

เริ่มทดลองฟรีด้วยเครดิตผู้ใช้ใหม่ได้ที่ วิธีรับเครดิตฟรี $200 DigitalOcean และอ่านวิธีลดต้นทุนต่อที่ 15 วิธีลดค่าใช้จ่าย DigitalOcean

คำถามที่พบบ่อยเรื่อง WordPress บน DigitalOcean

ใช้ 1-Click WordPress กับติดตั้งเองต่างกันอย่างไร

1-Click ติดตั้งสแตกให้เสร็จ ประหยัดเวลา ส่วนติดตั้งเองคุณรู้ว่าอะไรอยู่ตรงไหน ปรับแต่งง่ายและเข้าใจปัญหาได้ลึกกว่า ทั้งสองแบบต้องดูแลอัปเดตและความปลอดภัยเอง

โฮสต์หลายเว็บในเครื่องเดียวได้ไหม

ได้ สร้าง server block และฐานข้อมูลแยกต่อเว็บ แต่ต้องเผื่อ RAM เพิ่ม และระวังว่าเว็บหนึ่งโดนแฮกอาจกระทบเว็บอื่นในเครื่องเดียวกัน ควรแยกผู้ใช้/PHP-FPM pool ต่อเว็บ

DigitalOcean ดีกว่าโฮสติ้งไทยสำหรับ WordPress ไหม

ขึ้นอยู่กับทักษะและต้นทุน DigitalOcean ให้ความยืดหยุ่นและราคาต่อสเปกที่ดี แต่คุณต้องดูแลเอง ส่วนโฮสติ้งไทยมีซัพพอร์ตภาษาไทยและแผงควบคุมพร้อมใช้ ดูเปรียบเทียบที่ DigitalOcean เทียบคู่แข่ง

รับเครดิตฟรี $200 (ใช้ได้ 60 วัน)สมัคร DigitalOcean ผ่านลิงก์แนะนำของเรา แล้วเพิ่มวิธีชำระเงินที่ใช้งานได้ ระบบจะให้เครดิตทดลองใช้งาน ตามเงื่อนไขของ DigitalOcean ณ วันที่สมัคร
สมัครรับเครดิต $200 →