النشر على الخادم الإنتاجي في Laravel

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث


مقدمة

عندما تكون جاهزًا لنشر تطبيق Laravel على الخادم الإنتاجي، هناك بعض الأشياء المهمة التي يمكنك القيام بها للتأكد من تشغيل التطبيق بأقصى كفاءة ممكنة. في هذا المستند، سنغطي بعض نقاط البداية الرائعة للتأكد من نشر تطبيق Laravel بشكل صحيح.

ضبط الخادم

Nginx

إذا كنت تقوم بنشر تطبيقك على خادم Nginx، فيمكنك استخدام ملف التهيئة التالي كنقطة بداية لتهيئة خادم الويب الخاص بك. على الأرجح، يجب تخصيص هذا الملف بناءً على تهيئة خادمك. إذا كنت ترغب في المساعدة في إدارة الخادم الخاص بك، فكر في استخدام خدمة مثل Laravel Forge:

server {
    listen 80;
    server_name example.com;
    root /example.com/public;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";

    index index.html index.htm index.php;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    error_page 404 /index.php;

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }
}

التحسين

تحسين المحمل التلقائي

عند النشر على الخادم الإنتاجي، تأكد من أنك تقوم بتحسين خريطة المحمل الآلي لبرمجية composer حتى يتمكن composer من العثور بسرعة على الملف المناسب للتحميل الصنف المعين:

composer install --optimize-autoloader --no-dev

بالإضافة إلى تحسين أداة التحميل التلقائي، يجب التأكد دائمًا من تضمين ملف composer.lock في مستودع التحكم في مصدر المشروع. يمكن تثبيت اعتماديات مشروعك بسرعة أكبر عندما يكون ملف composer.lock موجودًا.

تحسين ضبط التحميل

عند نشر التطبيق الخاص بك على الخادم الإنتاجي، يجب عليك التأكد من تشغيل الأمر config:cache Artisan:

php artisan config:cache

سيعمل هذا الأمر  على جمع جميع ملفات الضبط الخاصة بإطار Laravel في ملف واحد مخزنٌ تخزينًا مؤقتًا مما يؤدي إلى تقليل عدد الحركات التي يجب أن يقوم بها إطار العمل على نظام الملفاتعندما تُحمَّل قيم خيارات الضبط.

إذا قمت بتنفيذ الأمر config:cache أثناء عملية النشر على الخادم الإنتاجي، فيجب أن تتأكد من أنك تقوم فقط بالاتصال بالدالة env من داخل ملفات الضبط الخاصة بك. بمجرد تخزين الضبط المؤقت، فلن يُحمِّل الملف ‎.env وستُعيد كافة الإستدعاءات إلى الدالة env القيمة null.

تحسين تحميل المسارات

إذا كنت تقوم بإنشاء تطبيق كبير مع العديد من المسارات (routes)، يجب عليك التأكد من تشغيل الأمر route:cache Artisan أثناء عملية النشر على الخادم الإنتاجي:

php artisan route:cache

هذا الأمر يقلل من عمليات تسجيل المسارات الخاصة بك من خلال استدعاء تابع وحيد ويتم تخزينه في ملف تخزين مؤقت، مما يؤدي إلى تحسين أداء تسجيل المسارات عند تسجيل مئات المسارات.

نظرًا لأن هذه الميزة تستخدم سَلسَلة PHP (أي PHP serialization)، فإنه بإمكانك تخزين مسارات التطبيقات التي على وجه الحصر تستخدم المسارات التي تعتمد على التحكم (controller based routes). لأن PHP ليست قادرة على سَلسَلة النطاقات المغلقة (closures).

النشر على الخادم الإنتاجي مع منصة Forge

إذا لم تكن مستعدًا تمامًا لإدارة تهيئة الخادم الخاصة بك أو لم تكن مرتاحًا لتكوين جميع الخدمات المتنوعة اللازمة لتشغيل تطبيق Laravel القوي، فإن Laravel Forge بديل رائع.

يمكن لخدمة Laravel Forge إنشاء خوادم على العديد من مزودي البنية الأساسية مثل DigitalOcean و Linode و AWS والمزيد. بالإضافة إلى ذلك، يقوم Forge بتثبيت وإدارة جميع الأدوات اللازمة لبناء تطبيقات Laravel قوية، مثل Nginx و MySQL و Redis و Memcached و Beanstalk والمزيد.

مصادر