ติดตั้ง WordPress Multisite สำหรับหลายเว็บในระบบเดียว

เปิดใช้ Multisite เพื่อดูแลหลายเว็บจากหลังบ้านเดียว พร้อมข้อจำกัดที่ต้องรู้ก่อนตัดสินใจ และวิธีเลือกระหว่างแบบซับโดเมนกับซับโฟลเดอร์

โดย ทีมงาน THAI DATA CLOUD อัปเดต อ่าน 9 นาที เข้าชม 5 ครั้ง

แชร์FacebookXLINELinkedIn
WordPress Multisite — ติดตั้ง WordPress Multisite สำหรับหลายเว็บในระบบเดียว
ติดตั้ง WordPress Multisite สำหรับหลายเว็บในระบบเดียว

คำตอบสั้น ๆ: เปิดใช้ Multisite เพื่อดูแลหลายเว็บจากหลังบ้านเดียว พร้อมข้อจำกัดที่ต้องรู้ก่อนตัดสินใจ และวิธีเลือกระหว่างแบบซับโดเมนกับซับโฟลเดอร์

คู่มือนี้อธิบาย WordPress Multisite ทีละขั้นตอน พร้อมคำสั่งที่ใช้ได้จริงและปัญหาที่พบบ่อย

Multisite ทำให้ WordPress หนึ่งชุดให้บริการหลายเว็บได้ โดยใช้ไฟล์ ปลั๊กอิน และธีมร่วมกัน เหมาะกับองค์กรที่มีเว็บหลายสาขา สถาบันการศึกษาที่มีเว็บหลายคณะ หรือธุรกิจที่มีหลายแบรนด์

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

สิ่งที่ต้องเตรียม (WordPress Multisite)

  • WordPress ที่ติดตั้งเรียบร้อยและยังไม่มีเนื้อหามาก
  • สิทธิ์แก้ไฟล์ wp-config.php และคอนฟิกเว็บเซิร์ฟเวอร์
  • Wildcard DNS หากเลือกแบบซับโดเมน
  • สำรองข้อมูลก่อนเสมอ การเปลี่ยนเป็น Multisite ย้อนกลับยาก

ขั้นตอนที่ 1: เลือกรูปแบบ (WordPress Multisite)

  • ซับโดเมน เช่น sale.example.com เหมาะเมื่อแต่ละเว็บเป็นหน่วยงานอิสระ ต้องตั้ง Wildcard DNS และใบรับรอง SSL แบบ Wildcard
  • ซับโฟลเดอร์ เช่น example.com/sale/ ตั้งค่าง่ายกว่า ใช้ใบรับรองเดิมได้ แต่ URL ยาวและแยก SEO ได้น้อยกว่า

เลือกแล้วเปลี่ยนภายหลังยากมาก ตัดสินใจให้รอบคอบตั้งแต่ต้น หากไม่แน่ใจและเว็บทั้งหมดเป็นขององค์กรเดียวกัน ซับโดเมนมักยืดหยุ่นกว่าในระยะยาว

ขั้นตอนที่ 2: เปิดโหมด Multisite (WordPress Multisite)

nano /var/www/example.com/wp-config.php

เพิ่มก่อน /* That's all, stop editing! */

define('WP_ALLOW_MULTISITE', true);

รีเฟรชหน้าหลังบ้าน จะเห็นเมนูใหม่ที่ Tools แล้ว Network Setup

ก่อนดำเนินการต่อ ระบบจะขอให้ปิดปลั๊กอินทั้งหมดก่อน

cd /var/www/example.com
wp plugin deactivate --all

ขั้นตอนที่ 3: ติดตั้งเครือข่าย

ในหน้า Network Setup เลือกรูปแบบที่ตัดสินใจไว้ ตั้งชื่อเครือข่ายและอีเมลผู้ดูแล แล้วกด Install

ระบบจะแสดงโค้ดสองชุดให้เพิ่มเอง ชุดแรกลงใน wp-config.php

define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', true);
define('DOMAIN_CURRENT_SITE', 'example.com');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);

ชุดที่สองลงใน .htaccess สำหรับ Apache หรือแปลงเป็นกฎของ Nginx

# Nginx สำหรับ Multisite แบบซับโฟลเดอร์
if (!-e $request_filename) {
    rewrite /wp-admin$ $scheme://$host$uri/ permanent;
    rewrite ^(/[^/]+)?(/wp-.*) $2 last;
    rewrite ^(/[^/]+)?(/.*\.php) $2 last;
}
sudo nginx -t && sudo systemctl reload nginx

ล็อกอินใหม่หลังบันทึก จะเห็นเมนู My Sites แล้ว Network Admin

ขั้นตอนที่ 4: ตั้ง DNS และ SSL สำหรับซับโดเมน

# Wildcard A Record
*.example.com.  IN  A  203.0.113.10
dig +short test.example.com

ขอใบรับรอง Wildcard ซึ่งต้องยืนยันผ่าน DNS

sudo certbot certonly --dns-cloudflare \
  --dns-cloudflare-credentials /root/.secrets/cloudflare.ini \
  -d 'example.com' -d '*.example.com' \
  --agree-tos -m [email protected]
server {
    listen 443 ssl;
    server_name example.com *.example.com;
    ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    root /var/www/example.com;
    # ...
}

ขั้นตอนที่ 5: เพิ่มเว็บใหม่

# ผ่าน WP-CLI ซึ่งเร็วกว่าและทำซ้ำได้
wp site create --slug=sale --title="ฝ่ายขาย" [email protected]

wp site list --fields=blog_id,url,registered
wp site list --field=url

สั่งงานกับเว็บใดเว็บหนึ่งด้วย --url

