بيئة Homestead في Laravel

من موسوعة حسوب

مقدمة  

يسعى Laravel جاهدًا لجعل تجربة تطوير PHP بأكملها مبهجة، بما في ذلك بيئة التطوير المحلية الخاصة بك. يوفر Vagrant طريقة بسيطة وأنيقة لإدارة وتوفير الأجهزة الوهمية.

Laravel Homestead هو عبارة عن منصة وهمية لـ Vargant Box الرسمي، أُنشِئ مسبقًا ويوفر لك بيئة تطوير رائعة دون أن يتطلب منك تثبيت PHP وخادم ويب وأي برنامج خادم آخر على جهازك المحلي. لا داعي للقلق حول تعطل نظام التشغيل الخاص بك! يمكن التخلص من أجهزة رVargant بالكامل. إذا حدث خطأ ما، فيمكنك حذف جهاز Vargant  وإعادة إنشائه في دقائق!

يعمل Homestead على أي نظام سواءً كان ويندوز أو ماك أو لينكس وتتضمن خادم الويب Nginx و PHP 7.2 و PHP 7.1 و PHP 7.0 و PHP 5.6 و MySQL و PostgreSQL و Redis و Memcached و Node وجميع الأشياء الأخرى التي تحتاج إليها تطوير تطبيقات Laravel مذهلة.

إذا كنت تستخدم ويندوز، فقد تحتاج إلى تمكين ميزة التسارع العتادي للأنظمة الوهمية (VT-x). يمكن عادةً تمكينه عبر BIOS الخاص بك. إذا كنت تستخدم Hyper-V على نظام UEFI، فقد تحتاج أيضًا إلى تعطيل Hyper-V من أجل الوصول إلى VT-x.

البرامج المضمنة

  • Neo4j (اختياري)
  • MongoDB (اختياري)
  • Elasticsearch (اختياري)
  • ngrok
  • wp-cli
  • Zend Z-Ray
  • Go
  • Minio

التثبيت والإعداد

الخطوات الأولى

قبل بدء بيئة Homestead الخاصة بك، يجب تثبيت VirtualBox 5.2 أو VMWare أو Parallels أو Hyper-V بالإضافة إلى Vagrant. توفر كافة حزم البرامج هذه برامج تثبيت مرئية سهلة الاستخدام لكافة أنظمة التشغيل الشائعة.

حتى تكون قادراً على استخدام مزود VMware، سوف تحتاج إلى شراء كل من VMware Fusion / Workstation والمنصة الوهمية VMware Vagrant. على الرغم من أنه غير متوافر مجانًا، فإن VMware قادر على تزويد مجلد مشاركة بأداء سريع خارج المنصة.

حتى تستخدم مزود Parallel، سوف تحتاج إلى تثبيت المكون الإضافي وهو Parallels Vagrant. وهو مجاني.

بسبب قيود البيئة الوهمية Vagrant، فإن مزود Hyper-V يتجاهل جميع إعدادات الشبكة.

تثبيت Homestead Vagrant Box

بمجرد تثبيت VirtualBox أو VMware مع Vagrant، يجب إضافة بيئة laravel/homestead إلى تثبيت Vagrant باستخدام الأمر التالي في الطرفية الخاصة بك. سيستغرق تنزيل الملف عدة دقائق، اعتمادًا على سرعة الاتصال بالإنترنت:

vagrant box add laravel/homestead

إذا فشل هذا الأمر، فتأكد من أن تحديث Vagrant محدث.

تثبيت Homestead

يمكنك تثبيت Homestead عن طريق استنساخ المستودع. فكر في استنساخ المستودع في مجلد Homestead داخل مجلد "المنزل"، حيث سيعمل مربع "Homestead" كمضيف لجميع مشاريع Laravel:

git clone https://github.com/laravel/homestead.git ~/Homestead

