ใช้ WP-CLI จัดการ WordPress ผ่าน Command Line บน Hosting ทีละขั้นตอน

บทความนี้เจาะเฉพาะประเด็นที่มักพลาดตอนใช้ WP-CLI บน Shared Hosting DirectAdmin ซึ่งต่างจากการใช้บน VPS ที่มีสิทธิ์ Root เต็ม ตั้งแต่การขอสิทธิ์ SSH ปัญหา Permission ที่พบบ่อย ไปจนถึงการตั้ง Cron รัน WP-CLI อัตโนมัติ (สำหรับรายการคำสั่ง WP-CLI แบบละเอียดครบทุกหมวด อ่านเพิ่มที่ คู่มือ WP-CLI ฉบับเต็ม)

WP-CLI คืออะไร

WP-CLI (WordPress Command Line Interface) คือเครื่องมือบรรทัดคำสั่งอย่างเป็นทางการสำหรับจัดการ WordPress แทนการคลิกผ่าน Dashboard ครอบคลุมตั้งแต่ติดตั้ง อัปเดต จัดการปลั๊กอิน/ธีม ไปจนถึงจัดการฐานข้อมูล เหมาะกับงานที่ต้องทำซ้ำๆ หรือทำกับหลายเว็บพร้อมกัน ซึ่งเร็วกว่าคลิกทีละเมนูมาก

ทำไมการใช้บน Shared Hosting ถึงต่างจาก VPS

บน VPS ผู้ใช้มีสิทธิ์ Root เต็มรูปแบบ ติดตั้ง WP-CLI แบบ Global ได้อิสระและรันคำสั่งได้ไม่มีข้อจำกัด แต่บน Shared Hosting อย่าง DirectAdmin ผู้ใช้ได้รับสิทธิ์จำกัดเฉพาะโฟลเดอร์ของบัญชีตัวเอง (Home Directory) เท่านั้น ทำให้มีเงื่อนไขเพิ่มเติมที่ต้องระวัง เช่น การติดตั้ง WP-CLI ต้องเก็บไว้ในโฟลเดอร์ส่วนตัวแทนการติดตั้ง System-wide, บาง Hosting ปิดฟังก์ชัน PHP บางตัวด้วย disable_functions ที่ WP-CLI อาจต้องใช้ และ Memory Limit ของ PHP CLI อาจแยกจาก Memory Limit ของเว็บที่ตั้งไว้ใน DirectAdmin

ขอสิทธิ์ SSH บน DirectAdmin Hosting

Shared Hosting ส่วนใหญ่ปิด SSH Access ไว้เป็นค่าเริ่มต้นด้วยเหตุผลด้านความปลอดภัย ต้องขอเปิดใช้งานก่อนจึงจะใช้ WP-CLI ได้:

  1. ติดต่อทีมซัพพอร์ตของผู้ให้บริการ Hosting แจ้งความประสงค์ขอเปิด SSH Access สำหรับบัญชีของคุณ
  2. เมื่อเปิดให้แล้ว จะได้ Hostname, Port (มักไม่ใช่ Port 22 ปกติในบาง Shared Hosting เพื่อความปลอดภัย), Username และ Password หรือ SSH Key
  3. เชื่อมต่อด้วยคำสั่ง ssh [email protected] -p PORT จาก Terminal หรือใช้โปรแกรม PuTTY บน Windows
  4. ทดสอบว่าเชื่อมต่อสำเร็จด้วยคำสั่ง pwd ควรเห็น Path ของ Home Directory บัญชีตัวเอง

AsiaGB Hosting เปิดให้ลูกค้าขอ SSH Access ได้ผ่านระบบ Ticket โดยทีมงานจะตรวจสอบและเปิดให้ภายในเวลาทำการ

ติดตั้ง WP-CLI แบบไม่ต้องใช้สิทธิ์ Root

เนื่องจากไม่มีสิทธิ์ sudo mv ไปยัง /usr/local/bin เหมือนบน VPS จึงต้องติดตั้ง WP-CLI ไว้ในโฟลเดอร์ส่วนตัวแทน:

  1. สร้างโฟลเดอร์เก็บ Binary เช่น mkdir -p ~/bin
  2. ดาวน์โหลดไฟล์ด้วย curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
  3. ให้สิทธิ์รันไฟล์ด้วย chmod +x wp-cli.phar แล้วย้ายเข้าโฟลเดอร์ส่วนตัว mv wp-cli.phar ~/bin/wp
  4. เพิ่ม PATH ให้ Shell รู้จักคำสั่ง wp โดยเพิ่มบรรทัด export PATH="$HOME/bin:$PATH" ในไฟล์ ~/.bashrc หรือ ~/.bash_profile
  5. รันคำสั่ง source ~/.bashrc แล้วทดสอบด้วย wp --version

บาง Hosting ติดตั้ง WP-CLI มาให้แล้วในระบบ ลองรัน wp --version ก่อนเสมอ หากมีอยู่แล้วก็ข้ามขั้นตอนติดตั้งไปได้เลย

แก้ปัญหา Permission ที่พบบ่อย

คำสั่งที่ใช้บ่อยที่สุดสำหรับงานบน Hosting

สำหรับงานประจำวันบน Shared Hosting คำสั่งที่ใช้บ่อยที่สุดมีเพียงไม่กี่ตัว:

ตั้ง Cron รัน WP-CLI อัตโนมัติบน DirectAdmin

เมื่อมี SSH Access แล้ว สามารถตั้ง Cron Job ผ่านเมนู Cron Jobs ใน DirectAdmin ให้รันคำสั่ง WP-CLI อัตโนมัติตามตารางเวลาได้ เช่น อัปเดต Plugin ทุกสัปดาห์:

