في هذا الدرس 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 دائماً.
// 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.
# /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): شغل دائماً التهجيرات التراكمية الآمنة فقط في الإنتاج للحفاظ على بيانات العملاء.
# 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.
# /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 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 |
# Verify production environment & health status:
php artisan about
php artisan schedule:list
php artisan migrate:status
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
أتقنت في هذا الدرس حول «تأمين ونشر تطبيقات Laravel على خوادم الإنتاج الحية» مفاهيم قائمة التحصين الأمني لملف البيئة، وتوجيه خادم Nginx لمجلد public، وصلاحيات المجلدات وتهجير الإنتاج وفق معايير Laravel 12 الحديثة.
الخطوة التالية والدرس القادم
انتقل الآن إلى الدرس التالي «إطلاق المشروع المتكامل في بيئة الإنتاج» للبناء التراكمي على ما تعلمته.
سجّل الدخول لحفظ تقدمك
تابع إنجاز المواضيع والمصطلحات والمهام، وكمّل من آخر خطوة على أي جهاز.
المصطلحات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
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 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.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
مهامك قبل الاختبار
خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.
-
اكتب ونفّذ المثال البرمجي المشروح في قسم «قائمة التحصين الأمني لملف البيئة» داخل مشروع Laravel 12 المحلي وتحقق من النتيجة.
-
بدّل بين الحالات الثلاث في المحاكي التفاعلي ضمن قسم «توجيه خادم Nginx لمجلد public» وقارن مخرجات التنفيذ.
تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.
اختبر فهمك.
ووصلها للإتقان.
كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.
أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.
الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.
لمحة عن التحدي8 أسئلة تنتظرك +
ما الهدف الهندسي الأساسي من قائمة التحصين الأمني لملف البيئة في إطار العمل Laravel 12؟
يسهم قائمة التحصين الأمني لملف البيئة في تنظيم منطق التطبيق بأسلوب معياري آمن وقابل للصيانة في Laravel 12.
يساعد الالتزام باصطلاحات Laravel 12 الرسمية في قسم «توجيه خادم Nginx لمجلد public» على رفع جودة الكود وسهولة اختباره آلياً.
صواب؛ الالتزام بالمعايير القياسية في Laravel 12 يجعل الكود واضحاً وسهل الفحص والصيانة.
أي آلية في Laravel 12 تتولى إدارة صلاحيات المجلدات وتهجير الإنتاج بشكل مباشر ومنظم؟
توفر طبقة إطار العمل وحاوية الخدمات في Laravel 12 الأدوات القياسية لإدارة صلاحيات المجلدات وتهجير الإنتاج.
لماذا يُعد تطبيق إدارة عمال الطوابير عبر Supervisor مهماً عند بناء تطبيقات Laravel 12 جاهزة للإنتاج؟
لأنه يمنع الأخطاء البرمجية الخفية ويوحد سلوك التطبيق بين بيئتي التطوير والإنتاج.
في Laravel 12، يُنصح بكتابة مفاتيح الإنتاج السرية مباشرة داخل ملفات الكود المصدري المرفوعة إلى Git بدلاً من ملفات البيئة.
خطأ؛ يجب حفظ المفاتيح والبيانات السرية في متغيرات البيئة وعدم رفعها أبداً إلى مستودع Git.
ما المزايا الهندسية التي يحققها تطبيق بناء خطوات النشر المؤتمت والصيانة في Laravel 12؟ (اختر كل ما ينطبق)
يوفر فصلاً واضحاً للمسؤوليات، وأماناً أعلى أثناء التنفيذ، وتعاوناً أسهل بين أفراد الفريق.
يوظف إطار العمل Laravel 12 ميزات PHP 8 الحديثة مثل تحديد أنواع القيم المرجعة لجعل الكود أكثر وضوحاً وأماناً.
صواب؛ يعتمد Laravel 12 بشكل كامل على الصياغة الحديثة للغة PHP 8.2+ وسلامة الأنواع.
ما الفرق الجوهري بين معيار Laravel 12 الحديث والملفات اليدوية التقليدية في مرجع الفحص النهائي لنشر Laravel؟
يوفر Laravel 12 واجهات قياسية موحدة وحماية مدمجة تغني عن الكود اليدوي المعرض للأخطاء.