يجب عليك التحقق من إصدار موسوم من Homestead لأن الفرع master قد لا يكون دائمًا ثابتًا. يمكنك العثور على أحدث إصدار ثابت على صفحة إصدار GitHub:

cd ~/Homestead

//استنساخ الاصدار المطلوب...

git checkout v7.9.0

وبمجرد الانتهاء من استنساخ قاعدة Homestead، شغِّل الأمر bash init.sh من المجلد Homestead لإنشاء ملف ضبط Homestead.yaml. سيوضع ملف Homestead.yaml في المجلد Homestead:

// نظام ماك أو لينكس
bash init.sh
// ويندووز
init.bat

ضبط Homestead

إعداد مقدّم الخدمة الخاص بك

يشير مفتاح provider في ملف Homestead.yaml الخاص بك إلى مزود الذي يفترض على Vargant أن يستخدمه: virtualbox أو vmware_fusion أو vmware_workstation parallels أو hyperv. بإمكانك أن تحدد هذا إلى المزود الذي ترغب به:

provider: virtualbox

ضبط المجلدات المشتركة

تحتوي الخاصية folders الخاصة بملف Homestead.yaml على جميع المجلدات التي ترغب في مشاركتها مع بيئة العمل Homestead الخاصة بك. والملفات الموجودة في هذه المجلدات ستتغير، سوف تبقى محفوظة في عملية مزامنة بين الجهاز المحلي وبيئة Homestead. وربما ستقوم بضبط العديد من الملفات المشتركة حسب الضرورة:

folders:

   - map: ~/code
        to: /home/vagrant/code

إذا كنت تُنشِئ بعض المواقع الإلكترونية لنفسك،  فستكون بنية المجلدات الافتراضية مناسبة لك. وبالرغم من ذلك، لمّا أن أعداد المواقع الإلكترونية مستمر في النمو، فربما ستبدأ في اكتساب خبرة لأداء المشاكل. هذه المشكلة ستظهر بشكل واضح ومؤلم على الأجهزة الضعيفة أو المشاريع التي تحتوي على عدد كبير من الملفات. اذا كنت على دراية بهذه المشكلة، حاول أن تربط كل مشروع إلى مجلد Vargant مخصص له:

folders:
    - map: ~/code/project1
      to: /home/vagrant/code/project1

    - map: ~/code/project2
      to: /home/vagrant/code/project2

لتمكين NFS، سوف تحتاج لإضافة علامة بسيطة على الملف المتزامن مع ملف الضبط:

folders:
    - map: ~/code
      to: /home/vagrant/code
      type: "nfs"

عند استخدام NFS، يجب أن تضع في الحسبان تثبيت البرنامج المساعد vagrant-bindfs. سيحافظ هذا المكون الإضافي على أذونات المستخدمين , المجموعات الصحيحة للملفات والمجلدات داخل بيئة Homestead. يمكنك أيضًا تمرير أي خيار مدعوم بواسطة المجلدات المتزامنة في بيئة Vagrant بوضعها تحت مفتاح option:

folders:
    - map: ~/code
      to: /home/vagrant/code
      type: "rsync"
      options:
          rsync__args: ["--verbose", "--archive", "--delete", "-zz"]
          rsync__exclude: ["node_modules"]

ضبط مواقع Nginx

لست على معرفة بخادم Nginx؟ ليس هناك أى مشكلة. تسمح لك خاصية sites تعيين "نطاق"  (domain) بسهولة إلى مجلد في بيئة Homestead الخاصة بك. يتم ضم ضبط عينة موقع في ملف Homestead.yaml. مرة أخرى، يمكنك إضافة العديد من المواقع إلى بيئة Homestead حسب الضرورة. يمكن أن تكون Homestead بمثابة بيئة ملائمة ومحاكاة لكل مشروع Laravel تعمل عليه:

sites:
    - map: homestead.test
      to: /home/vagrant/code/Laravel/public