wp --url=sale.example.com option get blogname
wp --url=sale.example.com plugin list
wp site list --field=url | xargs -I% wp --url=% core update-db

ขั้นตอนที่ 6: จัดการปลั๊กอินและธีม

ใน Multisite มีสองระดับ

  • Network Activate เปิดใช้กับทุกเว็บพร้อมกัน ผู้ดูแลเว็บย่อยปิดไม่ได้
  • ให้สิทธิ์เปิดเอง ติดตั้งจากส่วนกลางแล้วให้แต่ละเว็บเลือกเปิดเอง
wp plugin activate wordpress-seo --network
wp plugin activate contact-form-7 --url=sale.example.com

# ธีมต้องเปิดให้ใช้ในเครือข่ายก่อน เว็บย่อยจึงจะเลือกได้
wp theme enable twentytwentyfour --network

ผู้ดูแลเว็บย่อยติดตั้งปลั๊กอินเองไม่ได้ ต้องให้ผู้ดูแลเครือข่ายติดตั้งให้ ซึ่งเป็นทั้งข้อดีด้านความปลอดภัยและข้อจำกัดด้านความคล่องตัว

ขั้นตอนที่ 7: ใช้โดเมนของตัวเองสำหรับเว็บย่อย

WordPress รุ่นใหม่รองรับในตัวแล้ว ไม่ต้องใช้ปลั๊กอิน

# ชี้ DNS ของโดเมนใหม่มาที่เซิร์ฟเวอร์เดียวกันก่อน
wp site list --fields=blog_id,url
wp db query "UPDATE wp_blogs SET domain='newbrand.co.th', path='/' WHERE blog_id=2;"
wp --url=newbrand.co.th option update siteurl 'https://newbrand.co.th'
wp --url=newbrand.co.th option update home 'https://newbrand.co.th'

เพิ่มโดเมนใหม่ใน server_name ของ Nginx และขอใบรับรองเพิ่ม

sudo certbot --nginx -d newbrand.co.th --expand

ขั้นตอนที่ 8: สำรองและกู้คืนเว็บเดียว

นี่คือจุดที่ Multisite ยุ่งยากกว่าการติดตั้งแยก เพราะข้อมูลของทุกเว็บอยู่ในฐานข้อมูลเดียวกัน

# ตารางของเว็บที่ blog_id = 2 จะขึ้นต้นด้วย wp_2_
wp db tables --all-tables | grep '^wp_2_'

# ส่งออกเฉพาะเว็บนั้น
wp db export site2.sql --tables=$(wp db tables 'wp_2_*' --all-tables --format=csv)

# ไฟล์อัปโหลดของเว็บนั้น
tar czf site2-uploads.tar.gz wp-content/uploads/sites/2

อย่าลืมว่าตาราง wp_users และ wp_usermeta ใช้ร่วมกันทั้งเครือข่าย จึงกู้แยกไม่ได้

ปัญหาที่พบบ่อยเกี่ยวกับ WordPress Multisite

เข้าหลังบ้านของเว็บย่อยแล้ววนกลับ

กฎ rewrite ไม่ถูกต้อง ตรวจคอนฟิกตามขั้นตอนที่ 3 และล้างคุกกี้ของเบราว์เซอร์แล้วลองใหม่

ซับโดเมนใหม่เปิดไม่ได้

ตรวจ Wildcard DNS ด้วย dig +short newsite.example.com และตรวจว่า server_name ของ Nginx มี *.example.com และใบรับรองครอบคลุม

อัปโหลดไฟล์ไม่ได้บนเว็บย่อย

ตรวจสิทธิ์ของโฟลเดอร์ wp-content/uploads/sites/ และตรวจโควตาพื้นที่ต่อเว็บที่ตั้งไว้ใน Network Settings

อยากแยกเว็บย่อยออกมาเป็นเว็บเดี่ยว

ใช้เครื่องมือส่งออกในตัวที่ Tools แล้ว Export บนเว็บย่อยนั้น แล้วนำเข้าในการติดตั้งใหม่ วิธีนี้ย้ายเนื้อหาได้แต่ไม่ย้ายการตั้งค่าของปลั๊กอิน ต้องตั้งใหม่

ต้องการโฮสติ้งที่รองรับ WordPress Multisite พร้อม SSL Wildcard ติดต่อ THAI DATA CLOUD ได้ที่ https://thaidata.cloud/contact/

สรุปขั้นตอน WordPress Multisite

ทบทวน WordPress Multisite ทั้งหมดตามลำดับ ก่อนนำไปใช้กับระบบจริง

  1. เลือกรูปแบบ (WordPress Multisite)
  2. เปิดโหมด Multisite (WordPress Multisite)
  3. ติดตั้งเครือข่าย
  4. ตั้ง DNS และ SSL สำหรับซับโดเมน
  5. เพิ่มเว็บใหม่
  6. จัดการปลั๊กอินและธีม
  7. ใช้โดเมนของตัวเองสำหรับเว็บย่อย
  8. สำรองและกู้คืนเว็บเดียว

เมื่อทำครบทุกข้อแล้ว WordPress Multisite จะพร้อมใช้งาน หากผลลัพธ์ไม่เป็นไปตามที่คาด ให้ย้อนกลับไปดูหัวข้อปัญหาที่พบบ่อยด้านบน ซึ่งรวบรวมกรณีที่พบจริงจากการใช้งาน WordPress Multisite ไว้แล้ว

อ่านเพิ่มเติมเกี่ยวกับ WordPress Multisite

แชร์FacebookXLINELinkedIn

มีคำถามเรื่องบริการ? ติดต่อทีมงาน