การพัฒนา WordPress ในพื้นที่ด้วย Lando (หรือ Docker ทำได้ง่าย)

เผยแพร่แล้ว: 2019-11-22

เมื่อต้นปีนี้ ฉันได้เขียนคู่มือเกี่ยวกับวิธีการใช้ Docker เพื่อพัฒนาบน WordPress ฉันสนุกกับการทำงานกับโพสต์นั้นมาก และดูเหมือนว่าคุณจะชอบมันเช่นกัน (ขอบคุณสำหรับความคิดเห็นและอีเมลทั้งหมดของคุณ) หากคุณไม่ได้อ่านโพสต์ นี่คือการเตือนความจำสั้นๆ:

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

ปัญหาหลัก ที่ Docker มีคือ การกำหนดค่านั้นยุ่งยาก ตัวอย่างเช่น ในการสร้างสภาพแวดล้อมการพัฒนา WordPress เราจำเป็นต้องเริ่มบริการสองอย่าง (อย่างน้อย) ได้แก่ บริการฐานข้อมูลและเซิร์ฟเวอร์เว็บแอพ

ในโพสต์ที่แสดงความคิดเห็นในตอนเริ่มต้น เราเห็นเครื่องมือ Docker Compose ที่อนุญาตให้กำหนดบริการทั้งหมดที่เราต้องสร้างสำหรับโปรเจ็กต์ที่กำหนด ด้วย Docker Compose เราจัดการเพื่อกำหนดไฟล์เดียว docker-compose.yml การพึ่งพาทั้งหมดของโครงการของเราและเริ่มต้นด้วยคำสั่งเดียว

หรือนั่นคือสิ่งที่ฉันสัญญาไว้ในตอนแรก เพราะฉันปิดโพสต์โดยอธิบายวิธีกำหนดค่าบริการ Docker อื่นที่จะช่วยให้คุณใช้ชื่อโดเมนที่สวยงามในการติดตั้ง WordPress ของคุณได้ หากคุณจำได้ ด้วยไฟล์ docker-compose.yml ดั้งเดิม WordPress dev env ของเราจะสามารถเข้าถึงได้ผ่าน http://localhost:8080 แต่ถ้าเราต้องการใช้บางอย่างเช่น http://myplugin.local เราต้องตั้งค่า พร็อกซี ที่สามารถแก้ไขชื่อโดเมนและเพิ่มการตั้งค่าเพิ่มเติมให้กับ docker docker-compose.yml compose.yml ของเรา …

ฉันรู้ ฉันรู้—มันค่อนข้างซับซ้อนในการเริ่มต้นใช้งาน! แต่เมื่อคุณได้ตั้งค่าทุกอย่างอย่างถูกต้องแล้ว มันก็ค่อนข้างง่ายใช่ไหม อย่างไรก็ตาม ฉันได้ตัดสินใจที่จะแนะนำคุณให้รู้จักเพื่อนใหม่ของฉัน: Lando เขาจะช่วยคุณตั้งค่าสภาพแวดล้อมการพัฒนาใหม่ภายในไม่กี่วินาที

เข้าสู่ Lando

ฉันคิดว่าวิธีที่ดีที่สุดในการแนะนำตัวเองกับ Lando คือการใช้ประโยคจากเอกสารของเขา:

Lando เหมาะสำหรับนักพัฒนาที่ต้องการหลีกเลี่ยง buildt-in-masochism ของการใช้ docker หรือ docker-compose โดยตรง

เอกสารของแลนโด้

ใช่ เห็นได้ชัดว่าการใช้ docker และ docker-compose สำหรับนักทำโทษตนเอง… มาดูกันว่าเราจะสามารถระบุบริการทั้งหมดที่เราต้องการเพื่อทำงานในโครงการ WordPress ใหม่ได้อย่างรวดเร็วและไม่มีความยุ่งยากซับซ้อนได้อย่างไร

