إنشاء وتشغيل مشروع Laravel باستخدام ServBay
لمحة عامة
ServBay هو بيئة تطوير ويب محلية قوية مصممة خصيصًا لنظام macOS، وتجمع بين حزم برمجية شهيرة مثل PHP وNode.js وPython وGo وJava، مع دعم لأنواع متعددة من قواعد البيانات (MySQL، PostgreSQL، MongoDB)، وخدمات التخزين المؤقت مثل Redis وMemcached، إلى جانب خوادم الويب (Caddy، Nginx، Apache).
ستتعلم من خلال هذا الدليل كيفية إنشاء وتكوين وتشغيل مشروع Laravel بسرعة باستخدام ServBay، مستفيدًا من PHP المدمج، ومدير الحزم Composer، وإدارة المواقع الديناميكية التي توفرها الأداة لتسهيل العملية على المطورين.
ما هو Laravel؟
Laravel هو إطار عمل ويب شهير ومفتوح المصدر قائم على لغة PHP أطلقه Taylor Otwell. يعتمد على نمط البرمجة MVC (النموذج - العرض - المتحكم) ويوفر مجموعة كبيرة من الوظائف الجاهزة التي تُسهّل العمليات الشائعة مثل التوثيق للمستخدمين، التوجيه، التحكم في الجلسات، التخزين المؤقت، والتعامل مع قواعد البيانات. يشتهر Laravel ببنيته الأنيقة وواجهته السهلة وبيئته الثرية النشطة، ما يجعله من أفضل الخيارات لبناء تطبيقات ويب حديثة وسهلة الصيانة.
أبرز مزايا وفوائد Laravel
- كتابة أنيقة: كود واضح ومعبر يرفع كفاءة التطوير وسهولة القراءة.
- Eloquent ORM: يوفر آلية ActiveRecord قوية تجعل التعامل مع قواعد البيانات بسيطًا ومباشرًا.
- وحدة الأوامر Artisan: أدوات سطر أوامر قوية لإجراء الترحيلات، إنشاء الأكواد، تشغيل الاختبارات وغير ذلك.
- محرك قوالب Blade: كتابة قوالب ديناميكية بسهولة مع قواعد Syntax بسيطة وواضحة.
- نظام بيئي واسع: مكتبة ضخمة من الحزم الرسمية وغير الرسمية يمكن دمجها عبر Composer بسهولة.
- دعم مجتمعي قوي: موارد تعليمية ضخمة، شروحات، وحلول مقدمة من مجتمع نشط جدًا.
فوائد تطوير مشاريع Laravel باستخدام ServBay
يمنح ServBay مطوري Laravel العديد من الميزات العملية:
- بيئة متكاملة: إصدارات متعددة من PHP، Composer، وقواعد بيانات وخدمات كاش مثبتة مسبقًا. لا حاجة للتثبيت اليدوي.
- إدارة سهلة: واجهة رسومية سهلة للتبديل بين إصدارات PHP، إدارة إعدادات المواقع، وتشغيل/إيقاف الخدمات بنقرة واحدة.
- خادم ويب مُجهز: يأتي ServBay بخادم Caddy مُعد مسبقًا ويدعم أشهر أطر عمل PHP — بما في ذلك Laravel — بتكوين محسّن تلقائيًا.
- دعم HTTPS: يقوم ServBay تلقائيًا بتوليد شهادات SSL لنطاقات
.local
عبر ServBay User CA وتفعيل HTTPS، مما يجعل بيئة التطوير المحلية أقرب للإنتاج وأكثر أمانًا.
إنشاء مشروع Laravel
ينصح ServBay بتخزين جميع مشاريعك في المسار الافتراضي /Applications/ServBay/www
لتنظيم الملفات وإدارتها بسهولة.
التأكد من توفر Composer
يأتي Composer مثبتًا مع ServBay، لذا لا تحتاج لتثبيته يدويًا. يمكنك التحقق من عمله عبر الطرفية:
bashcomposer --version
1إذا ظهر رقم الإصدار بدون أخطاء، فهذا يعني أن Composer جاهز للاستخدام.
إنشاء مشروع Laravel جديد
افتح الطرفية، انتقل إلى مجلد المواقع الموصى به ثم أنشئ مشروع Laravel جديدًا باسم
servbay-laravel-app
:bashcd /Applications/ServBay/www # إنشاء مجلد المشروع mkdir servbay-laravel-app # الانتقال إليه cd servbay-laravel-app # إنشاء مشروع Laravel داخله عبر Composer composer create-project --prefer-dist laravel/laravel .
1
2
3
4
5
6
7سيقوم Composer بتحميل وتثبيت Laravel وكافة الاعتماديات اللازمة.
الدخول إلى مجلد المشروع
تأكد من أنك في المجلد الجذري للمشروع الجديد:
bashcd /Applications/ServBay/www/servbay-laravel-app
1
الإعداد الأولي
توليد مفتاح التطبيق
يستخدم Laravel مفتاحًا خاصًا لحماية الجلسات وتشفير البيانات. لتوليده نفذ الأمر التالي في مجلد المشروع:
bashphp artisan key:generate
1سيقوم الأمر بإضافة قيمة
APP_KEY
لملف.env
.تعديل متغيّرات البيئة (
.env
)يحدد ملف
.env
إعدادات الاتصال بقاعدة البيانات، عنوان التطبيق، وغيرها. افتحه وعدّل القيم بما يناسبك. مثال:dotenvAPP_NAME=ServBay Laravel Demo APP_ENV=local APP_KEY=base64:... # تم توليد هذه القيمة بواسطة php artisan key:generate APP_DEBUG=true APP_URL=https://servbay-laravel-test.local LOG_CHANNEL=stack # إعدادات قاعدة البيانات (MySQL مثالاً) DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=servbay_laravel_app # اسم قاعدة البيانات DB_USERNAME=root # اسم المستخدم الافتراضي DB_PASSWORD=password # كلمة مرور ServBay الافتراضية # إعدادات الكاش/الطابور (Redis) CACHE_STORE=redis REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null # Redis في ServBay بلا كلمة مرور افتراضيًا REDIS_PORT=6379 # إعدادات الكاش/الطابور (Memcached) # CACHE_STORE=memcached # MEMCACHED_HOST=127.0.0.1 # MEMCACHED_PORT=11211
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26ملاحظة: قد تحتاج إلى تعديل إعدادات
DB_*
,REDIS_*
, أوMEMCACHED_*
حسب الخدمات الفعّالة لديك. يمكنك مراجعة بيانات الدخول الافتراضية من لوحة تحكم ServBay.
إعداد خادم الويب (إضافة موقع في ServBay)
استخدم إدارة المواقع في ServBay لتوجيه اسم نطاق إلى مجلد public
الخاص بمشروع Laravel.
فتح لوحة تحكم ServBay
شغل تطبيق ServBay ثم ادخل إلى لوحة التحكم.
إضافة موقع جديد
انتقل إلى قسم "المواقع" واضغط زر الإضافة (
+
أو رمز مشابه) لإضافة موقع جديد.إدراج بيانات الموقع
أدخل البيانات كالتالي:
- الاسم:
My First Laravel Dev Site
(اسم للتعريف الداخلي) - النطاق:
servbay-laravel-test.local
(النطاق الذي ستستخدمه في المتصفح) - نوع الموقع:
PHP
- نسخة PHP: اختر النسخة المتوافقة مع Laravel المراد استخدامه، مثل
8.3
. - جذر الموقع:
/Applications/ServBay/www/servbay-laravel-app/public
(هام: يجب الإشارة إلى مجلدpublic
داخل مشروع Laravel)
لمزيد من التفاصيل، راجع إضافة أول موقع في وثائق ServBay الرسمية (ابحث عن النسخة الإنجليزية).
- الاسم:
حفظ التعديلات وتطبيقها
احفظ إعدادات الموقع. سيقوم ServBay تلقائيًا بتحديث إعدادات خادم الويب (Caddy بشكل افتراضي). إذا ظهرت رسالة لإعادة تشغيل الخادم، قم بذلك.
التحقق من الوصول الأساسي
الآن يجب أن يكون مشروع Laravel متاحًا عبر النطاق المحدد سابقًا.
فتح المتصفح
اكتب اسم النطاق في شريط العنوان، مثل:
https://servbay-laravel-test.local
.عرض الصفحة
إذا تمت إعداداتك صحيحة، ستظهر لك صفحة الترحيب الافتراضية الخاصة بـ Laravel.
إضافة كود تجريبي بسيط
للتحقق بشكل عملي، سنضيف مسارًا جديدًا يطبع الرسالة "Hello ServBay!" داخل ملف routes/web.php
:
<?php
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| بإمكانك تسجيل المسارات الخاصة بتطبيقك هنا. يتم تحميل هذه المسارات
| بواسطة RouteServiceProvider وهي تعمل ضمن مجموعة middleware "web".
| !اصنع شيئًا رائعًا الآن
|
*/
Route::get('/', function () {
return 'Hello ServBay!'; // عدّل أو أضف هذا السطر
});
// ... مسارات أخرى
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
بعد الحفظ، أعد زيارة https://servbay-laravel-test.local
ويجب أن ترى الآن عبارة Hello ServBay!
في المتصفح.
أمثلة على دمج قواعد البيانات
يقدم Laravel طبقة تجريد متطورة للتعامل مع قواعد البيانات وORM (Eloquent) قوي يدعم MySQL وPostgreSQL وMongoDB وغيرهم. ServBay يأتي مُدمجًا مسبقًا مع هذه الخدمات لتسهيل اختبارك المحلي.
مثال على قواعد البيانات NoSQL
يتضمن ServBay كل من Redis وMemcached مع تفعيل إضافاتهما في PHP.
مثال: Memcached
إعداد
.env
ضبط بيانات الاتصال بـ Memcached (إذا لم تُضبط بعد):
dotenvCACHE_STORE=memcached MEMCACHED_HOST=127.0.0.1 MEMCACHED_PORT=11211 # المنفذ الافتراضي لـ Memcached في ServBay
1
2
3استخدام Memcached
استخدم Cache facade في المسارات أو الكنترولر للتعامل مع Memcached:
أضف المسار التالي في
routes/web.php
:phpuse Illuminate\Support\Facades\Cache; Route::get('/memcached-test', function () { // حفظ بيانات بالكاش لمدة عشر دقائق (600 ثانية) Cache::put('servbay_memcached_key', 'Hello from Memcached on ServBay!', 600); // جلب البيانات من الكاش $value = Cache::get('servbay_memcached_key'); if ($value) { return "بيانات Memcached: " . $value; } else { return "البيانات غير موجودة أو انتهت صلاحيتها في Memcached."; } });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15قم بزيارة
https://servbay-laravel-test.local/memcached-test
للاختبار.
مثال: Redis
إعداد
.env
ضبط بيانات الاتصال بـ Redis (إذا لم تُضبط بعد):
dotenvCACHE_STORE=redis REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null # Redis في ServBay بلا كلمة مرور REDIS_PORT=6379 # منفذ Redis الافتراضي في ServBay
1
2
3
4ملحوظة: إذا قمت بتفعيل Memcached وRedis معًا، فعّل فقط الخدمة المراد اختبارها بتغيير قيمة
CACHE_STORE
وتعطيل الأخرى بالتعليق.استخدام Redis
استخدم الواجهات المناسبة في المسارات أو الكنترولر للتعامل مع Redis:
أضف المسار التالي في
routes/web.php
:phpuse Illuminate\Support\Facades\Redis; // أو استخدم واجهة Cache عند تعيين CACHE_STORE=redis // use Illuminate\Support\Facades\Cache; Route::get('/redis-test', function () { // استخدام Redis facade Redis::set('servbay_redis_key', 'Hello from Redis on ServBay!'); $value_redis = Redis::get('servbay_redis_key'); // أو باستخدام Cache facade (إذا كان CACHE_STORE=redis) // Cache::put('servbay_redis_key', 'Hello from Redis on ServBay!', 600); // $value_cache = Cache::get('servbay_redis_key'); return "بيانات Redis: " . $value_redis; });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15لزيارة:
https://servbay-laravel-test.local/redis-test
أمثلة قواعد البيانات العلائقية (MySQL & PostgreSQL)
يأتي ServBay مع MySQL وPostgreSQL مثبتين. ويدعم Laravel الاتصال بهما عبر ORM بسهولة.
أنشئ قاعدة بيانات باسم servbay_laravel_app
باستخدام أداة إدارة قواعد البيانات المدمجة (phpMyAdmin أو Adminer أو pgAdmin، متاحة من لوحة ServBay) أو عبر سطر الأوامر.
الخطوة التالية: إنشاء جداول باستخدام نظام "الترحيلات" في Laravel.
إنشاء ملف ترحيل Migration
من داخل مجلد المشروع، نفذ:
bashphp artisan make:migration create_accounts_table --create=accounts
1سيتم إنشاء ملف ترحيل جديد داخل
database/migrations
.تعديل ملف الترحيل
افتح الملف وأضف محتوى الدالة
up
التالي لتعريف جدولaccounts
:php<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * تشغيل الترحيلات. */ public function up(): void { Schema::create('accounts', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('email')->unique(); $table->timestamps(); // إضافة created_at و updated_at }); } /** * إرجاع التغيرات. */ public function down(): void { Schema::dropIfExists('accounts'); } };
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29ثم احفظ التعديلات.
تنفيذ الترحيلات
شغل أمر الترحيل من المسار الجذري:
bashphp artisan migrate
1إذا تم إعداد قاعدة البيانات بشكل صحيح وكان
servbay_laravel_app
موجودًا ستنشأ جداولaccounts
وغيرها من الجداول الافتراضية للـ Laravel.
مثال MySQL
تعديل
.env
لـ MySQLتأكد من ضبط إعدادات الاتصال بـ MySQL:
dotenvDB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 # منفذ MySQL الافتراضي في ServBay DB_DATABASE=servbay_laravel_app DB_USERNAME=root DB_PASSWORD=password # كلمة المرور الافتراضية في ServBay
1
2
3
4
5
6إضافة بيانات تجريبية
أضف في
routes/web.php
:phpuse Illuminate\Support\Facades\DB; Route::get('/mysql-add-account', function () { DB::table('accounts')->insert([ 'name' => 'ServBay Demo User', 'email' => '[email protected]', 'created_at' => now(), 'updated_at' => now(), ]); return 'تمت إضافة الحساب إلى MySQL!'; });
1
2
3
4
5
6
7
8
9
10
11لزيارة:
https://servbay-laravel-test.local/mysql-add-account
قراءة بيانات تجريبية
أضف في
routes/web.php
:phpuse App\Models\Account; // إذا أنشأت موديل Account // أو استخدم واجهة DB مباشرة Route::get('/mysql-accounts', function () { // باستخدام واجهة DB $accounts = DB::table('accounts')->get(); // أو باستخدام Eloquent ORM (إذا كان موديل Account موجودًا) // $accounts = Account::all(); return $accounts; });
1
2
3
4
5
6
7
8
9
10
11
12لتفقد البيانات:
https://servbay-laravel-test.local/mysql-accounts
مثال PostgreSQL
تعديل
.env
لـ PostgreSQLعند العمل مع PostgreSQL ضبط الإعدادات كما يلي:
dotenvDB_CONNECTION=pgsql DB_HOST=127.0.0.1 DB_PORT=5432 # المنفذ الافتراضي في ServBay DB_DATABASE=servbay_laravel_app DB_USERNAME=root # اسم المستخدم الافتراضي DB_PASSWORD=password # كلمة المرور الافتراضية في ServBay
1
2
3
4
5
6ملاحظة: عند تغيير قاعدة البيانات، قد تحتاج لإعادة تشغيل الترحيلات عبر
php artisan migrate:refresh
أوphp artisan migrate
.إضافة بيانات تجريبية (PostgreSQL)
أضف في
routes/web.php
:phpuse Illuminate\Support\Facades\DB; Route::get('/pgsql-add-account', function () { DB::table('accounts')->insert([ 'name' => 'ServBay PG Demo User', 'email' => '[email protected]', 'created_at' => now(), 'updated_at' => now(), ]); return 'تمت إضافة الحساب إلى PostgreSQL!'; });
1
2
3
4
5
6
7
8
9
10
11ثم زر:
https://servbay-laravel-test.local/pgsql-add-account
عرض بيانات تجريبية (PostgreSQL)
أضف في
routes/web.php
:phpuse Illuminate\Support\Facades\DB; Route::get('/pgsql-accounts', function () { $accounts = DB::table('accounts')->get(); return $accounts; });
1
2
3
4
5
6لتفقد النتائج:
https://servbay-laravel-test.local/pgsql-accounts
الخلاصة
مع ServBay يمكنك بناء بيئة تطوير محلية قوية لمشاريع Laravel على نظام macOS بسهولة. توفر لك حزم PHP وComposer وخادم الويب Caddy وقواعد البيانات وخدمات الكاش المدمجة وقتًا وجهدًا كبيرين في تجهيز بيئة العمل. في بضع خطوات بسيطة، يمكنك إنشاء مشروع جديد، إعداد خادم الويب، والبدء فعليًا في التطوير، مع إمكانية ربط قواعد البيانات والتخزين المؤقت دون معاناة الإعدادات المعقدة. هدف ServBay هو تقديم تجربة تطوير فعالة وسلسة للمطورين.
إذا واجهت أي مشكلات أثناء الاستخدام، يمكنك دومًا الرجوع إلى الوثائق الرسمية لخدمة ServBay أو الاستفادة من مجتمعه النشط للحصول على الدعم.