انتقل إلى محتوى الدرس
الدرس 60
دورة إطار العمل Laravel

تأمين ونشر تطبيقات Laravel على خوادم الإنتاج الحيةSecuring and Deploying Laravel to Production Servers

تطبيق قائمة الفحص الأمني للإنتاج وإعداد خادم Nginx و PHP-FPM وتشغيل التهجيرات بأمان وإدارة عمال الطوابير عبر Supervisor.
أقسام الدرس
6
الأمثلة
6
اللغة
العربية
تاريخ النشر
غير محدد
المشاهدات
1
محتوى الدرس
في هذا الدرس 6تصفّح المواضيع

قبل إتاحة تطبيق Laravel للجمهور على الإنترنت، يجب ضبط المتغيرين APP_ENV=production و APP_DEBUG=false داخل ملف البيئة على الخادم. إن ترك وضع التصحيح مفعلاً في بيئة الإنتاج يُعد ثغرة أمنية خطيرة لأن أي خطأ برمجي سيعرض تتبع الكود ومتغيرات البيئة السرية على شاشة الزائر.

  • تعطيل وضع التصحيح (Disable Debug Mode): اضبط دائماً APP_DEBUG=false لكي تعرض الأخطاء صفحات آمنة لا تكشف تفاصيل الخادم.
  • فرض بروتوكول HTTPS (Enforce HTTPS URLs): فعّل شهادة التشفير على الخادم أو استدع الدالة URL::forceScheme('https') لتوليد روابط آمنة.
  • تأمين مفتاح التشفير (Protect APP_KEY): ولّد مفتاح APP_KEY فريداً لخادم الإنتاج واحتفظ بملف البيئة خارج مستودع Git دائماً.
مخطط معماري يوضح تأمين ونشر تطبيقات Laravel على خوادم الإنتاج الحية في إطار العمل Laravel 12
PHP
// Production .env security baseline:
// APP_ENV=production
// APP_DEBUG=false
// APP_URL=https://example.com

URL::forceScheme('https');

يجب أن يشير جذر الموقع في إعدادات خادم الويب Nginx حصرياً إلى المجلد الفرعي public مثل /var/www/app/public وليس إلى المجلد الرئيسي للمشروع أبداً. يضمن توجيه الخادم إلى مجلد public بقاء الملفات الحساسة مثل ملف البيئة والكود المصدري خارج نطاق الوصول المباشر عبر المتصفح.

  • تحديد جذر public (Public Document Root): اضبط التوجيه root في ملف إعداد Nginx على المسار الفرعي public لحماية ملفات النظام.
  • توجيه المتحكم الأمامي (Front Controller Routing): استخدم تعليمة try_files لتمرير جميع الروابط الديناميكية إلى ملف index.php.
  • حظر الملفات المخفية (Dotfile Blocking): امنع الوصول لأي ملفات تبدأ بنقطة عبر قاعدة حظر صريحة في إعدادات Nginx.
PHP
# /etc/nginx/sites-available/app.conf
server {
    root /var/www/app/public;
    index index.php;
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
}

على خادم Linux الحي، يحتاج مستخدم خادم الويب مثل www-data إلى صلاحيات الكتابة على مجلدي storage و bootstrap/cache ليتمكن Laravel من تدوين السجلات وحفظ القوالب المترجمة. وأثناء النشر المؤتمت، مرر الخيار --force مع أمر php artisan migrate لتشغيل التهجيرات الجديدة دون توقف لطلب التأكيد.

  • المجلدات القابلة للكتابة (Writable Directories): امنح ملكية مجلدي storage و bootstrap/cache لمستخدم خادم الويب مع صلاحيات 775.
  • التهجير غير التفاعلي (Non-Interactive Migrations): نفذ الأمر php artisan migrate --force في سكربتات النشر لتجاوز رسالة التأكيد التفاعلية.
  • حظر التهجير الهادم (Never Run migrate:fresh): شغل دائماً التهجيرات التراكمية الآمنة فقط في الإنتاج للحفاظ على بيانات العملاء.
PHP
# Set writable permissions on Linux:
chown -R www-data:www-data storage bootstrap/cache
chmod -R ug+rwx storage bootstrap/cache

# Apply new database migrations in production:
php artisan migrate --force

بخلاف طلبات الويب التي تديرها خدمة PHP-FPM، يعمل الأمر php artisan queue:work كعملية خلفية مستمرة قد تتوقف عند انتهاء المهلة أو إعادة تشغيل الخادم. تتولى أداة Supervisor على خوادم Linux مراقبة عمال الطوابير على مدار الساعة وإعادة تشغيلهم تلقائياً فور توقفهم.

  • مراقبة العمليات (Process Monitoring): اضبط الخيارين autorestart=true و numprocs=2 في ملف إعداد Supervisor لضمان استمرار عمل الطابور.
  • تدوير الذاكرة الآمن (Graceful Worker Rotation): مرر الخيار --max-time=3600 لأمر queue:work لتجديد عملية العامل كل ساعة ومنع تسرب الذاكرة.
  • جدولة المهام في Cron (Scheduler Cron Entry): أضف سطر تشغيل schedule:run كل دقيقة في جدول cron لتفعيل مجدول مهام Laravel.
