الفرق بين المراجعتين لصفحة: «Laravel/deployment»
رؤيا-بنعطية (نقاش | مساهمات) ط استبدال النص - '\[\[تصنيف:(.*)\]\]' ب'{{SUBPAGENAME}}' |
عاطف-بن-علي (نقاش | مساهمات) ط استبدال ترجمة server بخادوم. |
||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE:النشر على الخادم الإنتاجي في Laravel}}</noinclude> | <noinclude>{{DISPLAYTITLE:النشر على الخادم الإنتاجي في Laravel}}</noinclude> | ||
== مقدمة == | == مقدمة == | ||
عندما تكون جاهزًا لنشر تطبيق [[Laravel]] على | عندما تكون جاهزًا لنشر تطبيق [[Laravel]] على الخادوم الإنتاجي، هناك بعض الأشياء المهمة التي يمكنك القيام بها للتأكد من تشغيل التطبيق بأقصى كفاءة ممكنة. في هذا المستند، سنغطي بعض نقاط البداية الرائعة للتأكد من نشر تطبيق [[Laravel]] بشكل صحيح. | ||
== ضبط | == ضبط الخادوم == | ||
=== [[Nginx]] === | === [[Nginx]] === | ||
إذا كنت تقوم بنشر تطبيقك على | إذا كنت تقوم بنشر تطبيقك على خادوم Nginx، فيمكنك استخدام ملف التهيئة التالي كنقطة بداية لتهيئة خادوم الويب الخاص بك. على الأرجح، يجب تخصيص هذا الملف بناءً على تهيئة خادومك. إذا كنت ترغب في المساعدة في إدارة الخادوم الخاص بك، فكر في استخدام خدمة مثل Laravel Forge:<syntaxhighlight lang="php"> | ||
server { | server { | ||
listen 80; | listen 80; | ||
سطر 45: | سطر 45: | ||
=== تحسين المحمل التلقائي === | === تحسين المحمل التلقائي === | ||
عند النشر على | عند النشر على الخادوم الإنتاجي، تأكد من أنك تقوم بتحسين خريطة المحمل الآلي لبرمجية 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"> | ||
php artisan config:cache | php artisan config:cache | ||
</syntaxhighlight>سيعمل هذا الأمر على جمع جميع ملفات الضبط الخاصة بإطار [[Laravel]] في ملف واحد مخزنٌ تخزينًا مؤقتًا مما يؤدي إلى تقليل عدد الحركات التي يجب أن يقوم بها إطار العمل على نظام | </syntaxhighlight>سيعمل هذا الأمر على جمع جميع ملفات الضبط الخاصة بإطار [[Laravel]] في ملف واحد مخزنٌ تخزينًا مؤقتًا مما يؤدي إلى تقليل عدد الحركات التي يجب أن يقوم بها إطار العمل على نظام الملفات عندما تُحمَّل قيم خيارات الضبط. | ||
إذا قمت بتنفيذ الأمر <code>config:cache</code> أثناء عملية النشر على | إذا قمت بتنفيذ الأمر <code>config:cache</code> أثناء عملية النشر على الخادوم الإنتاجي، فيجب أن تتأكد من أنك تقوم فقط بالاتصال بالدالة <code>env</code> من داخل ملفات الضبط الخاصة بك. بمجرد تخزين الضبط المؤقت، فلن يُحمِّل الملف <code>.env</code> وستُعيد كافة الإستدعاءات إلى الدالة <code>env</code> القيمة <code>null</code>. | ||
=== تحسين تحميل المسارات === | === تحسين تحميل المسارات === | ||
إذا كنت تقوم بإنشاء تطبيق كبير مع العديد من المسارات (routes)، يجب عليك التأكد من تشغيل الأمر <code>route:cache Artisan</code> أثناء عملية النشر على | إذا كنت تقوم بإنشاء تطبيق كبير مع العديد من المسارات (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 === | ||
إذا لم تكن مستعدًا تمامًا لإدارة تهيئة | إذا لم تكن مستعدًا تمامًا لإدارة تهيئة الخادوم الخاصة بك أو لم تكن مرتاحًا لتكوين جميع الخدمات المتنوعة اللازمة لتشغيل تطبيق 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 والمزيد.