إذا قمت بتغيير خاصية sites بعد تزويد بيئة Homestead، فيجب إعادة تشغيل vagrant reload --provision لتحديث ضبط Nginx على الجهاز الوهمي.

ملف الاستضافات

يجب إضافة "النطاقات" لمواقع Nginx إلى ملف hosts على جهازك. سيقوم ملف hosts بإعادة توجيه طلبات مواقع Homestead إلى جهاز Homestead الخاص بك. في نظامي التشغيل ماك ولينكس، يوجد هذا الملف في etc/hosts/. أما على نظام التشغيل ويندوز، فهو موجود في C:\Windows\System32\drivers\etc\hosts. ستظهر الخطوط التي تضيفها إلى هذا الملف كما يلي:

192.168.10.10  homestead.test

تأكد من أن عنوان IP المدرج هو الذي تم تعيينه في ملف Homestead.yaml الخاص بك. بمجرد أن تقوم بإضافة النطاق إلى ملف hosts الخاص بك والبدء بتشغيل بيئة Vagrant، ستتمكن من الوصول إلى الموقع عبر متصفح الويب الخاص بك:

http://homestead.test

تشغيل بيئة  Vagrant

بمجرد أن تحرر Homestead.yaml حسب رغبتك، شغِّل الأمر vagrant up من داخل مجلد Homestead الخاص بك. سوف يقوم Vagrant بتمهيد الجهاز الوهمي ويقوم تلقائيًا بضبط مجلداتك المشتركة ومواقع Nginx.

لإغلاق الجهاز، يمكنك استخدام الأمر vagrant destroy --force.

قبل تثبيت المشروع

بدلًا من تثبيت Homestead على كامل النظام ومشاركة Homestead نفسه عبر جميع المشروعات، يمكنك بدلًا من ذلك تهيئة نسخة Homestead لكل مشروع تديره. قد يكون تثبيت Homestead لكل مشروع مفيدًا إذا كنت ترغب في شحن Vagrantfile مع مشروعك، مما يسمح للآخرين العاملين في المشروع أن يستعملوه مباشرةً عبر الأمر vagrant up.

لتثبيت Homestead مباشرة في مشروعك، اطلبه باستخدام Composer:

composer require laravel/homestead --dev

بمجرد تثبيت Homestead، استخدم الأمر make لإنشاء ملف Vagrantfile و Homestead.yaml في جذر مشروعك. سيقوم الأمر make بضبط توجيهات folders و sites في ملف Homestead.yaml تلقائيًا. على أنظمة لينكس أو ماك:

php vendor/bin/homestead make

على نظام ويندوز:

vendor\\bin\\homestead make

بعد ذلك، قم بتشغيل الأمر vagrant up والوصول إلى مشروعك على http://homestead.test في متصفحك. تذكر أنك ستظل بحاجة إلى إضافة إدخال ملف /etc/hosts لـ homestead.test أو النطاق الذي تختاره.

تثبيت MariaDB

إذا كنت تفضل استخدام قاعدة البيانات MariaDB بدلاً من MySQL، فيمكنك إضافة خيار MariaDB إلى ملف Homestead.yaml الخاص بك. سيؤدي هذا الخيار إلى إزالة MySQL وتثبيت MariaDB. يعمل MariaDB كبديل بديل عن MySQL لذا يجب عليك استخدام برنامج تشغيل قاعدة بيانات MySQL في ضبط قاعدة بيانات التطبيق الخاص بك:

box: laravel/homestead
ip: "192.168.10.10"
memory: 2048
cpus: 4
provider: virtualbox
mariadb: true

تثبيت قاعدة بيانات MongoDB

لتثبيت إصدار MongoDB Community قم بتحديث ملف Homestead.yaml الخاص بك مع خيار الضبط التالي:

mongodb: true

تثبيت قاعدة بيانات MongoDB الافتراضي سيعمل على إعادة تعيين اسم مستخدم إلى homestead و كلمة مرور مطابقة إلى secret.