PHP
# /etc/supervisor/conf.d/laravel-worker.conf
[program:laravel-worker]
command=php /var/www/app/artisan queue:work --tries=3
autostart=true
autorestart=true
numprocs=2

تتبع عملية النشر الاحترافية تسلسلاً برمجياً منضبطاً: تفعيل وضع الصيانة المؤقت بأمر php artisan down عند الحاجة، ثم سحب أحدث كود من Git، وتثبيت حزم Composer وأصول Vite، وتشغيل التهجيرات، وتجميع الكاش بأمر optimize، وإعادة تشغيل عمال الطوابير، وأخيراً فتح الموقع بأمر php artisan up.

  • وضع الصيانة المسبق (Pre-Rendered Maintenance Mode): نفذ الأمر php artisan down لعرض صفحة صيانة خفيفة بالرمز 503 ريثما تكتمل التهجيرات.
  • تحديث الكاش والعمال (Atomic Cache & Worker Refresh): شغّل الأمر php artisan optimize متبوعاً بالأمر php artisan queue:restart.
  • استئناف استقبال الزوار (Resuming Live Traffic): نفذ الأمر php artisan up لإلغاء وضع الصيانة وإعادة الموقع للعمل الطبيعي فوراً.
PHP
php artisan down
git pull origin main
composer install --no-dev --optimize-autoloader
php artisan migrate --force
php artisan optimize
php artisan queue:restart
php artisan up

لقد أتممت الآن منهج Laravel 12 الكامل المكون من 60 درساً، بدءاً من المسارات وقوالب Blade ونماذج Eloquent وصولاً إلى واجهات Sanctum والطوابير والاختبارات الآلية والنشر الحي. احتفظ بقائمة الفحص النهائي التالية مرجعاً دائماً عند إطلاق أي مشروع Laravel جديد.

وجه المقارنة الهندسيالأسلوب المتزامن أو التقليديمعيار Laravel 12 الحديث
وضع التصحيح وتسريب الأخطاءترك APP_DEBUG=true مفعلاً على الخادم الحي وكشف الأسرارفرض APP_ENV=production و APP_DEBUG=false مع بروتوكول HTTPS
المجلد الجذري لخادم الويبتوجيه الخادم لمجلد المشروع الرئيسي وتعريض ملف .env للخطرتوجيه جذر Nginx حصرياً إلى المجلد الفرعي /var/www/app/public
تشغيل تهجيرات القاعدةتعديل الجداول يدوياً أو تشغيل أوامر تفاعلية تتوقف أثناء النشرتشغيل آمن ومؤتمت عبر الأمر php artisan migrate --force
استمرارية عمال الطوابيرتشغيل queue:work في نافذة طرفية مؤقتة تتوقف عند إغلاق الاتصالإدارة مستمرة عبر خدمة Supervisor مع الأمر queue:restart
PHP
# Verify production environment & health status:
php artisan about
php artisan schedule:list
php artisan migrate:status
خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

مراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي

ماذا تعلّمت في هذا الدرس؟

أتقنت في هذا الدرس حول «تأمين ونشر تطبيقات Laravel على خوادم الإنتاج الحية» مفاهيم قائمة التحصين الأمني لملف البيئة، وتوجيه خادم Nginx لمجلد public، وصلاحيات المجلدات وتهجير الإنتاج وفق معايير Laravel 12 الحديثة.

الخطوة التالية والدرس القادم

انتقل الآن إلى الدرس التالي «إطلاق المشروع المتكامل في بيئة الإنتاج» للبناء التراكمي على ما تعلمته.

مشاركة

هل كان هذا الدرس مفيدًا؟

جارٍ تحميل الآراء…

ابنِ لغتك البرمجية

المصطلحات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 Live Deployment النشر الحي
تطبيق قائمة الفحص الأمني للإنتاج وإعداد خادم Nginx و PHP-FPM وتشغيل التهجيرات بأمان وإدارة عمال الطوابير عبر Supervisor.
للمراجعة
02 Production Environment Security Rules قائمة التحصين الأمني لملف البيئة
المفهوم الهندسي والتطبيق العملي المباشر لقسم قائمة التحصين الأمني لملف البيئة في إطار العمل Laravel 12.
للمراجعة
03 Configuring Nginx Web Root Directory توجيه خادم Nginx لمجلد public
المفهوم الهندسي والتطبيق العملي المباشر لقسم توجيه خادم Nginx لمجلد public في إطار العمل Laravel 12.
للمراجعة
04 Directory Permissions and Safe Migrate صلاحيات المجلدات وتهجير الإنتاج
المفهوم الهندسي والتطبيق العملي المباشر لقسم صلاحيات المجلدات وتهجير الإنتاج في إطار العمل Laravel 12.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

