تثبيت Homestead وإعداده لتشغيل تطبيقات Laravel
مقدمة
يُعد Laravel من أشهر أطر العمل لتطوير تطبيقات الويب باستخدام لغة PHP، ويتميز بسهولة الاستخدام والوضوح في البنية البرمجية. ومن أجل تطوير تطبيقات Laravel بكفاءة عالية وببيئة متكاملة، يُوصى باستخدام Laravel Homestead، وهو بيئة تطوير افتراضية معدّة مسبقًا تعتمد على Vagrant وVirtualBox، وتأتي مزودة بجميع الأدوات اللازمة لتشغيل Laravel مثل PHP، MySQL، Nginx، وRedis. يهدف هذا المقال إلى شرح خطوات تثبيت Homestead وإعداده بشكل مفصل، بحيث يتمكن المطوّر من العمل على مشاريع Laravel ضمن بيئة مرنة وآمنة تشبه بيئة الإنتاج.
المتطلبات الأساسية لتثبيت Homestead
قبل الشروع في تثبيت Homestead، هناك بعض المتطلبات الأساسية التي يجب أن تكون متوفرة على جهاز المطوّر، وهي:
-
نظام تشغيل مدعوم (Windows, macOS, Linux)
-
PHP (يفضّل إصدار 8.1 أو أعلى)
-
Git
-
VirtualBox أو VMWare (لإدارة الجهاز الافتراضي)
-
Vagrant (أداة التحكم في الأجهزة الافتراضية)
يُفضل أيضًا تثبيت Composer، مدير الحزم الرسمي للـ PHP، الذي يسهل عملية إدارة تبعيات Laravel.
الخطوة الأولى: تثبيت الأدوات الأساسية
تثبيت VirtualBox
VirtualBox هو برنامج مفتوح المصدر يسمح بإنشاء وتشغيل أجهزة افتراضية. لتثبيته:
-
التوجه إلى الموقع الرسمي: https://www.virtualbox.org/
-
تحميل النسخة المناسبة لنظام التشغيل.
-
تشغيل ملف التثبيت واتباع التعليمات.
تثبيت Vagrant
Vagrant هو أداة لإدارة الأجهزة الافتراضية وتكوينها باستخدام ملفات إعدادات (Vagrantfile). لتثبيته:
-
زيارة: https://www.vagrantup.com/
-
تحميل النسخة المتوافقة مع نظام التشغيل.
-
تنفيذ ملف التثبيت وتأكيد نجاح التثبيت عبر تنفيذ الأمر:
bashvagrant --version
الخطوة الثانية: تثبيت Homestead
طريقة 1: استخدام Homestead كـ Box مستقل (Standalone)
الطريقة الرسمية والأكثر شيوعًا لتثبيت Homestead هي عبر تحميل الصندوق (box) الجاهز من Laravel.
1. إضافة Homestead Box إلى Vagrant
bashvagrant box add laravel/homestead
ستقوم هذه الخطوة بتنزيل الصندوق الأساسي من الإنترنت، وهو يحتوي على بيئة Linux مهيأة لتشغيل Laravel.
2. استنساخ مستودع Homestead من GitHub
bashgit clone https://github.com/laravel/homestead.git ~/Homestead
بعد تنزيل الملفات، يجب الدخول إلى مجلد Homestead وتشغيل سكربت الإعداد:
bashcd ~/Homestead
bash init.sh
هذا السكربت يقوم بإنشاء ملف إعدادات Homestead.yaml في مجلد المستخدم الرئيسي.
الخطوة الثالثة: إعداد Homestead.yaml
شرح مكونات Homestead.yaml
الملف Homestead.yaml هو مركز التحكم الرئيسي في كيفية إعداد الجهاز الافتراضي. فيما يلي مثال نموذجي للملف:
yamlip: "192.168.10.10"
memory: 2048
cpus: 2
provider: virtualbox
authorize: ~/.ssh/id_rsa.pub
keys:
- ~/.ssh/id_rsa
folders:
- map: ~/Projects/Laravel
to: /home/vagrant/code
sites:
- map: laravel.test
to: /home/vagrant/code/public
databases:
- homestead
شرح الإعدادات:
-
ip: عنوان الـ IP الخاص بالجهاز الافتراضي (يُستخدم لربط النطاق). -
memory: حجم الذاكرة المخصصة. -
cpus: عدد أنوية المعالج. -
authorizeوkeys: مفاتيح SSH لتمكين الوصول. -
folders: ربط مجلد على الجهاز المضيف مع الجهاز الافتراضي. -
sites: تعريف المواقع التي ستعمل على الجهاز الافتراضي. -
databases: إنشاء قاعدة بيانات تلقائيًا عند تشغيل الجهاز.
الخطوة الرابعة: تحديث ملف hosts
لكي يعمل النطاق المحلي (مثل laravel.test)، يجب تحديث ملف hosts على نظام التشغيل:
على نظام macOS / Linux:
bashsudo nano /etc/hosts
على Windows:
bashC:\Windows\System32\drivers\etc\hosts
ثم أضف السطر التالي:
192.168.10.10 laravel.test
هذا يربط النطاق laravel.test بعنوان IP الخاص بالجهاز الافتراضي.
الخطوة الخامسة: تشغيل Homestead
بعد إكمال الإعداد، يمكن تشغيل الجهاز الافتراضي بالأمر:
bashvagrant up
وهذا يؤدي إلى:
-
تشغيل الجهاز الافتراضي باستخدام VirtualBox.
-
تحميل مجلد المشروع من الجهاز المحلي.
-
تشغيل خوادم Nginx وPHP-FPM وMySQL وغيرها.
للدخول إلى الجهاز الافتراضي:
bashvagrant ssh
وبهذا تكون البيئة جاهزة لتشغيل Laravel.
الخطوة السادسة: تثبيت مشروع Laravel داخل Homestead
بمجرد الدخول إلى Homestead باستخدام vagrant ssh، يمكن الانتقال إلى مجلد العمل:
bashcd code
ثم تثبيت Laravel باستخدام Composer:
bashcomposer create-project laravel/laravel myApp
بعد الانتهاء من التثبيت، يمكن الوصول إلى التطبيق عبر المتصفح على:
arduinohttp://laravel.test
مع مراعاة أن يكون to في Homestead.yaml يشير إلى مجلد public داخل مشروع Laravel الجديد.
تخصيص البيئة ودعم الميزات المتقدمة
دعم قواعد بيانات متعددة
Homestead يدعم MySQL وPostgreSQL وSQLite وMariaDB. لتفعيل PostgreSQL مثلًا، يمكن تعديل ملف Homestead.yaml:
yamldatabases:
- homestead
- blogdb
عند تشغيل vagrant up --provision يتم إنشاء القواعد تلقائيًا.
دعم Redis وMemcached
كلا الخادمين مثبتان مسبقًا ضمن Homestead. ويمكن ربط Laravel بهما مباشرة عبر ملف .env:
envCACHE_DRIVER=redis QUEUE_CONNECTION=redis
دعم Node.js وNPM وYarn
بما أن Homestead مبني على Ubuntu، فهو يدعم أدوات الواجهة الأمامية. يمكن تثبيت Vue.js أو React بسهولة:
bashnpm install npm run dev
استخدام Homestead مع عدة مشاريع
يمكن تشغيل عدة مشاريع Laravel على Homestead من خلال إضافة أكثر من تعريف داخل مفتاح sites في Homestead.yaml:
yamlsites:
- map: project1.test
to: /home/vagrant/code/project1/public
- map: project2.test
to: /home/vagrant/code/project2/public
وتعديل ملف hosts:
192.168.10.10 project1.test 192.168.10.10 project2.test
بعد حفظ التعديلات، يجب تشغيل الأمر:
bashvagrant reload --provision
لإعادة تحميل الإعدادات.
صيانة Homestead وإدارتها
تحديث Homestead Box
يمكن تحديث الصندوق الأساسي باستخدام:
bashvagrant box update
إيقاف الجهاز الافتراضي
bashvagrant halt
إعادة تشغيل الجهاز الافتراضي
bashvagrant reload
حذف الجهاز الافتراضي بالكامل
bashvagrant destroy
الجدول: مقارنة بين Homestead وبيئات تطوير أخرى
| الميزة | Homestead | XAMPP/WAMP | Docker |
|---|---|---|---|
| الدعم الرسمي من Laravel | نعم | لا | لا |
| سهولة الإعداد | متوسط | سهل | صعب للمبتدئين |
| الأداء | جيد جداً | متوسط | ممتاز |
| إمكانية التوسع | عالي | محدود | عالي جداً |
| دعم Redis وPostgreSQL | نعم | لا (يتطلب إعداد يدوي) | نعم |
| التوافق مع البيئة الحقيقية | عالي جداً | منخفض | عالي جداً |
خاتمة تقنية
يوفر Homestead بيئة تطوير موحدة، متكاملة وآمنة، تعكس بدرجة كبيرة بيئة الإنتاج. باستخدام Vagrant وVirtualBox، يمكن عزل مشاريع Laravel عن النظام الأساسي للمطور، مما يقلل من مشكلات التوافق ويحسن الإنتاجية. يُعد تثبيت Homestead خطوة حاسمة لأي مطور Laravel جاد في الحصول على تجربة تطوير أكثر احترافية وتنظيماً، وهو يُفضّل بشدة على أدوات السيرفرات المحلية البسيطة مثل XAMPP أو MAMP.
المراجع:
-
Laravel Documentation – https://laravel.com/docs
-
Homestead GitHub – https://github.com/laravel/homestead