تثبيت Elasticsearch

لتثبيت Elasticsearch، أضف خيار elasticsearch إلى ملف Homestead.yaml وحدد إصدارًا مدعومًا، والذي قد يكون إصدارًا رئيسيًا أو رقم إصدار دقيق (major.minor.patch). سوف ينشئ التثبيت الافتراضي شبكةً عنقوديةً (cluster) باسم "homestead". يجب ألا تعطي Elasticsearch أبداً أكثر من نصف ذاكرة نظام التشغيل، لذا تأكد من أن جهاز Homestead الخاص به لديه على الأقل ضعف المخصص لنظام Elasticsearch:

box: laravel/homestead
ip: "192.168.10.10"
memory: 4096
cpus: 4
provider: virtualbox
elasticsearch: 6

راجع توثيق Elasticsearch للتعرف على كيفية تخصيص الضبط الخاص بك.

تثبيت Neo4j

Neo4j هو نظام إدارة قواعد البيانات الرسومية. لتثبيت إصدار Neo4j Community قم بتحديث ملف Homestead.yaml الخاص بك مع خيار الضبط التالي:

neo4j: true

سيقوم الإعداد الافتراضي Neo4j بتعيين اسم المستخدم لقاعدة البيانات إلى homestead وكلمة المرور المطابقة إلى secret. للوصول إلى متصفح Neo4j، قم بزيارة http://homestead.test:7474 عبر متصفح الويب الخاص بك. المنافذ 7687 (Bolt) و 7474 (HTTP) و 7473 (HTTPS) على استعداد لتقديم طلبات من عميل Neo4j.

الأسماء البديلة

يمكنك إضافة الأسماء البديلة (aliases) لصدفة Bash إلى الجهاز Homestead الخاص بك عن طريق تعديل ملف aliases داخل دليل Homestead الخاص بك:

alias c='clear'
alias ..='cd ..'

بعد تحديثك لملف aliases، يجب إعادة توفير جهاز الجهاز الرئيسي باستخدام أمر vagrant reload --provision. سيضمن ذلك توفر الأسماء البديلة الجديدة على الجهاز.

الاستخدام اليومي

الوصول إلى Homestead العام

في بعض الأحيان قد ترغب في تشغيل vagrant up على جهاز Homestead الخاص بك من أي مكان على نظام الملفات الخاص بك. يمكنك القيام بذلك على أنظمة ماك أو لينكس بإضافة دالة Bash إلى ملف تعريف Bash الخاص بك (Bash profile). أما على ويندوز، قد تحقق هذا من خلال إضافة ملف "batch" إلى المتغير PATH الخاص بك. تتيح لك هذه البرامج النصية تشغيل أي أمر Vagrant من أي مكان على نظامك وسوف تقوم تلقائيًا بتوجيه ذلك الأمر إلى تثبيت Homestead:

نظام ماك أو لينكس

function homestead() {

   ( cd ~/Homestead && vagrant $* )

}

تأكد من ضبط مسار ‎~/Homestead في الوظيفة إلى موقع التثبيت الفعلي لبرمجية Homestead. بمجرد إضافة الدالة، يمكنك تشغيل أوامر مثل homestead up أو homestead ssh من أي مكان على نظامك.

نظام ويندوز

أنشِئ الملف homestead.bat في أي مكان على جهازك مع المحتويات التالية:

@echo off
set cwd=%cd%
set homesteadVagrant=C:\Homestead
cd /d %homesteadVagrant% && vagrant %*
cd /d %cwd%
set cwd=
set homesteadVagrant=

تأكد من تعديل المثال C:\Homestead في البرنامج النصي إلى الموقع الفعلي لتثبيت Homestead الخاص بك. بعد إنشاء الملف، أضف موقع الملف إلى PATH الخاص بك. يمكنك بعد ذلك تشغيل أوامر مثل homestead up أو homestead ssh من أي مكان على نظامك.

