مسار نشر Laravel بسيط وموثوق
نشر Laravel باستخدام مجلدات الإصدارات والتحويل الذري وMigrations آمنة وخطة رجوع واضحة.
ابنِ كل إصدار منفصلاً، وحوّل الترافيك في خطوة ذرية، واجعل الرجوع عملية معتادة وليست ارتجالاً وقت المشكلة.
أفضل مسار نشر يكون غالباً مملاً: ينفذ الخطوات الصغيرة نفسها في كل مرة، ويترك دليلاً واضحاً، ويوفر طريقاً للرجوع لا يعتمد على تذكر أوامر سابقة وقت الضغط.
في تطبيق Laravel على Linux، تمثل مجلدات الإصدارات مع تبديل symlink نقطة بداية قوية.
استخدم مجلداً ثابتاً لكل إصدار
/var/www/app/
├── current -> releases/20260722-184500
├── releases/
│ ├── 20260718-102200/
│ └── 20260722-184500/
└── shared/
├── .env
└── storage/
يشير خادم الويب إلى current/public. يجهز النشر الإصدار الجديد بالكامل، ثم يغير رابط current في عملية واحدة. تكمل الطلبات القديمة على الإصدار السابق وتبدأ الطلبات الجديدة على الإصدار الجديد.
ابنِ الإصدار قبل تحويل الترافيك
يجب أن يحتوي المجلد الجديد على commit محدد. ثبّت اعتمادات PHP بإعدادات الإنتاج، وابنِ ملفات الواجهة، واربط storage المشترك، ثم جهز caches الخاصة بـ Laravel.
composer install --no-dev --prefer-dist --no-interaction --optimize-autoloader
php artisan config:cache
php artisan route:cache
php artisan view:cache
نفذ فحصاً سريعاً قبل جعل الإصدار حياً: تأكد أن التطبيق يبدأ، والملفات المطلوبة موجودة، وملف الأصول المبنية سليم.
تعامل مع Migrations كتوافق بين إصدارين
التبديل بدون توقف لا يجعل كل تغيير قاعدة بيانات آمناً. قد يعمل الإصداران معاً فترة قصيرة، وقد تكون مهام Queue القديمة ما زالت قيد التنفيذ.
استخدم أسلوب التوسيع ثم التقليص: أضف البنية الجديدة، وانشر كوداً يعمل مع البنيتين، وانقل البيانات، ثم حول القراءة، واحذف البنية القديمة في نشر لاحق.
تجنب حذف أو إعادة تسمية عمود يحتاجه الإصدار السابق. عمليات backfill الكبيرة وبناء indexes تحتاج خطة تشغيل منفصلة.
أعد تشغيل العمال طويلي العمر
يحتفظ عامل Queue بالكود في الذاكرة. بعد تغيير الرابط اطلب من Laravel إنهاء المهمة الحالية ثم إعادة التشغيل:
php artisan queue:restart
يجب أن يعيد مدير العمليات تشغيل العامل تلقائياً. وافحص صحة Queue؛ نجاح الصفحة الرئيسية لا يثبت أن الأعمال الخلفية تعمل.
اجعل الرجوع أمراً عادياً
الرجوع في الكود هو تبديل الرابط إلى الإصدار السابق. احتفظ بعدة إصدارات قريبة ووفر إجراء رجوع واضحاً ومراجعاً.
أما قاعدة البيانات فالأفضل غالباً إصلاحها بعملية forward جديدة، لأن تشغيل down() قد يحذف بيانات كُتبت بعد النشر.
المسار الموثوق يتكون من: جلب الكود، التثبيت، البناء، ربط الملفات المشتركة، التحديث الآمن لقاعدة البيانات، التحويل، إعادة تشغيل العمال، التحقق، وتنظيف الإصدارات القديمة.
نهاية الملاحظة.