การติดตั้ง Lando

สิ่งแรกที่คุณควรทำเพื่อให้สามารถใช้ Lando ได้คือ (เซอร์ไพรส์ เซอร์ไพรส์!) ติดตั้งลงในคอมพิวเตอร์ของคุณ ขั้นตอนการติดตั้งนั้นง่ายมากและได้รับการจัดทำเป็นเอกสารไว้อย่างดี แต่เราสามารถสรุปได้ในขั้นตอนต่อไปนี้:

  1. Lando ต้องการ Docker หากคุณใช้ Linux ให้ติดตั้ง Docker Community Edition ก่อน หากคุณใช้ Mac หรือ Windows ตัวติดตั้งของ Lando จะติดตั้ง Docker เองหากยังไม่พร้อมใช้งาน
  2. ดาวน์โหลดตัวติดตั้ง Lando ที่เหมาะสมสำหรับระบบปฏิบัติการของคุณ ตัวอย่างเช่นในกรณีของฉัน ฉันดาวน์โหลดไฟล์ lando-v3.0.0-rc.22.deb (ฉันใช้ Linux) และติดตั้งด้วย dpkg สำหรับ Mac ให้ใช้ .dmg และสำหรับ Windows ให้ใช้ .exe
  3. เรียกใช้ตัวติดตั้งและทำตามขั้นตอน

และนั่นแหล่ะ!

วิธีสร้างโครงการ WordPress ใหม่ใน Lando

สิ่งแรกที่เราต้องทำคือไปที่โฟลเดอร์โครงการที่เราต้องการใช้งาน (หรือสร้างโฟลเดอร์ใหม่ขึ้นมา) ในกรณีของฉัน ฉันจะสร้าง WordPress dev env ใหม่เพื่อพัฒนาปลั๊กอิน Nelio A/B Testing ดังนั้นฉันจะ cd ไปยังโฟลเดอร์ที่ฉันดาวน์โหลดโครงการ: ~/dev/plugins/nelio-ab-testing

เราต้องสร้างไฟล์กำหนดค่าของ Lando ไฟล์นี้คล้ายกับ docker-compose.yml แต่ง่ายกว่ามาก สำหรับผู้เริ่มต้น คุณไม่จำเป็นต้องเขียนเลยด้วยซ้ำ Lando ช่วยคุณได้! เพียงใช้ lando init เพื่อสร้างสภาพแวดล้อมการพัฒนาใหม่:

 lando init \ --recipe wordpress --source remote --remote-url https://wordpress.org/latest.tar.gz --webroot wordpress --name "Nelio AB Testing" # name the project as you want

มาดูกันว่าคำสั่งก่อนหน้านี้ทำอะไร:

  • อันดับแรก เราบอก Lando ว่าเราต้องการสร้างไฟล์การกำหนดค่าใหม่ในไดเร็กทอรีปัจจุบันโดยใช้ lando init
  • พารามิเตอร์แรก ( --recipe wordpress ) บอก Lando ว่าเราต้องการสร้างโครงการ WordPress ซึ่งจะช่วยให้ Lando ทราบถึงบริการที่ต้องตั้งค่า (ฐานข้อมูล เว็บเซิร์ฟเวอร์ ฯลฯ)
  • จากนั้นเราระบุว่าเราต้องการให้ Lando ดาวน์โหลด WordPress จาก WordPress.org
  • ด้วย --webroot wordpress เราบอก Lando ว่าจะติดตั้ง WordPress ที่ไหน เนื่องจากเราเพิ่งระบุว่าต้องดาวน์โหลด WordPress จาก WordPress.org และไฟล์ zip Lando จะดาวน์โหลด จะสร้างโฟลเดอร์ wordpress หลังจากคลายซิป นั่นคือตำแหน่งที่เราใช้สำหรับ Lando
  • สุดท้าย เราระบุชื่อโครงการของเรา (Lando จะใช้เพื่อสร้างโดเมน URL ที่จำง่าย)

