เตรียมตัวก่อนย้าย Hosting
การย้าย Hosting ที่ดีต้องเตรียมการอย่างรอบคอบ ข้ามขั้นตอนใดขั้นตอนหนึ่งอาจทำให้เว็บดาวน์หรือข้อมูลหาย สิ่งที่ต้องเตรียมก่อนเริ่ม:
- Backup ทุกอย่าง — ไฟล์เว็บ, Database, Email (ถ้ามี), cPanel Backup
- จดค่า Config สำคัญ — PHP Version, Database Name/User/Password, SMTP Settings, Cron Jobs
- จด Nameserver เดิม — เพื่อ Rollback ได้ถ้าเกิดปัญหา
- เลือกเวลาที่เหมาะสม — ย้ายในช่วง Traffic ต่ำ เช่น กลางดึกวันธรรมดา
- แจ้ง Stakeholder — บอก Team หรือลูกค้าว่าจะมีการบำรุงรักษา
5 ขั้นตอนหลักการย้ายเว็บ
ขั้นที่ 1: Backup ข้อมูลทั้งหมด
ที่ Hosting เดิม ทำ Full Backup ผ่าน cPanel → Backup → Download a Full Account Backup หรือ Backup Wizard สำหรับ WordPress ใช้ Plugin เช่น UpdraftPlus หรือ All-in-One WP Migration เพื่อ Export ทุกอย่างเป็นไฟล์เดียว
# Backup Database ด้วย mysqldump (SSH)
mysqldump -u dbuser -p dbname > backup_$(date +%Y%m%d).sql
# Compress ไฟล์เว็บทั้งหมด
tar -czf website_backup.tar.gz ~/public_html/
ขั้นที่ 2: Upload ไฟล์ไปยัง Hosting ใหม่
สร้าง Account บน Hosting ใหม่ก่อน แล้วอัพโหลดไฟล์ผ่าน FTP หรือ File Manager ใน cPanel ถ้าใช้ WordPress ให้ตรวจสอบว่าไฟล์ทั้งหมดอยู่ใน public_html ครบถ้วน
ขั้นที่ 3: Import Database
สร้าง Database และ User ใหม่บน Hosting ใหม่ จากนั้น Import SQL ที่ Backup ไว้:
# Import ผ่าน phpMyAdmin: เลือก Database → Import → เลือกไฟล์ .sql
# หรือผ่าน SSH
mysql -u newdbuser -p newdbname < backup.sql
สำหรับ WordPress อย่าลืมอัพเดท wp-config.php ด้วยค่า Database ใหม่ และอาจต้องอัพเดท Site URL ใน Database ถ้า IP หรือ Domain เปลี่ยน
ขั้นที่ 4: ทดสอบด้วย hosts file ก่อนเปลี่ยน DNS
นี่คือขั้นตอนที่สำคัญที่สุด ใช้ hosts file หลอกให้คอมพิวเตอร์เราเปิดเว็บจาก Hosting ใหม่โดยที่ยังไม่ได้เปลี่ยน DNS ทำให้ทดสอบได้อย่างปลอดภัย
# แก้ไขไฟล์ hosts บน macOS/Linux
sudo nano /etc/hosts
# เพิ่มบรรทัดนี้ (แทน IP ด้วย IP ของ Hosting ใหม่)
1.2.3.4 yourdomain.com www.yourdomain.com
# บน Windows: C:\Windows\System32\drivers\etc\hosts
หลังทดสอบเสร็จให้ลบบรรทัดที่เพิ่มออก เพื่อให้คอมพิวเตอร์กลับไปใช้ DNS ปกติ
ขั้นที่ 5: ตั้งค่า TTL ต่ำก่อนเปลี่ยน DNS
ก่อนเปลี่ยน Nameserver 24-48 ชั่วโมง ให้ลด TTL ของ DNS Record ลงเหลือ 300 วินาที (5 นาที) เพื่อให้การเปลี่ยน DNS กระจายเร็วขึ้น หลังจากย้ายเสร็จแล้วค่อยเพิ่ม TTL กลับ
Checklist หลังย้ายเสร็จ
- เว็บเปิดได้ปกติจากทั้ง HTTP และ HTTPS
- SSL Certificate ถูกต้อง ไม่แสดงคำเตือน
- Email รับ-ส่งได้ปกติ
- Form และ Contact Page ทำงานได้
- Admin Login ได้ปกติ (WordPress)
- รูปภาพและ Media โหลดครบ
- Cron Jobs ตั้งค่าใหม่บน Hosting ใหม่แล้ว
- Analytics/Tracking Script ทำงานอยู่
ตรวจสอบว่าย้ายเว็บสำเร็จ
# ตรวจสอบ IP ที่โดเมนชี้อยู่
dig +short yourdomain.com
# ตรวจสอบ HTTPS และ SSL
curl -vI https://yourdomain.com 2>&1 | grep -E "SSL|HTTP/"
# ทดสอบ Response Time
curl -o /dev/null -s -w "Total: %{time_total}s\n" https://yourdomain.com
# ตรวจสอบ Redirect ทำงานถูกต้อง
curl -IL http://yourdomain.com
แก้ปัญหาที่พบบ่อย
Error: เว็บแสดงหน้าว่างหรือ Error 500 หลัง Import Database
ตรวจสอบ wp-config.php (WordPress) ว่าค่า DB_NAME, DB_USER, DB_PASSWORD, DB_HOST ถูกต้องหรือไม่ DB_HOST บน cPanel มักเป็น localhost ไม่ใช่ IP Address
รูปภาพหายหรือ Media Files โหลดไม่ขึ้น
ตรวจสอบว่าอัพโหลด uploads/ folder ครบหรือยัง โดยเฉพาะถ้าใช้ FTP แบบ Partial Upload โฟลเดอร์นี้มักมีขนาดใหญ่และอัพโหลดนานที่สุด
DNS Propagation ช้ามาก เกิน 48 ชั่วโมง
ตรวจสอบว่าตั้ง TTL ต่ำไว้ก่อนเปลี่ยน DNS หรือไม่ ถ้าไม่ได้ตั้ง TTL ต้องรอ ISP แต่ละรายล้าง Cache เอง ในระหว่างนั้น ผู้ใช้บางคนอาจยังเข้า Hosting เดิมอยู่
คำถามที่พบบ่อย
Q: ย้าย Hosting มี Downtime ไหม?
A: ถ้าทำถูกวิธีจะ Downtime น้อยมาก เพราะทดสอบจาก Hosting ใหม่ก่อนผ่าน hosts file แล้วค่อยเปลี่ยน DNS เมื่อทุกอย่างพร้อม ช่วง DNS Propagation เว็บยังทำงานได้จาก Hosting เดิม
Q: อีเมลจะหายระหว่างย้าย Hosting ไหม?
A: ถ้าใช้ Email บน Hosting (cPanel Email) ต้องวางแผนพิเศษ แนะนำให้ใช้ External Email Provider เช่น Google Workspace หรือ Zoho Mail แยกจาก Hosting เพื่อป้องกันปัญหาระหว่างย้าย
Q: WordPress ย้าย Hosting ต้องทำอะไรเพิ่มพิเศษไหม?
A: ต้องอัพเดท wp-config.php ด้วยค่า Database ใหม่ และตรวจสอบ Site URL ใน Settings อาจต้องรัน Search & Replace ใน Database ถ้า IP Address ของ Hosting ใหม่แตกต่างออกไป