حروف قليلة. معنى كامل.

الاختصارات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 MVC MVC
Model View Controller
النمط المعماري الذي يفصل بين نماذج البيانات Models، وطبقات العرض Views، والمتحكمات Controllers في Laravel.
للمراجعة
02 CLI CLI
Command Line Interface
واجهة سطر الأوامر التي تعمل عبر أداة php artisan لتوليد الملفات وإدارة التطبيق.
للمراجعة
03 HTTP HTTP
Hypertext Transfer Protocol
بروتوكول نقل النص الفائق الذي ينظم طلبات المتصفح واستجابات خادم Laravel.
للمراجعة
04 PSR PSR
PHP Standards Recommendations
المعايير القياسية للغة PHP مثل التحميل التلقائي PSR-4 التي يلتزم بها إطار العمل Laravel.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

من الفهم للتطبيق

مهامك قبل الاختبار

خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.

0/2مهام منجزة
  1. اكتب ونفّذ المثال البرمجي المشروح في قسم «قائمة التحصين الأمني لملف البيئة» داخل مشروع Laravel 12 المحلي وتحقق من النتيجة.

  2. بدّل بين الحالات الثلاث في المحاكي التفاعلي ضمن قسم «توجيه خادم Nginx لمجلد public» وقارن مخرجات التنفيذ.

تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.

مساحة التحدي

اختبر فهمك.
ووصلها للإتقان.

كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.

8أسئلة 3أنواع تحديات 100%هدف الإتقان
تصحيح تلقائي. فرص بلا حدود.

أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.

الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.

لمحة عن التحدي8 أسئلة تنتظرك
01

ما الهدف الهندسي الأساسي من قائمة التحصين الأمني لملف البيئة في إطار العمل Laravel 12؟

يسهم قائمة التحصين الأمني لملف البيئة في تنظيم منطق التطبيق بأسلوب معياري آمن وقابل للصيانة في Laravel 12.

02

يساعد الالتزام باصطلاحات Laravel 12 الرسمية في قسم «توجيه خادم Nginx لمجلد public» على رفع جودة الكود وسهولة اختباره آلياً.

صواب؛ الالتزام بالمعايير القياسية في Laravel 12 يجعل الكود واضحاً وسهل الفحص والصيانة.

03

أي آلية في Laravel 12 تتولى إدارة صلاحيات المجلدات وتهجير الإنتاج بشكل مباشر ومنظم؟

توفر طبقة إطار العمل وحاوية الخدمات في Laravel 12 الأدوات القياسية لإدارة صلاحيات المجلدات وتهجير الإنتاج.

04

لماذا يُعد تطبيق إدارة عمال الطوابير عبر Supervisor مهماً عند بناء تطبيقات Laravel 12 جاهزة للإنتاج؟

لأنه يمنع الأخطاء البرمجية الخفية ويوحد سلوك التطبيق بين بيئتي التطوير والإنتاج.

05

في Laravel 12، يُنصح بكتابة مفاتيح الإنتاج السرية مباشرة داخل ملفات الكود المصدري المرفوعة إلى Git بدلاً من ملفات البيئة.

خطأ؛ يجب حفظ المفاتيح والبيانات السرية في متغيرات البيئة وعدم رفعها أبداً إلى مستودع Git.

06

ما المزايا الهندسية التي يحققها تطبيق بناء خطوات النشر المؤتمت والصيانة في Laravel 12؟ (اختر كل ما ينطبق)

يوفر فصلاً واضحاً للمسؤوليات، وأماناً أعلى أثناء التنفيذ، وتعاوناً أسهل بين أفراد الفريق.

07

يوظف إطار العمل Laravel 12 ميزات PHP 8 الحديثة مثل تحديد أنواع القيم المرجعة لجعل الكود أكثر وضوحاً وأماناً.

صواب؛ يعتمد Laravel 12 بشكل كامل على الصياغة الحديثة للغة PHP 8.2+ وسلامة الأنواع.

08

ما الفرق الجوهري بين معيار Laravel 12 الحديث والملفات اليدوية التقليدية في مرجع الفحص النهائي لنشر Laravel؟

يوفر Laravel 12 واجهات قياسية موحدة وحماية مدمجة تغني عن الكود اليدوي المعرض للأخطاء.