หลังจากรันคำสั่งก่อนหน้านี้ คุณจะเห็นว่า Lando ติดตั้งทุกอย่างอย่างไร และยินดีต้อนรับคุณด้วยข้อมูลต่อไปนี้:

 NOW WE'RE COOKING WITH FIRE!!! Your app has been initialized! Go to the directory where your app was initialized and run `lando start` to get rolling. Check the LOCATION printed below if you are unsure where to go. Oh... and here are some vitals: NAME my-site LOCATION /tmp/plugin RECIPE wordpress DOCS https://docs.devwithlando.io/tutorials/wordpress.html

แสดงรายการไฟล์ทั้งหมดในโฟลเดอร์ปัจจุบัน แล้วคุณจะเห็น Lando สร้างไฟล์ที่ซ่อนอยู่ชื่อ .lando.yml พร้อมเนื้อหาต่อไปนี้:

 name: my-site recipe: wordpress config: webroot: wordpress

ง่ายมากใช่มั้ย? เริ่มบริการของคุณโดยใช้ lando start และคุณพร้อมแล้ว:

 BOOMSHAKALAKA!!! Your app has started up correctly. Here are some vitals: NAME my-site LOCATION /tmp/plugin SERVICES appserver, database APPSERVER URLS https://localhost:32781 http://localhost:32782 http://nelio-ab-testing.lndo.site https://nelio-ab-testing.lndo.site

ยินดีด้วย! ตอนนี้คุณมีการติดตั้งและใช้งาน WordPress ใหม่แล้ว หากตอนนี้เราไปที่ URL ใด URL หนึ่งที่ Lando ระบุไว้ในตอนเริ่มต้น คุณจะเห็นว่าคุณต้องทำตามขั้นตอนเพื่อติดตั้ง WordPress ให้เสร็จสิ้น:

ติดตั้ง WordPress ในประเทศ
ติดตั้ง WordPress ใน Lando

เสร็จสิ้นการติดตั้ง WordPress อย่างรวดเร็ว

แน่นอน คุณสามารถทำการติดตั้ง WordPress ให้เสร็จสิ้นได้โดยใช้ตัวติดตั้งของหน้าจอก่อนหน้า แต่มีทางออกที่ดีกว่า: ใช้ WP-CLI ซึ่งเรามีให้ใน Lando ด้วย

