الفرق بين المراجعتين لصفحة: «Laravel/deployment»

من موسوعة حسوب
ط استبدال النص - '\[\[تصنيف:(.*)\]\]' ب'{{SUBPAGENAME}}'
ط استبدال ترجمة server بخادوم.
 
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE:النشر على الخادم الإنتاجي في Laravel}}</noinclude>
<noinclude>{{DISPLAYTITLE:النشر على الخادم الإنتاجي في Laravel}}</noinclude>
== مقدمة ==
== مقدمة ==
عندما تكون جاهزًا لنشر تطبيق [[Laravel]] على الخادم الإنتاجي، هناك بعض الأشياء المهمة التي يمكنك القيام بها للتأكد من تشغيل التطبيق بأقصى كفاءة ممكنة. في هذا المستند، سنغطي بعض نقاط البداية الرائعة للتأكد من نشر تطبيق [[Laravel]] بشكل صحيح.
عندما تكون جاهزًا لنشر تطبيق [[Laravel]] على الخادوم الإنتاجي، هناك بعض الأشياء المهمة التي يمكنك القيام بها للتأكد من تشغيل التطبيق بأقصى كفاءة ممكنة. في هذا المستند، سنغطي بعض نقاط البداية الرائعة للتأكد من نشر تطبيق [[Laravel]] بشكل صحيح.


== ضبط الخادم ==
== ضبط الخادوم ==


=== [[Nginx]] ===
=== [[Nginx]] ===
إذا كنت تقوم بنشر تطبيقك على خادم Nginx، فيمكنك استخدام ملف التهيئة التالي كنقطة بداية لتهيئة خادم الويب الخاص بك. على الأرجح، يجب تخصيص هذا الملف بناءً على تهيئة خادمك. إذا كنت ترغب في المساعدة في إدارة الخادم الخاص بك، فكر في استخدام خدمة مثل Laravel Forge:<syntaxhighlight lang="php">
إذا كنت تقوم بنشر تطبيقك على خادوم Nginx، فيمكنك استخدام ملف التهيئة التالي كنقطة بداية لتهيئة خادوم الويب الخاص بك. على الأرجح، يجب تخصيص هذا الملف بناءً على تهيئة خادومك. إذا كنت ترغب في المساعدة في إدارة الخادوم الخاص بك، فكر في استخدام خدمة مثل Laravel Forge:<syntaxhighlight lang="php">
server {
server {
     listen 80;
     listen 80;
سطر 45: سطر 45:


=== تحسين المحمل التلقائي ===
=== تحسين المحمل التلقائي ===
عند النشر على الخادم الإنتاجي، تأكد من أنك تقوم بتحسين خريطة المحمل الآلي لبرمجية composer حتى يتمكن composer من العثور بسرعة على الملف المناسب للتحميل الصنف المعين:<syntaxhighlight lang="text">
عند النشر على الخادوم الإنتاجي، تأكد من أنك تقوم بتحسين خريطة المحمل الآلي لبرمجية composer حتى يتمكن composer من العثور بسرعة على الملف المناسب للتحميل الصنف المعين:<syntaxhighlight lang="text">
composer install --optimize-autoloader --no-dev
composer install --optimize-autoloader --no-dev
</syntaxhighlight>بالإضافة إلى تحسين أداة التحميل التلقائي، يجب التأكد دائمًا من تضمين ملف <code>composer.lock</code> في مستودع التحكم في مصدر المشروع. يمكن تثبيت اعتماديات مشروعك بسرعة أكبر عندما يكون ملف <code>composer.lock</code> موجودًا.
</syntaxhighlight>بالإضافة إلى تحسين أداة التحميل التلقائي، يجب التأكد دائمًا من تضمين ملف <code>composer.lock</code> في مستودع التحكم في مصدر المشروع. يمكن تثبيت اعتماديات مشروعك بسرعة أكبر عندما يكون ملف <code>composer.lock</code> موجودًا.


=== تحسين ضبط التحميل ===
=== تحسين ضبط التحميل ===
عند نشر التطبيق الخاص بك على الخادم الإنتاجي، يجب عليك التأكد من تشغيل الأمر <code>config:cache Artisan</code>:<syntaxhighlight lang="php">
عند نشر التطبيق الخاص بك على الخادوم الإنتاجي، يجب عليك التأكد من تشغيل الأمر <code>config:cache Artisan</code>:<syntaxhighlight lang="php">
php artisan config:cache
php artisan config:cache
</syntaxhighlight>سيعمل هذا الأمر  على جمع جميع ملفات الضبط الخاصة بإطار [[Laravel]] في ملف واحد مخزنٌ تخزينًا مؤقتًا مما يؤدي إلى تقليل عدد الحركات التي يجب أن يقوم بها إطار العمل على نظام الملفاتعندما تُحمَّل قيم خيارات الضبط.
</syntaxhighlight>سيعمل هذا الأمر  على جمع جميع ملفات الضبط الخاصة بإطار [[Laravel]] في ملف واحد مخزنٌ تخزينًا مؤقتًا مما يؤدي إلى تقليل عدد الحركات التي يجب أن يقوم بها إطار العمل على نظام الملفات عندما تُحمَّل قيم خيارات الضبط.


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


=== تحسين تحميل المسارات ===
=== تحسين تحميل المسارات ===
إذا كنت تقوم بإنشاء تطبيق كبير مع العديد من المسارات (routes)، يجب عليك التأكد من تشغيل الأمر <code>route:cache Artisan</code> أثناء عملية النشر على الخادم الإنتاجي:<syntaxhighlight lang="php">
إذا كنت تقوم بإنشاء تطبيق كبير مع العديد من المسارات (routes)، يجب عليك التأكد من تشغيل الأمر <code>route:cache Artisan</code> أثناء عملية النشر على الخادوم الإنتاجي:<syntaxhighlight lang="php">
php artisan route:cache
php artisan route:cache
</syntaxhighlight>هذا الأمر يقلل من عمليات تسجيل المسارات الخاصة بك من خلال استدعاء تابع وحيد ويتم تخزينه في ملف تخزين مؤقت، مما يؤدي إلى تحسين أداء تسجيل المسارات عند تسجيل مئات المسارات.
</syntaxhighlight>هذا الأمر يقلل من عمليات تسجيل المسارات الخاصة بك من خلال استدعاء تابع وحيد ويتم تخزينه في ملف تخزين مؤقت، مما يؤدي إلى تحسين أداء تسجيل المسارات عند تسجيل مئات المسارات.
سطر 63: سطر 63:
نظرًا لأن هذه الميزة تستخدم [[PHP/serialization|سَلسَلة PHP]] (أي PHP serialization)، فإنه بإمكانك تخزين مسارات التطبيقات التي على وجه الحصر تستخدم المسارات التي تعتمد على التحكم (controller based routes). لأن [[PHP]] ليست قادرة على سَلسَلة النطاقات المغلقة (closures).
نظرًا لأن هذه الميزة تستخدم [[PHP/serialization|سَلسَلة PHP]] (أي PHP serialization)، فإنه بإمكانك تخزين مسارات التطبيقات التي على وجه الحصر تستخدم المسارات التي تعتمد على التحكم (controller based routes). لأن [[PHP]] ليست قادرة على سَلسَلة النطاقات المغلقة (closures).


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


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

المراجعة الحالية بتاريخ 08:42، 2 فبراير 2019

مقدمة

عندما تكون جاهزًا لنشر تطبيق 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 والمزيد.

مصادر