الاتصال عبر SSH

يمكنك وضع SSH في جهازك الافتراضي بتنفيذ الأمر ssh vagrant من مجلد Homestead الخاص بك.

ولكن لمّا كنت ستحتاج على الأرجح إلى SSH في جهاز Homestead الخاص بك بشكل متكرر، فجرّب إضافة "الدالة" المذكورة أعلاه إلى جهازك المضيف إلى SSH بسرعة في بيئة Homestead.

الاتصال بقواعد البيانات

تكون قاعدة بيانات homestead لكل من MySQL و PostgreSQL مضبوطةً افتراضيًا. لراحة أكبر، ضبط ملف .env Laravel. لاستخدام قاعدة البيانات مع إطار العمل مباشرةً.

للاتصال بقاعدة بيانات MySQL أو PostgreSQL من عميل قاعدة بيانات جهازك المضيف، يجب عليك الاتصال بالمضيف 127.0.0.1 والمنفذ 33060 (MySQL) أو 54320 (PostgreSQL). اسم المستخدم وكلمة المرور لكل من قواعد البيانات هو homestead / secret.

يجب عليك فقط استخدام هذه المنافذ غير القياسية عند الاتصال بقواعد البيانات من الجهاز المضيف. ستستخدم المنفذين 3306 و 5432 الافتراضيين في ملف ضبط قاعدة بيانات Laravel نظرًا لأن Laravel يعمل داخل الجهاز الظاهري.

النسخ الاحتياطي لقاعدة البيانات

يستطيع Homestead أن يعمل على نسخ قاعدة البيانات الخاصة بك بشكل تلقائي عندما يتم حذف جهاز Vargant. للاستفادة من هذه الميزة، يجب أن تستخدم Vagrant 2.1.0 أو أعلى. أو، إذا كنت تستخدم إصدارًا قديمًا من Vagrant، فيجب عليك تثبيت الإضافة vagrant-triggers. لتمكين النسخ الاحتياطي التلقائي لقاعدة البيانات، أضف السطر التالي إلى ملف Homestead.yaml:

backup: true.

بمجرد انتهاء عملية الضبط، سيُصدِّر Homestead قواعد البيانات إلى مجلدي mysql_backup و postgres_backup عند تنفيذ الأمر vagrant destroy. يمكن العثور على هذه المسارات في المجلد حيث قمت باستنساخ Homestead أو في جذر المشروع إذا كنت تستخدم أسلوب التثبيت لكل مشروع.

إضافة مواقع أخرى

بمجرد أن يتم توفير بيئة Homestead وتشغيلها، قد ترغب في إضافة مواقع Nginx إضافية لتطبيقات Laravel الخاصة بك. يمكنك تشغيل أكبر عدد ممكن من عمليات Laravel كما تريد في بيئة واحدة في Homestead. لإضافة موقع إضافي، أضف الموقع إلى ملف Homestead.yaml الخاص بك:

sites:

   - map: homestead.test
     to: /home/vagrant/code/Laravel/public

   - map: another.test
     to: /home/vagrant/code/another/public

إذا كان Vagrant لا يدير ملف "hosts" الخاص بك تلقائيًا، فقد تحتاج إلى إضافة الموقع الجديد إلى ذلك الملف أيضًا:

192.168.10.10  homestead.test
192.168.10.10  another.test

بمجرد إضافة الموقع، شغِّل الأمر vagrant reload –provision من مجلد Homestead الخاص بك.

أنواع الموقع

تدعم Homestead عدة أنواع من المواقع التي تسمح لك بتشغيل المشاريع التي لا تعتمد على Laravel بسهولة. على سبيل المثال، يمكننا بسهولة إضافة تطبيق Symfony إلى Homestead باستخدام نوع موقع symfony2:

sites:

   - map: symfony2.test
     to: /home/vagrant/code/Symfony/web
     type: "symfony2"

