الفرق بين المراجعتين لصفحة: «Laravel/deployment»
رؤيا-بنعطية (نقاش | مساهمات) لا ملخص تعديل |
رؤيا-بنعطية (نقاش | مساهمات) لا ملخص تعديل |
||
سطر 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 { | ||
سطر 47: | سطر 47: | ||
عند النشر على الخادم الإنتاجي، تأكد من أنك تقوم بتحسين خريطة المحمل الآلي لبرمجية composer حتى يتمكن composer من العثور بسرعة على الملف المناسب للتحميل الصنف المعين:<syntaxhighlight lang="text"> | عند النشر على الخادم الإنتاجي، تأكد من أنك تقوم بتحسين خريطة المحمل الآلي لبرمجية composer حتى يتمكن composer من العثور بسرعة على الملف المناسب للتحميل الصنف المعين:<syntaxhighlight lang="text"> | ||
composer install --optimize-autoloader --no-dev | composer install --optimize-autoloader --no-dev | ||
</syntaxhighlight>بالإضافة إلى تحسين أداة التحميل التلقائي، يجب التأكد دائمًا من تضمين ملف composer.lock في مستودع التحكم في مصدر المشروع. يمكن تثبيت اعتماديات مشروعك بسرعة أكبر عندما يكون ملف <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]] في ملف واحد مخزنٌ تخزينًا مؤقتًا مما يؤدي إلى تقليل عدد الحركات التي يجب أن يقوم بها إطار العمل على نظام الملفاتعندما تُحمَّل قيم خيارات الضبط. | ||
إذا قمت بتنفيذ الأمر config:cache أثناء عملية النشر على الخادم الإنتاجي، فيجب أن تتأكد من أنك تقوم فقط بالاتصال بالدالة <code>env</code> من داخل ملفات الضبط الخاصة بك. بمجرد تخزين الضبط المؤقت، فلن يُحمِّل الملف .env وستُعيد كافة الإستدعاءات إلى الدالة <code>env</code> القيمة <code>null</code>. | إذا قمت بتنفيذ الأمر <code>config:cache</code> أثناء عملية النشر على الخادم الإنتاجي، فيجب أن تتأكد من أنك تقوم فقط بالاتصال بالدالة <code>env</code> من داخل ملفات الضبط الخاصة بك. بمجرد تخزين الضبط المؤقت، فلن يُحمِّل الملف <code>.env</code> وستُعيد كافة الإستدعاءات إلى الدالة <code>env</code> القيمة <code>null</code>. | ||
=== تحسين تحميل المسارات === | === تحسين تحميل المسارات === | ||
سطر 61: | سطر 61: | ||
</syntaxhighlight>هذا الأمر يقلل من عمليات تسجيل المسارات الخاصة بك من خلال استدعاء تابع وحيد ويتم تخزينه في ملف تخزين مؤقت، مما يؤدي إلى تحسين أداء تسجيل المسارات عند تسجيل مئات المسارات. | </syntaxhighlight>هذا الأمر يقلل من عمليات تسجيل المسارات الخاصة بك من خلال استدعاء تابع وحيد ويتم تخزينه في ملف تخزين مؤقت، مما يؤدي إلى تحسين أداء تسجيل المسارات عند تسجيل مئات المسارات. | ||
نظرًا لأن هذه الميزة تستخدم سَلسَلة 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]] والمزيد. | ||
== مصادر == | == مصادر == |
مراجعة 12:19، 18 أكتوبر 2018
مقدمة
عندما تكون جاهزًا لنشر تطبيق 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 والمزيد.