بيئة 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.
البرامج المضمنة
- Apache (اختياري)
- MySQL
- MariaDB (اختياري)
- Sqlite3
- PostgreSQL
- Composer
- Node (مع Yarn و Bower و Grunt و Gulp)
- Redis
- Memcached
- Beanstalkd
- Mailhog
- 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