0 3 * * 1 cd /home/username/domains/yourdomain.com/public_html && /home/username/bin/wp plugin update --all --quiet

ต้องระบุ Path เต็มของทั้งโฟลเดอร์เว็บไซต์และไฟล์ wp เสมอ เพราะ Cron ไม่รู้จัก PATH ที่ตั้งไว้ใน .bashrc เหมือนตอนล็อกอิน SSH แบบ Interactive นอกจากนี้ควรเพิ่ม Flag --quiet เสมอเมื่อรันผ่าน Cron เพื่อลด Output ที่ไม่จำเป็น และพิจารณาต่อท้ายด้วย >> /home/username/logs/wp-cli-cron.log 2>&1 เพื่อบันทึกผลลัพธ์และ Error ไว้ตรวจสอบย้อนหลังได้ หากคำสั่งล้มเหลวเงียบๆ โดยไม่มี Log จะหาสาเหตุยากมากในภายหลัง

ตรวจสอบว่า Hosting รองรับ WP-CLI ก่อนสมัคร

ก่อนตัดสินใจสมัคร Hosting สำหรับโปรเจกต์ที่ต้องใช้ WP-CLI เป็นประจำ ควรตรวจสอบล่วงหน้าว่าผู้ให้บริการเปิด SSH Access ให้หรือไม่ เพราะบาง Hosting ราคาถูกมากอาจไม่เปิดให้เลยเพื่อลดความเสี่ยงด้านความปลอดภัยของเซิร์ฟเวอร์ที่ใช้ทรัพยากรร่วมกันจำนวนมาก ควรสอบถามทีมขายหรือ Support ก่อนสมัครเสมอ โดยเฉพาะถ้าต้องบริหารเว็บไซต์หลายแห่งที่ต้องอัปเดตพร้อมกันบ่อยๆ ซึ่งจะได้ประโยชน์จาก WP-CLI มากที่สุด

เคล็ดลับ: ก่อนรันคำสั่งที่มีผลเปลี่ยนแปลงข้อมูล เช่น search-replace หรือ core update ควรสำรองฐานข้อมูลด้วย JetBackup หรือ Backup มาตรฐานของ DirectAdmin ก่อนเสมอ แม้ WP-CLI จะเร็วและสะดวก แต่ก็แก้ไขข้อมูลจริงทันทีไม่มีขั้นตอนยืนยันเหมือน Dashboard

Shared Hosting ทุกที่รองรับ WP-CLI ไหม

ไม่ใช่ทุกที่ ขึ้นอยู่กับว่าผู้ให้บริการเปิด SSH Access ให้หรือไม่ AsiaGB Hosting เปิดให้ลูกค้าขอ SSH Access ได้ผ่านระบบ Ticket ส่วน Hosting บางเจ้าอาจไม่เปิดให้เลยด้วยเหตุผลด้านความปลอดภัย ควรตรวจสอบกับผู้ให้บริการก่อน

ไม่มี SSH Access ใช้ WP-CLI ได้ไหม

ใช้ไม่ได้โดยตรง เพราะ WP-CLI ต้องรันผ่าน Terminal เท่านั้น หากไม่มี SSH Access ต้องจัดการผ่าน Dashboard ตามปกติ หรือขอให้ผู้ให้บริการ Hosting เปิดสิทธิ์ SSH ให้ก่อน

ทำไมรัน wp command แล้วขึ้น Permission Denied

ส่วนใหญ่เกิดจาก User ที่ล็อกอิน SSH ไม่ตรงกับ Owner ของไฟล์เว็บไซต์ หรือไฟล์ wp ที่ติดตั้งไม่มีสิทธิ์ Execute ตรวจสอบด้วย ls -la แล้วรัน chmod +x เพิ่มสิทธิ์รันไฟล์หากจำเป็น

wp-cli.phar กับ wp ต่างกันอย่างไร

เป็นไฟล์เดียวกัน wp-cli.phar คือชื่อไฟล์ที่ดาวน์โหลดมา ส่วน wp คือชื่อที่ตั้งใหม่หลังย้ายเข้าโฟลเดอร์ PATH เพื่อให้พิมพ์คำสั่งสั้นลง ไม่มีความแตกต่างด้านฟังก์ชันการทำงาน

ตั้ง Cron รัน WP-CLI แล้วไม่ทำงาน ต้องตรวจอะไรก่อน

ตรวจสอบว่าใช้ Path เต็มของไฟล์ wp และโฟลเดอร์เว็บไซต์ในคำสั่ง Cron แทนการพึ่ง PATH เพราะ Cron ไม่โหลดค่าจาก .bashrc เหมือนตอน SSH เข้ามาแบบ Interactive

WP-CLI ปลอดภัยพอสำหรับใช้บน Production Site จริงไหม

ปลอดภัยและเป็นเครื่องมือทางการของทีม WordPress เอง แต่เนื่องจากคำสั่งมีผลทันทีไม่มีขั้นตอนยืนยันเหมือน Dashboard จึงควรสำรองฐานข้อมูลก่อนรันคำสั่งที่เปลี่ยนแปลงข้อมูลเสมอ โดยเฉพาะ search-replace และ core update

Hosting ที่พร้อมเปิด SSH ให้ใช้ WP-CLI

AsiaGB Hosting DirectAdmin เปิด SSH Access ผ่านระบบ Ticket รองรับ WP-CLI, Composer และ Git Deploy สำหรับนักพัฒนา

ดูแพ็กเกจ Hosting