ติดตั้ง WordPress ด้วย Command Line พิมพ์แค่บรรทัดเดียว โดยใช้ WP-CLI + Shell Script

ทุกครั้งที่มีโปรเจคต์ใหม่ Task เดิมๆ ของผมก็คือ ดาวน์โหลด WordPress เวอร์ชั่นใหม่ล่าสุด แล้วก็แตกซิบไฟล์โยนเข้าไปในโฟลเดอร์ที่ต้องการติดตั้ง แล้วก็เข้า phpMyAdmin เพื่อสร้าง Database หลังจากนั้น Install WordPress ผ่านหน้าเว็บด้วย การกรอกชื่อ Database username password ขั้นตอนถัดไปคือสร้าง Admin username และ password จะพบว่า ขั้นตอนก็ธรรมดาทั่วไป เป็นเพียงการติดตั้งปกติ แต่ถ้าต้องสร้างหลายๆ Project แล้วต้องทำงานเดิมซ้ำๆ ก็จะพบว่าเสียเวลาเอามากๆ เพราะฉะนั้นผมเลยหาวิธีแก้

ด้วยความขี้เกลียด บวกอยากหาทางลัด ผมรู้จัก Tool ตัวนึงจากเพื่อนเพิร์ธ แห่ง designil.com มานานแล้วและ แต่ไม่เคยลองเล่นมันซักที วันนี้เลยลองจับแล้วรู้จักความสามารถเลยเกิดไอเดียที่จะหามาใช้ทุ่นแรง Tool ตัวนี้ มีชื่อว่า WP-CLI มันคือ “A command line interface for WordPress” เป็น Command Line สำหรับ WordPress ถ้าใครใช้ Linux, OS X ก็จะรู้เคยสัมผัส Command Line แน่ๆ ถ้าใครสนใจ หรือต้องการติดตั้ง  Spec Requirement มีดังนี้

  • UNIX-like environment (OS X, Linux, FreeBSD, Cygwin); limited support in Windows environment
  • PHP 5.3.29 or later
  • WordPress 3.7 or later

 

การติดตั้ง

โดยส่วนตัวผมใช้ OS X ก็เปิด Terminal ขึ้นมาแล้ว Install ด้วยคำสั่ง curl

$ curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

ดาวน์โหลดเสร็จเรียบร้อย ลองใช้คำสั่งนี้ตรวจสอบว่าทำงานไหม ผลลัพธ์ก็จะขึ้นตามภาพ ซึ่งผลลัพธ์อาจจะแต่งต่างกัน ขึ้นอยู่กับว่า path ของแต่ละเครื่องประกาศไว้ที่ไหน แต่ default จะเป็น /usr/bin สำหรับ UNIX

$ php wp-cli.phar --info
PHP binary:    /usr/bin/php5
PHP version:    5.5.9-1ubuntu4.14
php.ini used:   /etc/php5/cli/php.ini
WP-CLI root dir:        /home/wp-cli/.wp-cli
WP-CLI packages dir:    /home/wp-cli/.wp-cli/packages/
WP-CLI global config:   /home/wp-cli/.wp-cli/config.yml
WP-CLI project config:
WP-CLI version: 0.23.0

ถ้าเรามาเรียกใช้คำสั่ง wp-cli.phar ทุกครั้งก็จะยาวไป ก็เลยเปลี่ยนมาใช้คำสั่ง wp แทนโดยใช้คำสั่ง mv ย้ายไปยัง path folder พร้อมเปลี่ยนชื่อ เหตุผลที่ย้ายไปใน /usr/bin เพื่อที่จะใด้เรียกใช้คำสั่ง ได้จากทุกที่ จากนั้นเราก็ใช้คำสั่ง wp –info เพื่อทดสอบดูว่าทำงานไหม ถ้าทำงานก็จะขึ้นผลลัพธ์เหมือนด้านล่าง

$ chmod +x wp-cli.phar
$ sudo mv wp-cli.phar /usr/bin/wp
$ php wp --info
PHP binary:    /usr/bin/php5
PHP version:    5.5.9-1ubuntu4.14
php.ini used:   /etc/php5/cli/php.ini
WP-CLI root dir:        /home/wp-cli/.wp-cli
WP-CLI packages dir:    /home/wp-cli/.wp-cli/packages/
WP-CLI global config:   /home/wp-cli/.wp-cli/config.yml
WP-CLI project config:
WP-CLI version: 0.23.0

 

ความสามารถของ WP-CLI

WP-CLI ความสามารถของมันทำได้ตั้งแต่ สร้าง ลบ แก้ไข DB, ติดตั้ง WordPress,  Update Plugin และอีกมากมายเต็มไปหมด ด้วย Command Line หลายคนอาจจะมีคำถาม อ้าวทำไมต้องมาใช้ด้วยล่ะ ในเมื่อ Interface ให้มีใช้ง่ายกว่าตั้งเยอะ อันนี้ก็แล้วแต่คนครับ ถ้าใครไม่สะดวกก็ไม่ว่ากัน แต่ที่ผมจะทำคือ รวมคำสั่งทั้งหมดแล้วยัดใน Shell Script แล้วเรียก Shell เพื่อ ทำงานโดยพิมพ์คำสั่งแค่บรรทัดเดียวครับ 🙂

 

ติดตั้ง WordPress

ให้สร้าง Folder ที่ต้องการจะลง WordPress แล้วพิมพ์คำสั่ง  จากนั้นโปรแกรมจะดาวน์โหลด WordPress เวอร์ชั่นล่าสุดมาให้เราเลย