ในการติดตั้ง WordPress ด้วย WP-CLI เราต้องสร้าง wp-config.php ในไดเร็กทอรี wordpress ก่อน ในการสร้างไฟล์นั้น เราต้องการข้อมูลบางอย่างเกี่ยวกับฐานข้อมูลของเรา: ฐานข้อมูลอยู่ที่ไหน ชื่อผู้ใช้และรหัสผ่าน ฯลฯ ข้อมูลทั้งหมดนี้สามารถพบได้ผ่าน lando info ซึ่งส่งคืน JSON ต่อไปนี้:

 [ { service: 'appserver', urls: [ 'https://localhost:32781', 'http://localhost:32782', 'http://nelio-ab-testing.lndo.site', 'https://nelio-ab-testing.lndo.site' ], //... }, { service: 'database', //... creds: { database: 'wordpress', password: 'wordpress', user: 'wordpress', }, //... } ]

เนื่องจากผลลัพธ์เป็นสตริง JSON เราจึงสามารถใช้เครื่องมือ jq ของ Unix เพื่อดึงค่าเฉพาะที่เราสนใจ ตัวอย่างเช่น หากเราต้องการทราบผู้ใช้ฐานข้อมูลของเรา ให้เรียกใช้สิ่งนี้:

 $ lando info --service database --format json | jq -r ".[0].creds.user" wordpress

ตอนนี้ มาใช้ประโยชน์จากคำสั่งนี้และดึงข้อมูลที่เกี่ยวข้องทั้งหมดที่เราต้องการเพื่อสร้างไฟล์ปรับแต่งโดยใช้ WP-CLI:

 # Find WordPress' directory (webroot entry in .lando.yml) WEBROOT=`grep webroot .lando.yml | cut -d: -f2 | xargs` # Retrieve database credentials using lando info DBNAME=`lando info --service database --format json | jq -r ".[0].creds.database"` DBUSER=`lando info --service database --format json | jq -r ".[0].creds.user"` DBPASS=`lando info --service database --format json | jq -r ".[0].creds.password"` DBHOST=`lando info --service database --format json | jq -r ".[0].hostnames[0]"` # Create WordPress' config file lando wp config create \ --dbname=$DBNAME \ --dbuser=$DBUSER \ --dbpass=$DBPASS \ --dbhost=$DBHOST \ --path=$WEBROOT

เมื่อเราสร้างไฟล์แล้ว เราสามารถเรียกใช้คำสั่งการติดตั้ง:

 # Get WordPress' project name from .lando.yml PROJECT_NAME=`grep name .lando.yml | cut -d: -f2 | xargs` SITE_NAME=`echo "$PROJECT_NAME" | sed -e "s/-/ /g" | sed "s/\b[az]/\u&/g"` # Get one of the possible WordPress' URLs ando created (https) URL=`lando info --service appserver --format json | jq -r ".[0].urls" | grep -vw localhost | grep https: | cut -d'"' -f2` # Extract the domain from the previous URL (removing https) DOMAIN=`echo "$URL" | sed -e "s/^https:\/\///"` # Install WordPress lando wp core install --url=$URL --title="$SITE_NAME" --admin_user=admin --admin_password=password --admin_email=admin@$DOMAIN --path=$WEBROOT

เสร็จแล้ว! เรามี WordPress ติดตั้งและใช้งานได้แล้ว

วิธีใส่โครงการของเราใน WordPress

หากตอนนี้เราลงชื่อเข้าใช้ WordPress และดูปลั๊กอินที่พร้อมใช้งาน เราจะเห็นว่าไม่มีปลั๊กอินของเรา (ในตัวอย่างการทดสอบ Nelio A/B) นั่นเป็นเพราะการทดสอบ A/B ของ Nelio ไม่ได้อยู่ใน wordpress/wp-content/plugins/ ในการแก้ไขปัญหานี้ เราเพียงแค่สร้างซอฟต์ลิงก์ในไดเร็กทอรีนี้ที่ชี้ไปที่รูทของโปรเจ็กต์ของเรา:

 cd wordpress/wp-content/plugins/ ln -s ../../../ nelio-ab-testing cd -

และนั่นแหล่ะ!

ตอนนี้ก็ขึ้นอยู่กับคุณแล้วที่จะตัดสินใจเลือกแนวทางที่เหมาะสมกับความต้องการของคุณมากขึ้น หากคุณต้องการสร้างการติดตั้ง WordPress สำหรับทุกโครงการ เพียงทำตามขั้นตอนที่อธิบายไว้ ในทางกลับกัน หากคุณต้องการติดตั้ง WordPress เพียงครั้งเดียวพร้อมธีมและปลั๊กอินทั้งหมดของคุณ ให้สร้างโฟลเดอร์ใหม่ เริ่มต้น Lando ที่นั่น และเพิ่มปลั๊กอินทั้งหมดของคุณใน wordpress/wp-content/plugins/

ฉันหวังว่าคุณจะชอบโพสต์และเครื่องมือนี้มากที่สุดเท่าที่ฉันทำ และฉันหวังว่ามันจะทำให้งานของคุณง่ายขึ้นและสนุกขึ้น ตั้งแต่ใช้ Lando ฉันย้ายออกจาก Docker โดยสิ้นเชิง

ภาพเด่นโดย Victoire Joncheray บน Unsplash