تطوير WordPress المحلي باستخدام Lando (أو أصبح Docker سهلاً)
نشرت: 2019-11-22في وقت سابق من هذا العام ، كتبت دليلًا حول كيفية استخدام Docker للتطوير في WordPress. لقد استمتعت حقًا بالعمل في هذا المنشور ، ويبدو أنك أحببته أيضًا (شكرًا لجميع تعليقاتك ورسائل البريد الإلكتروني). إذا لم تقرأ المنشور ، فإليك تذكيرًا سريعًا:
Docker هو برنامج يتيح لك حزم البرامج في حاويات وتشغيلها فوق الأجهزة الافتراضية. الميزة الرئيسية لـ Docker هي أن حاوياتها تعمل باستخدام بيئة المحاكاة الافتراضية التي يوفرها نظام التشغيل المضيف ، مما ينتج عنه حاويات سريعة وخفيفة .
المشكلة الرئيسية التي يواجهها Docker هي أن تكوينه مرهق . على سبيل المثال ، لإنشاء بيئة تطوير WordPress ، نحتاج إلى بدء خدمتين (على الأقل): خدمة قاعدة بيانات وخادم webapp.
في المنشور الذي تم التعليق عليه في البداية ، رأينا أداة ، Docker Compose ، تسمح بتحديد جميع الخدمات التي يتعين علينا تطويرها لمشروع معين. باستخدام Docker Compose ، تمكنا من تحديد جميع تبعيات مشروعنا في ملف واحد docker-compose.yml وبدء تشغيله بأمر واحد.
أو هذا ما وعدت به في البداية ، لأنني أغلقت المنشور من خلال شرح كيفية تكوين خدمة Docker أخرى تتيح لك استخدام أسماء نطاقات جميلة في تثبيتات WordPress الخاصة بك. إذا كنت تتذكر ، باستخدام ملف docker-compose.yml الأصلي ، يمكن الوصول إلى بيئة تطوير WordPress الخاصة بنا عبر http://localhost:8080 . ولكن إذا أردنا استخدام شيء مثل http://myplugin.local ، كان علينا إعداد وكيل يمكنه حل أسماء النطاقات وإضافة المزيد من الإعدادات إلى docker-compose.yml ...
أعلم ، أعلم - كان الأمر معقدًا للغاية لتجهيز الأمور وتشغيلها! ولكن بمجرد إعداد كل شيء بشكل صحيح ، كان الأمر سهلاً للغاية ، أليس كذلك؟ على أي حال ، قررت أن أقدم لك صديقي الجديد: Lando. سيساعدك في إعداد بيئات تطوير جديدة في ثوانٍ.
أدخل Lando
أعتقد أن أفضل طريقة لتقديم نفسك إلى Lando هي استخدام جملة من وثائقه:
Lando مخصص للمطورين الذين يرغبون في تجنب البناء في الماسوشية بالاستخدام المباشر لرسو السفن أو
مستندات لاندوdockerdocker-compose.
نعم ، يبدو أن استخدام docker docker-compose مخصص للمازوشي ... لذلك دعونا نرى كيف يمكننا تحديد جميع الخدمات التي نحتاجها للعمل في مشروع WordPress جديد بسرعة ودون تعقيدات.
تركيب Lando
أول شيء يجب عليك فعله لتتمكن من استخدام Lando هو (مفاجأة ، مفاجأة!) تثبيته على جهاز الكمبيوتر الخاص بك. عملية التثبيت بسيطة للغاية وموثقة جيدًا ، ولكن يمكننا تلخيصها في الخطوات التالية:
- يتطلب Lando Docker. إذا كنت تستخدم نظام Linux ، فقم بتثبيت Docker Community Edition أولاً. إذا كنت تستخدم نظام التشغيل Mac أو Windows ، فسيقوم مثبِّت Lando نفسه بتثبيت Docker إذا لم يكن متاحًا بالفعل.
- قم بتنزيل مثبت Lando المناسب لنظام التشغيل الخاص بك. في حالتي ، على سبيل المثال ، قمت بتنزيل ملف
lando-v3.0.0-rc.22.deb(أنا على نظام Linux) وقمت بتثبيته معdpkg. بالنسبة لنظام التشغيل Mac ، استخدم ملف.dmg، وبالنسبة لنظام التشغيل Windows ، استخدم ملف.exe. - قم بتشغيل المثبت واتبع الخطوات.
وهذا كل شيء!
كيفية إنشاء مشروع WordPress جديد في Lando
أول شيء يتعين علينا القيام به هو الانتقال إلى مجلد المشروع الذي نريد العمل معه (أو إنشاء مجلد جديد له). في حالتي ، سأقوم بإنشاء برنامج WordPress dev env جديد لتطوير البرنامج المساعد Nelio A / B الاختباري ، لذلك سوف أقوم بإدخال 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تهاني! لديك الآن تثبيت ووردبريس جديد قيد التشغيل. إذا انتقلنا الآن إلى أحد عناوين URL 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 وألقينا نظرة على المكونات الإضافية المتاحة ، فسنرى أن المكون الإضافي (Nelio A / B Testing ، في المثال الخاص بي) غير موجود. هذا لأن Nelio A / B Testing ليس في 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.
