สำหรับเว็บไซต์ WordPress ขนาดใหญ่ที่มีข้อมูลหลาย GB การย้ายด้วย Plugin อาจไม่เหมาะสม การใช้ Command Line ผ่าน WP-CLI, mysqldump และ rsync เป็นวิธีที่เร็วและเชื่อถือได้มากกว่า บทความนี้จะแนะนำวิธีย้าย WordPress มายัง Cloud VPS ของ de.co.th ด้วยเครื่องมือ CLI
ทำไมต้องย้ายด้วย CLI?
การย้ายด้วย CLI มีข้อดีหลายประการ ได้แก่ รองรับเว็บขนาดใหญ่ได้โดยไม่มีข้อจำกัดขนาดไฟล์ rsync โอนเฉพาะไฟล์ที่เปลี่ยนแปลงทำให้เร็วกว่าการดาวน์โหลดทั้งหมด สามารถเขียน Script อัตโนมัติได้ WP-CLI จัดการ URL และการตั้งค่าได้อย่างรวดเร็ว และ mysqldump สำรองฐานข้อมูลได้แม่นยำ
เครื่องมือที่ต้องใช้
ต้องมี SSH Access ทั้ง Server เดิมและ Cloud VPS ใหม่ WP-CLI ติดตั้งบน Server ปลายทาง (Cloud VPS ของ de.co.th สามารถติดตั้งได้ทันที) rsync สำหรับโอนไฟล์ และ mysqldump สำหรับสำรองฐานข้อมูล
ขั้นตอนที่ 1: สำรองฐานข้อมูลด้วย mysqldump
SSH เข้า Server เดิมแล้วใช้คำสั่ง mysqldump เพื่อ Export ฐานข้อมูล คำสั่งนี้จะสร้างไฟล์ SQL ที่มีข้อมูลทั้งหมดของฐานข้อมูล WordPress
# ดูข้อมูลฐานข้อมูลจาก wp-config.php
grep -E "DB_NAME|DB_USER|DB_PASSWORD|DB_HOST" wp-config.php
# Export ฐานข้อมูล
mysqldump -u db_user -p'db_password' db_name > wordpress_db.sql
# บีบอัดเพื่อประหยัดพื้นที่และเวลาโอน
gzip wordpress_db.sql
ขั้นตอนที่ 2: โอนไฟล์ด้วย rsync
rsync เป็นเครื่องมือที่ดีที่สุดสำหรับการโอนไฟล์จำนวนมากระหว่าง Server เพราะโอนเฉพาะไฟล์ที่เปลี่ยนแปลงเท่านั้น ไม่ต้องโอนไฟล์ทั้งหมดใหม่ทุกครั้ง
# โอนไฟล์ทั้งหมดจาก Server เดิมไป VPS ใหม่
rsync -avz --progress -e "ssh -p 22" \
/var/www/html/wordpress/ \
user@new-vps-ip:/var/www/vhosts/example.com/httpdocs/
# โอนไฟล์ฐานข้อมูลด้วย
rsync -avz --progress -e "ssh -p 22" \
wordpress_db.sql.gz \
user@new-vps-ip:/tmp/
# หรือใช้ scp สำหรับไฟล์เดี่ยว
scp wordpress_db.sql.gz user@new-vps-ip:/tmp/
ขั้นตอนที่ 3: Import ฐานข้อมูลบน Cloud VPS
SSH เข้า Cloud VPS ใหม่ สร้างฐานข้อมูลและ User ผ่าน Plesk ก่อน แล้ว Import ไฟล์ SQL
# แตกไฟล์บีบอัด
gunzip wordpress_db.sql.gz
# Import ฐานข้อมูล
mysql -u new_db_user -p'new_db_password' new_db_name < /tmp/wordpress_db.sql
ขั้นตอนที่ 4: แก้ไข wp-config.php
แก้ไขข้อมูลการเชื่อมต่อฐานข้อมูลให้ตรงกับฐานข้อมูลบน Cloud VPS ใหม่
# แก้ไขด้วย sed
cd /var/www/vhosts/example.com/httpdocs/
sed -i "s/old_db_name/new_db_name/g" wp-config.php
sed -i "s/old_db_user/new_db_user/g" wp-config.php
sed -i "s/old_db_password/new_db_password/g" wp-config.php
# หรือแก้ด้วย nano/vim
nano wp-config.php
ขั้นตอนที่ 5: อัปเดต URL ด้วย WP-CLI
WP-CLI ทำให้การเปลี่ยน URL ในฐานข้อมูลเป็นเรื่องง่าย คำสั่ง search-replace จะค้นหาและเปลี่ยน URL ในทุกตารางของฐานข้อมูล รวมถึง Serialized Data ที่ Plugin หลายตัวใช้
# ติดตั้ง WP-CLI (ถ้ายังไม่มี)
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp
# Search-Replace URL (ทดลองก่อนด้วย --dry-run)
wp search-replace 'https://old-domain.com' 'https://new-domain.com' --all-tables --dry-run
# ทำจริง
wp search-replace 'https://old-domain.com' 'https://new-domain.com' --all-tables
# ล้าง Cache
wp cache flush
ขั้นตอนที่ 6: ตั้งค่า Permission และ Ownership
# ตั้งค่า Ownership ตามรูปแบบ Plesk
chown -R example.com:psacln /var/www/vhosts/example.com/httpdocs/
# ตั้งค่า Permission
find /var/www/vhosts/example.com/httpdocs/ -type d -exec chmod 755 {} \;
find /var/www/vhosts/example.com/httpdocs/ -type f -exec chmod 644 {} \;
# ตั้งค่า wp-config.php ให้ปลอดภัยยิ่งขึ้น
chmod 600 wp-config.php
Migration Script อัตโนมัติ
สามารถรวมขั้นตอนทั้งหมดเขียนเป็น Script เพื่อใช้ซ้ำได้
#!/bin/bash
# WordPress Migration Script
# ตัวแปร
OLD_SERVER="user@old-server-ip"
OLD_PATH="/var/www/html/wordpress"
NEW_PATH="/var/www/vhosts/example.com/httpdocs"
OLD_URL="https://old-domain.com"
NEW_URL="https://new-domain.com"
DB_NAME="wp_database"
DB_USER="wp_user"
DB_PASS="wp_password"
echo "=== Step 1: Sync files ==="
rsync -avz --progress -e ssh $OLD_SERVER:$OLD_PATH/ $NEW_PATH/
echo "=== Step 2: Import database ==="
rsync -avz -e ssh $OLD_SERVER:/tmp/wordpress_db.sql.gz /tmp/
gunzip /tmp/wordpress_db.sql.gz
mysql -u $DB_USER -p"$DB_PASS" $DB_NAME < /tmp/wordpress_db.sql
echo "=== Step 3: Update wp-config.php ==="
# แก้ไขข้อมูลฐานข้อมูลใน wp-config.php
echo "=== Step 4: Search-Replace URLs ==="
cd $NEW_PATH
wp search-replace "$OLD_URL" "$NEW_URL" --all-tables --allow-root
echo "=== Step 5: Fix permissions ==="
chown -R example.com:psacln $NEW_PATH/
find $NEW_PATH -type d -exec chmod 755 {} \;
find $NEW_PATH -type f -exec chmod 644 {} \;
echo "=== Step 6: Flush cache ==="
wp cache flush --allow-root
echo "=== Migration complete! ==="
สรุป
การย้าย WordPress ด้วย CLI เหมาะสำหรับเว็บขนาดใหญ่ที่ต้องการความเร็วและความแม่นยำ WP-CLI, mysqldump และ rsync เป็นเครื่องมือมาตรฐานที่ทำงานร่วมกันได้อย่างดี Cloud VPS ของ de.co.th พร้อม Plesk ให้ SSH Access และสามารถติดตั้ง WP-CLI ได้ทันที ทำให้การย้ายเว็บเป็นเรื่องง่าย