أنواع المواقع المتاحة هي: apache و apigility و expressive و laravel (الافتراضي) و proxy و silverstripe و statamic و symfony2 و symfony4 و zf.

مقاييس الموقع

يمكنك إضافة قيم Nginx fastcgi_param إضافية إلى موقعك عبر توجيه موقع params. على سبيل المثال، سنقوم بإضافة المعامل FOO بقيمة BAR:

sites:

   - map: homestead.test
     to: /home/vagrant/code/Laravel/public
     params:
         - key: FOO
           value: BAR

متغيرات البيئة

يمكنك تعيين متغيرات البيئة العامة عن طريق إضافتها إلى ملف Homestead.yaml الخاص بك:

variables:

   - key: APP_ENV
     value: local

   - key: FOO
     value: bar

بعد تحديث Homestead.yaml، تأكد من تطبيق هذا الضبط على الجهاز عن طريق تشغيل vagrant reload --provision. سيؤدي ذلك إلى تحديث تهيئة PHP-FPM لكافة إصدارات PHP المثبتة وكذلك تحديث البيئة للمستخدم vagrant.

ضبط جداول Cron

يوفر Laravel طريقة ملائمة لجدولة وظائف Cron من خلال جدولة schedule:run بشكل فردي من خلال أمر Artisan ليتم تشغيله كل دقيقة. سوف يفحص schedule:run جدولة المهام المحددة في فئة التطبيق App\Console\Kernel لتحديد المهام التي يجب تشغيلها.

إذا كنت ترغب في تشغيل الأمر schedule:run ليتم تشغيله لموقع Homestead، فيمكنك تعيين خيار schedule على true عند تحديد الموقع:

sites:

   - map: homestead.test
     to: /home/vagrant/code/Laravel/public
     schedule: true

ستُعرَّف مهمة Cron الخاصة بالموقع في المجلد etc/cron.d/ الخاص بالجهاز الوهمي.

ضبط Mailhog

Mailhog يسمح لك لالتقاط البريد الإلكتروني الخاص بك بسهولة وفحصها دون بالفعل إرسال البريد إلى المستلمين. للبدء، حدِّث ملف ‎.env الخاص بك لاستخدام إعدادات البريد التالية:

MAIL_DRIVER=smtp
MAIL_HOST=localhost
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

ضبط Minio

يوفر Minio طبقة تخزين متوافقة مع S3 على جهازك Homestead عبر منفذ 9600. لاستخدام Minio، حدِّث ملف Homestead.yaml الخاص بك مع خيار الضبط التالي:

minio: true

بشكل افتراضي، يتوافر Minio على المنفذ 9600. يمكنك الوصول إلى لوحة التحكم Minio بالانتقال إلى http://homestead: 9600. مفتاح الوصول الافتراضي هو homestead، في حين أن المفتاح السري الافتراضي هو secretkey. عند الوصول إلى Minio، يجب دائمًا استخدام المنطقة us-east-1. بعد ذلك، ستحتاج إلى ضبط تهيئة القرص S3 في ملف الضبط config/filesystems.php الخاص بك. يجب إضافة خيار use_path_style_endpoint إلى ضبط القرص، بالإضافة إلى تحديث مفتاح عنوان url إلى endpoint:

's3' => [

   'driver' => 's3',
   'key' => env('AWS_ACCESS_KEY_ID'),
   'secret' => env('AWS_SECRET_ACCESS_KEY'),
   'region' => env('AWS_DEFAULT_REGION'),
   'bucket' => env('AWS_BUCKET'),
   'endpoint' => env('AWS_URL'),
   'use_path_style_endpoint' => true

]

أخيرًا، يجب تحديث ملف ‎.env باستخدام AWS_URL الصحيح:

AWS_ACCESS_KEY_ID=homestead
AWS_SECRET_ACCESS_KEY=secretkey
AWS_DEFAULT_REGION=us-east-1
AWS_URL=http://homestead:9600

