الفرق بين المراجعتين لصفحة: «Laravel/valet»
رؤيا-بنعطية (نقاش | مساهمات) لا ملخص تعديل |
رؤيا-بنعطية (نقاش | مساهمات) ط استبدال النص - '\[\[تصنيف:(.*)\]\]' ب'{{SUBPAGENAME}}' |
||
سطر 254: | سطر 254: | ||
== مصادر == | == مصادر == | ||
* [https://laravel.com/docs/5.6/valet صفحة Laravel Valet في توثيق Laravel الرسمي.] | * [https://laravel.com/docs/5.6/valet صفحة Laravel Valet في توثيق Laravel الرسمي.] | ||
[[تصنيف:Laravel]] | [[تصنيف:Laravel|{{SUBPAGENAME}}]] | ||
[[تصنيف:Laravel Getting started]] | [[تصنيف:Laravel Getting started|{{SUBPAGENAME}}]] |
المراجعة الحالية بتاريخ 13:22، 23 أكتوبر 2018
مقدمة
Valet هي بيئة تطوير Laravel لأجهزة ماك. لا حاجة إلى استخدام Vagrant، ولا ملف /etc/hosts
. يمكنك أيضًا مشاركة مواقعك بشكل عام باستخدام الأنفاق المحلية.
تقوم بيئة Laravel Valet بتكوين جهاز ماك الخاص بك لتشغيل Nginx دائمًا في الخلفية عند بدء تشغيل الجهاز. ثم، باستخدام DnsMasq، يقوم خادم Valet بتجميع جميع الطلبات على نطاق test.* للإشارة إلى المواقع المثبتة على جهازك المحلي.
بعبارة أخرى، بيئة تطوير Laravel فائق السرعة تستخدم ما يقرب من 7 ميغابايت من ذاكرة الوصول العشوائي RAM. لا يعد Valet بديلًا كاملًا لبرمجية Vagrant أو Homestead، ولكنه يوفر بديلًا رائعًا إذا كنت تريد أساسيات مرنة، أو تفضل السرعة القصوى، أو تعمل على جهاز يحتوي على كمية محدودة من ذاكرة الوصول العشوائي.
افتراضيًا، يشمل دعم Valet، على سبيل المثال لا الحصر:
ومع ذلك، يمكنك تمديد Valet مع برامج التشغيل المخصصة الخاصة بك (custom drivers).
بيئة Valet أم بيئة Homestead؟
تحدثنا سابقًا عن Laravel Homestead، وهي بيئة تطوير محلية أخرى من Laravel. يختلف Homestead عن Valet فيما يتعلق بالجمهور المستهدف ونهجهم في التطوير المحلي. تقدم Homestead آلة Ubuntu وهمية بالكامل مع ضبط Nginx آلي. تُعدّ Homestead خيارًا رائعًا إذا كنت ترغب في بيئة تطوير لينكس كاملة وهمية أو كنتَ تستخدم ويندووز أو لينكس كجهاز للتطوير.
يدعم Valet أجهزة ماك فقط، ويتطلب منك تثبيت PHP وخادم قاعدة البيانات مباشرة على جهازك المحلي. يتم تحقيق ذلك بسهولة باستخدام Homebrew مع أوامر مثل brew install php
و brew install mysql
. يوفر Valet بيئة تطوير محلية فائقة السرعة بأقل استهلاك للموارد، لذا فهو مثالي للمطورين الذين لا يحتاجون إلا إلى PHP و MySQL ولا يحتاجون إلى بيئة تطوير افتراضية تمامًا.
يعد كل من Valet و Homestead خيارًا رائعًا لضبط بيئة تطوير Laravel. أيهما تختار سوف فذلك يعتمد على ذوقك الشخصي واحتياجات فريقك.
التثبيت
يتطلب Valet نظام ماك وبرمجية Homebrew. قبل التثبيت، يجب التأكد من عدم وجود برامج أخرى مثل Apache أو Nginx تكون مرتبطة مع المنفذ 80 الخاص بجهازك المحلي.
- تثبيت أو تحديث Homebrew إلى أحدث إصدار باستخدام
brew update
. - تثبيت PHP 7.2 باستخدام Homebrew عبر
brew install php@7.2
. - تثبيت Valet مع composer من خلال
composer global require laravel/valet
. تأكد من أن المجلد ~/composer/vendor/bin
موجود في متغير البيئة "PATH
" الخاص بنظامك. - شغل الأمر
valet install
. سيقوم هذا بضبط وتثبيت Valet و DnsMasq، وتسجيل خدمة Valet عند بدء تشغيل النظام.
بمجرد تثبيت Valet، حاول الاستعلام من خلال نطاق test.*
على جهازك باستخدام أمر ping foobar.test
. إذا تم تثبيت Valet بشكل صحيح، فسترى هذا النطاق يستجيب على 127.0.0.1.
سيقوم الخادم تلقائيًا بتشغيل الخدمة في كل مرة يقوم فيها الجهاز بالإقلاع. ليست هناك حاجة لتشغيل valet start
أو valet install
مرة أخرى مرة أخرى بمجرد اكتمال التثبيت Valet لأوّل مرة.
استخدام نطاق آخر
بشكل افتراضي، يخدم Valet مشاريعك باستخدام النطاق الرئيسي .test.. إذا كنت ترغب في استخدام نطاق آخر، فيمكنك القيام بذلك باستخدام الأمر valet domain tld-name
.
على سبيل المثال، إذا كنت ترغب في استخدام .app بدلًا من .test، فشغل valet domain app
و Valet سيبدأ في عرض مشروعاتك على app.*
تلقائيًا.
قاعدة البيانات
إذا كنت بحاجة إلى قاعدة بيانات، فجرّب تثبيت MySQL عن طريق تشغيل brew install mysql على سطر الأوامر الخاص بك. بمجرد تثبيت MySQL، يمكنك بدء تشغيله باستخدام الأمر brew services start mysql
. يمكنك بعد ذلك الاتصال بقاعدة البيانات في 127.0.0.1 باستخدام اسم المستخدم root وسلسلة نصية فارغة لكلمة المرور.
تحديث
يمكنك تحديث تثبيت Valet باستخدام أمر composer global update
في الوحدة الطرفية الخاصة بك. بعد الترقية، من الممارسة الجيدة تشغيل أمر valet install
بحيث يمكن لبرمجية Valet إجراء ترقيات إضافية لملفات التهيئة الخاصة بك إذا لزم الأمر.
الترقية إلى Valet 2.0
Valet 2.0 يقوم بنقل قاعدة بيانات الإنترنت الأساسية الخاصة ببرمجية Valet من Caddy إلى Nginx. قبل الترقية إلى هذه النسخة يفضل أن تقوم بتشغيل الأوامر التالية لكي توقف وتلغي تثبيت الملفات الموجودة والمخفية الخاصة بـ Caddy.
valet stop
valet uninstall
بعد ذلك، يجب عليك الترقية إلى أحدث إصدار من Valet. يتم ذلك عادة من خلال Git أو Composer حسب كيفية تثبيت Valet. إذا ثبّتت Valet عبر Composer، يجب استخدام الأمر التالي للتحديث إلى أحدث إصدار رئيسي:
composer global require laravel/valet
بمجرد تنزيل شفرة مصدر Valet الجديدة، يجب تشغيل أمر install
:
valet install
valet restart
بعد الترقية، قد يكون من الضروري إعادة إيقاف أو إعادة ربط مواقعك.
تخديم المواقع
بمجرد تثبيت Valet، ستكون مستعدًا لبدء عرض المواقع. يوفر Valet أمرين لمساعدتك في تخديم المواقع التي تستخدم Laravel: وهما park
و link
.
الأمر park
- أنشِئ مجلدًا جديدًا على جهاز ماك الخاص بك بتنفيذ أمر شبيه بالأمر
mkdir ~/Sites
. ثم نفِّذ الأمرcd ~/Sites
وشغِّلvalet park
. سيقوم هذا الأمر بتسجيل مجلد العمل الحالي كمسار يجب أن يبحث عنه Valet عن المواقع.
- بعد ذلك، إنشِئ موقع Laravel جديد داخل هذا المجلد:
laravel new blog
.
- افتح http://blog.test في متصفحك.
هذا كل ما في الأمر. الآن، سيُعرَض تلقائيًا أي مشروع Laravel يُنشَأ داخل مجلد "parked" باستخدام http://folder-name.test.
الأمر link
يمكن أيضًا استخدام الأمر link
لتخديم مواقع Laravel الخاصة بك. يفيد هذا الأمر إذا كنت تريد عرض موقع واحد في مجلد وليس المجلد بأكمله.
لاستخدام الأمر، انتقل إلى أحد مشروعاتك وشغّل valet link app-name
في الطرفية. سيقوم Valet بإنشاء وصلة رمزية في ~/.valet/Sites
الذي يشير إلى مجلد العمل الحالي.
بعد تشغيل أمر link، يمكنك الوصول إلى الموقع في متصفحك على http://app-name.test.
لمشاهدة قائمة بكافة المجلدات المرتبطة، شغِّل الأمر valet links
. يمكنك استخدام valet unlink app-name
لإزالة الوصلة الرمزية.
ملاحظة: يمكنك استخدام valet links لتخديم نفس المشروع من نطاقات متعددة (فرعية). لإضافة نطاق فرعي أو مجال آخر إلى مشروعك، شغِّل برنامج valet link subdomain.app-name
من مجلد المشروع.
تأمين المواقع مع TLS
بشكل افتراضي، يخدم Valet المواقع عبر بروتوكول HTTP. ومع ذلك، إذا كنت ترغب في عرض موقع عبر طبقة TLS مشفرة باستخدام HTTP / 2، فاستخدم الأمر secure. على سبيل المثال، إذا كان يُخدَّم موقعك بواسطة Valet على النطاق laravel.test، فيجب تشغيل الأمر التالي لتأمينه:
valet secure laravel
للعودة إلى الموقع"غير الآمن" والعودة إلى تخديم الزيارات عبر بروتوكولHTTP العادي، استخدم الأمر unsecure
. مثل الأمر secure
، يقبل هذا الأمر اسم المضيف الذي ترغب في عدم تأمينه:
valet unsecure laravel
مواقع المشاركة
يتضمن Valet أيضًا أمرًا لمشاركة مواقعك المحلية مع العالم. ليس هناك أي برنامج مطلوب تثبيته بعد تثبيت بيئة Valet.
لمشاركة موقع، انتقل إلى مجلد الموقع في الطرفية الخاصة بك وشغِّل الأمر valet share
. سيُدرَج عنوان URL يمكن الوصول إليه بشكل عام في حافظتك، وسيكون جاهزًا إلى لصقه مباشرة في متصفحك. هذا كل ما في الأمر.
لإيقاف مشاركة موقعك، اضغط على Control+C لإلغاء العملية.
تحذير: لا يدعم valet share حاليًا مشاركة المواقع التي تم تأمينها باستخدام الأمر valet secure
للصفحات.
برامج تشغيل مخصصة لبيئة Valet (Custom Valet Drivers)
يمكنك كتابة "تعريف" Valet الخاص بك لخدمة تطبيقات PHP التي تعمل على إطار آخر أو نظام إدارة محتوى CMS غير معتمد أصلًا من قبل Valet. عند تثبيت Valet، يُنشَأ المجلد ~/.valet/Drivers الذي يحتوي على ملف SampleValetDriver.php
. يحتوي هذا الملف على تطبيق برنامج تشغيل نموذج لشرح كيفية كتابة برنامج تشغيل مخصص. تتطلب كتابة برنامج التشغيل فقط تنفيذ ثلاثة توابع: serves
و isStaticFile
و frontControllerPath
.
تتلقى جميع التوابع الثلاثة قيم $sitePath
و $siteName
و $uri
كوسائط. $sitePath
هو المسار الكامل (fully qualified path) للموقع الذي يتم عرضه على جهازك، مثل /Users/Lisa/Sites/my-project
. $siteName
هو قسم "المضيف" أو "اسم الموقع" النطاق (my-project). $uri
هو URI للطلب الوارد (/foo/bar).
بمجرد الانتهاء من تعريف Valet المخصص، ضعه في المجلد ~/.valet/Drivers
باستخدام اصطلاح التسمية FrameworkValetDriver.php
. على سبيل المثال، إذا كنت تقوم بكتابة تعريف مخصص لووردبريس. فيجب أن يكون اسم ملفك هو WordPressValetDriver.php
.
دعونا نلقي نظرةً على تنفيذ نموذج لكل طريقة يجب أن ينفذها مشغل Valet المخصص.
التابع serves
يجب أن يعيد التابع serves
القيمة true
إذا كان على المشغل الخاص بك أن يتعامل مع الطلب الوارد. خلاف ذلك، يجب أن يرجع القيمة false
. لذا، في هذا التابع يجب أن تحاول تحديد ما إذا كان $sitePath
يحتوي على مشروع من النوع الذي تحاول عرضه.
على سبيل المثال، دعنا نتظاهر أننا نكتب WordPressValetDriver. فقد يبدو التابع serves
لدينا كما يلي:
/**
* تحديد إذا ما كان برنامج التشغيل قد خدم الطلب
*
* @param string $sitePath
* @param string $siteName
* @param string $uri
* @return bool
*/
public function serves($sitePath, $siteName, $uri)
{
return is_dir($sitePath.'/wp-admin');
}
التابع isStaticFile
يجب أن يحدد isStaticFile
ما إذا كان الطلب الوارد هو ملف ثابت (static)، مثل صورة أو ملف أنماط CSS. إذا كان الملف ثابتًا، فيجب أن ترجع الطريقة المسار المؤهل بالكامل إلى الملف الثابت على القرص. إذا لم يكن الطلب الوارد لملف ثابت، فيجب أن يعيد التابع false
:
/**
* تحديد إذا ما كان الطلب القادم لملف ساكن.
*
* @param string $sitePath
* @param string $siteName
* @param string $uri
* @return string|false
*/
public function isStaticFile($sitePath, $siteName, $uri)
{
if (file_exists($staticFilePath = $sitePath.'/public/'.$uri)) {
return $staticFilePath;
}
return false;
}
ملاحظة: لن يستدعى التابع isStaticFile
إلا إذا كان التابع serves يعيد true
للطلب الوارد وإذا لم يكن الطلب URI هو /.
التابع frontControllerPath
يجب أن يعيد التابع frontControllerPath
المسار المؤهل بالكامل إلى "جهاز التحكم الأمامي" الخاص بالتطبيق (front controller)، والذي يكون عادة ملف "index.php
" الخاص بك أو ما يعادله:
/**
* جلب المسار المؤهل بالكامل إلى وحدة تحكم الواجهة
*
* @param string $sitePath
* @param string $siteName
* @param string $uri
* @return string
*/
public function frontControllerPath($sitePath, $siteName, $uri)
{
return $sitePath.'/public/index.php';
}
التعاريف المحلية
إذا كنت ترغب في تعريف برنامج تشغيل Valet مخصص لتطبيق واحد، قم بإنشاء LocalValetDriver.php
في المجلد الجذر للتطبيق. قد يقوم برنامج التشغيل المخصص الخاص بك بتمديد قاعدة ValetDriver الأساسية أو توسيع برنامج التشغيل الخاص بالتطبيق الموجود مثل LaravelValetDriver:
class LocalValetDriver extends LaravelValetDriver
{
/**
*تحديد إذا ما كان برنامج التشغيل قد خدم الطلب
*
* @param string $sitePath
* @param string $siteName
* @param string $uri
* @return bool
*/
public function serves($sitePath, $siteName, $uri)
{
return true;
}
/**
* جلب المسار المؤهل بالكامل إلى وحدة تحكم الواجهة
*
* @param string $sitePath
* @param string $siteName
* @param string $uri
* @return string
*/
public function frontControllerPath($sitePath, $siteName, $uri)
{
return $sitePath.'/public_html/index.php';
}
}
مشغلات أخرى لبيئة Valet
الوصف | الأمر |
---|---|
شغِّل هذا الأمر من مجلد "parked" لإزالته من قائمة الدليل المتوقفة. | valet forget
|
عرض جميع مسارات "parked" الخاصة بك. | valet paths
|
إعادة تشغيل خادم Valet. | valet restart
|
بدء تشغيل برنامج Valet daemon. | valet start
|
إيقاف تشغيل برنامج Valet daemon. | valet stop
|
إلغاء تثبيت برنامج Valet daemon بالكامل. | valet uninstall
|