wp core download

จัดการ Database

ตัว WP-CLI มีคำสั่งที่จัดการกับ DB เช่นกัน ไม่ว่าจะเป็น create drop export import query ก็ได้หมด แต่ก่อนจะทำ ตั้งเช็คก่อนโดยพิมพ์คำสั่ง mysql ว่าสามารถทำงานได้หรือเปล่า ถ้าไม่ก็ต้องไป export path ใน ~/.bash_profile ( เป็นไฟล์ที่รันก่อนทุกครั้งที่เรา Login ) ให้ชี้ไปใน mysql shell ที่เราใช้งาน

List Command เกี่ยวกับการใช้งาน  DB

# สร้าง db ชื่อว่า testing
wp db create testing

สร้าง wp-config.php

คำสั่งนี้ไว้ generate wp-config.php ของเว็บไซต์ ไฟล์ที่มีส่วนสำคัญในการ Connect กับ DB และสำหรับไว้เซ็ทค่าตั้งต้นต่างๆ โดยคำสั่งนี้ตั้งค่า ชื่อ DB, DB Username, DB Password

List Command ในการใช้คำสั่ง wp core

wp core config --dbname=testing --dbuser=wp_testing --dbpass=securepswd

ตั้งชื่อเว็บไซต์ และสร้าง Admin User

ส่วนคำสั่งนี้จะตั้งค่า URL และ Title ของเว็บไซต์ พร้อทั้ง Create Username และ Password ของ Admin ให้ในคำสั่งเดียว

wp core install --url=http://localhost/test --title=WP-Testing --admin_user=admin --admin_password=secure_pwd --admin_email=admin@test.com

เท่านี้เราก็ได้ WordPress เว็บไซต์นึงที่สามารถทำงานได้โดยไม่ต้องไปแตะ UI  Web เลย คราวนี้ผมจะรวมคำสั่งทั้งหมดมาไว้ใน Shell Script

 

การสร้าง Shell script

คือการเอาคำสั่งของตัว UNIX มาเรียงต่อกันเป็นไฟล์เดียว โดยเราสามารถ โยนค่า parameter ได้ด้วย เพื่อรับค่า ในแต่ละครั้งที่ต่างกัน ผมจะเอาเจ้าความสามารถของ WP-CLI มารวมเป็นคำสั่งเดียว

# เข้าไปที่ /usr/bin
$ cd /usr/bin

# เรียก Text Editor ขึ้นมาในที่นี่ผมใช้ nano ครับ
$ nano

ตรวจสอบ Path และ Value ต่างๆ

  • ตรวจสอบ Path ที่เก็บ Website ด้วยครับ เพราะแต่ละเครื่อง ไม่เหมือนกัน
  • Parameter ที่โยนเข้าไป จะทำการตั้งชื่อ Folder, Website, Database ตรวจสอบให้แน่ใจว่าไม่ซ้ำกับของเดิม
  • ตรวจสอบ Value ต่างๆ เช่น DB user password, Admin user password

จากนั้น ใส่ script นี้ลงไป บันทึกเป็นชื่ออะไรก็ได้ของผมใช้ wp_install สังเกตุว่าจะมี “$1” ตัวนั้นคือ parameter ที่เราสามารถโยนเข้าไป

# ให้เข้าไปที่ www path ของ Web Server ที่ตั้ง
cd /Applications/MAMP/htdocs

# สร้าง Folder และเข้าไปยัง folder
mkdir $1
cd $1

# จากนั้นทำการดาวน์โหลด WordPress Version ล่าสุด
wp core download

# ทำการตั้งค่าไฟล์ config ต่างๆ และ generate wp-config ส่วน --extra-php เราสามารเขียน php เพิ่มเข้าไปได้เลย
wp core config --dbname=$1 --dbuser=root --dbpass=root --extra-php <<PHP
define( 'FS_METHOD', 'direct');
PHP


# สร้าง DB
wp db create $1

# ตั้งค่า URL ของเว็บไซต์, ชื่อ และสร้าง Admin User
wp core install --url=http://localhost/$1 --title=$1 --admin_user=admin --admin_password=admin --admin_email=admin@$1.com --skip-email

จากการรันคำสั่ง “wp_install test” ทำให้เราได้เว็บไซต์ WordPress ที่ตั้งค่าทุกอย่างให้เราเรียบร้อย
URL: http://localhost/test

ถ้ามีโปรเจคต์ใหม่ก็พิมพ์เพียงแค่ “wp_install ชื่อโปรเจคต์” เท่านี้ก็ได้เว็บที่ติดตั้ง WordPress มาใช้งาน ถ้าใครอยากพลิกแพลงโดยการโหลดอย่างอื่นจาก github เช่น โหลด Start Theme _s มาไว้เป็น Default Theme หรือปลั๊กอิน ก็ได้เหมือนกันครับ 🙂

$ wp_install test
Downloading WordPress 4.5.3 (en_US)...
# ถ้าเคยดาวน์โหลดแล้ว และไม่มีของใหม่ จะทำการดึง cache มาใช้
Using cached file '/Users/local/.wp-cli/cache/core/wordpress-4.5.3-en_US.tar.gz'...
Success: WordPress downloaded.
Success: Generated wp-config.php file.
Success: Database created.
Success: WordPress installed successfully.

ภาพนี้เป็นผลลัพธ์ จากการทดสอบจริงๆ ครับ

result

Comments

Tagged , , , , ,
shares