البوابات

بشكل افتراضي، يُعاد توجيه المنافذ التالية إلى بيئة Homestead الخاصة بك:

  • SSH: 2222: يُمرَّر إلى 22
  • ngrok UI: 4040 : يُمرَّر إلى 4040
  • HTTP: 8000: يُمرَّر إلى 80
  • HTTPS: 44300: يُمرَّر إلى 443
  • MySQL: 33060: يُمرَّر إلى 3306
  • PostgreSQL: 54320: يُمرَّر إلى 5432
  • MongoDB: 27017: يُمرَّر إلى 27017
  • Mailhog: 8025: يُمرَّر إلى 8025
  • Minio: 9600 : يُمرَّر إلى 9600

إعادة توجيه المنافذ الإضافية

إذا كنت ترغب في ذلك، فيمكنك إعادة توجيه منافذ إضافية إلى جهاز Vagrant، بالإضافة إلى تحديد البروتوكول الخاص بها:

ports:

   - send: 50000
     to: 5000

   - send: 7777
     to: 777

     protocol: udp

مشاركة البيئة الخاصة بك

قد ترغب في بعض الأحيان في مشاركة ما تعمل عليه حاليًا مع زملاء العمل أو العميل. يمتلك Vagrant طريقةً مدمجةً لدعم هذا عن طريق vagrant share؛ ومع ذلك، لن يعمل هذا إذا كان لديك مواقع متعددة تمت تهيئتها في ملف Homestead.yaml الخاص بك.

لحل هذه المشكلة، تتضمن Homestead أمر share الخاص بها. لتبدأ، سجِّل دخولك عبر SSH إلى جهاز Homestead الخاص بك عبر vagrant ssh وشغِّل share homestead.test. سيؤدي هذا إلى مشاركة موقع homestead.test من ملف إعدادات Homestead.yaml. بالطبع، يمكنك استبدال أي من مواقعك الأخرى التي تمت تهيئتها على homestead.test:

share homestead.test

بعد تشغيل الأمر، سترى شاشة Ngrok تظهر والتي تحتوي على سجل النشاط وعناوين URL المتاحة للعموم للموقع المشترك. إذا كنت ترغب في تحديد منطقة مخصصة، أو نطاق فرعي، أو خيار وقت تشغيل Ngrok، فيمكنك إضافتها إلى أمر share الخاص بك:

share homestead.test -region=eu -subdomain=laravel

تحذير: تذكر أن Vagrant غير آمن بطبيعته، وستُعرَّض جهازك الوهمي إلى الإنترنت عند تشغيل الأمر share.

إصدارات متعددة من PHP

ملاحظة: هذه الميزة متوافقة فقط مع Nginx.

قدمت Homestead 6 الدعم للإصدارات المتعددة من PHP على نفس الجهاز الوهمي.. يمكنك تحديد أي إصدار من PHP لاستخدامه لموقع معين داخل ملف Homestead.yaml الخاص بك. إصدارات PHP المتاحة هي: "5.6" و "7.0" و "7.1" و "7.2" (الافتراضي):

sites:

   - map: homestead.test
     to: /home/vagrant/code/Laravel/public
     php: "5.6"

بالإضافة إلى ذلك، يمكنك استخدام أي من إصدارات PHP المدعومة عبر CLI:

php5.6 artisan list
php7.0 artisan list
php7.1 artisan list
php7.2 artisan list

خوادم الويب

تستخدم Homestead خادم الويب Nginx بشكل افتراضي. ومع ذلك، يمكن تثبيت Apache إذا تم تحديد apache كنوع موقع. بينما يمكن تثبيت كلا خادمَي الويب في نفس الوقت، لا يمكن تشغيل كلاهما في نفس الوقت. يتوفر الأمر flip لتسهيل عملية التبديل بين خوادم الويب. يقوم الأمر flip تلقائيًا بتحديد خادم الويب الذي يعمل، وإيقاف تشغيله، ثم بدء تشغيل الخادم الآخر. لاستخدام هذا الأمر، سجِّل دخولك عبر SSH إلى جهاز Homestead الخاص بك وشغِّل الأمر في الطرفية الخاصة بك:

flip

البريد

يشمل Homestead عميل نقل البريد Postfix، والذي يستمع على المنفذ 1025 بشكل افتراضي. لذلك، يمكنك إرشاد التطبيق الخاص بك لاستخدام برنامج تشغيل البريد smtp على منفذ localhost 1025. ثم سيتم التعامل مع كافة البريد المرسلة بواسطة Postfix ويتم اكتشافها بواسطة Mailhog. لعرض رسائل البريد الإلكتروني المرسلة، افتح http://localhost:8025 في متصفح الويب الخاص بك.

واجهات الشبكة

تقوم الخاصية networks في الملفـ Homestead.yaml بضبط واجهات شبكة الاتصال لبيئة بيئة العمل الخاصة بك. يمكنك ضبط العديد من الواجهات حسب الضرورة:

networks:

   - type: "private_network"
     ip: "192.168.10.20"

لتمكين الواجهة المدمجة، اضبط الخيار bridge وغيّر نوع الشبكة إلى public_network:

networks:

   - type: "public_network"
     ip: "192.168.10.20"
     bridge: "en1: Wi-Fi (AirPort)"

لتمكين DHCP، أزل الخيار ip من الضبط الخاص بك:

networks:

   - type: "public_network"
     bridge: "en1: Wi-Fi (AirPort)"

تمديد Homestead

يمكنك تمديد Homestead باستخدام البرنامج النصي after.sh في جذر دليل Homestead. ضمن هذا الملف ، يمكنك إضافة أي أوامر shell ضرورية لتكوين جهازك الوهمي وتخصيصه بشكل صحيح.

عند تخصيص Homestead ، قد يسألك Ubuntu عما إذا كنت ترغب في الاحتفاظ بتكوين الحزمة الأصلي أو الكتابة فوقه بملف تكوين جديد. لتجنب ذلك ، يجب عليك استخدام الأمر التالي عند تثبيت الحزم لتجنب الكتابة فوق أي تكوين سبق أن كتبه Homestead:

sudo apt-get -y \
    -o Dpkg::Options::="--force-confdef" \
    -o Dpkg::Options::="--force-confold" \
    install your-package

تحديث Homestead

يمكنك تحديث Homestead في خطوتين بسيطتين. أولاً، يجب تحديث بيئة Vagrant باستخدام الأمر :

vagrant box update

بعد ذلك، تحتاج إلى تحديث شيفرة Homestead المصدرية. إذا قمت باستنساخ المستودع، يمكنك تنفيذ الأمر git pull origin master في المسار الذي قمت في الأصل باستنساخ المستودع.

إذا ثبّتَ Homestead عبر ملف composer.json للمشروع، يجب التأكد من أن ملف composer.json يحتوي على "laravel/homestead": "^7" ثم حدِّث الاعتماديات الخاصة بك:

composer update

إعدادات محددة للمزود

VirtualBox

natdnshostresolver

بشكل افتراضي، يقوم Homestead بضبط إعداد natdnshostresolver إلى on. يسمح ذلك لبرمجية Homestead باستخدام إعدادات DNS لنظام التشغيل المضيف. إذا كنت ترغب في تجاوز هذا السلوك، فأضف الأسطر التالية إلى ملف Homestead.yaml:

provider: virtualbox
natdnshostresolver: off

الروابط الرمزية على نظام ويندوز

إذا لم تعمل الارتباطات الرمزية (symbolic links) بشكل صحيح على نظام ويندوز الخاص بك، فقد تحتاج إلى إضافة كتلة الضبط التالية إلى Vagrantfile:

config.vm.provider "virtualbox" do |v|

   v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"]

end

مصادر