أدوات المستخدم

أدوات الموقع


docs:best_apache_settings

اختلافات

عرض الاختلافات بين النسخة المختارة و النسخة الحالية من الصفحة.

رابط إلى هذه المقارنة

جانبي المراجعة السابقة المراجعة السابقة
المراجعة التالية
المراجعة السابقة
docs:best_apache_settings [2011/05/18 11:10]
alsadi php-zts - Thread-safe PHP interpreter
docs:best_apache_settings [2015/04/23 00:19] (حالي)
سطر 1: سطر 1:
 +{{tag>​مقالات خوادم ويب أباتشي}}
 +====== أفضل إعدادات لخادم الويب أباتشي ======
 +خادم الويب **أباتشي Apache** (والذي يعرف بالاسم العام httpd بعد إصداره الثاني) يمتاز بالعديد من الوحدات الإضافية وله ملف إعدادات مرن جدا يمكن معايرة أداء الخادم للحصول على أداء أعلى عند ثبات كل العوامل الخرى (أي بصرف النظر العتاد أو عن لغة برمجة تطبيق الويب وسرعتها وغيرها)
 +
 +<note important>​
 +هذه المقالة لا تشرح بدهيات إعدادات الخادم وإنما خلاصة للقيم المثلى.
 +</​note>​
 +
 +===== أداة قياس الأداء ab =====
 +
 +هناك أداة لقياس الأداء اسمها apache benchmarking tool (في فيدورا وبالتالي أعجوبة اسم الحزمة هو httpd-tools)
 +
 +<​note>​يمكن استخدام أداة ab لقياس أداء خوادم أخرى</​note>​
 +
 +الخيارات
 +
 +  * c عدد الاتصالات المتزامنة
 +  * n عدد الإتصالات الإجمالية
 +
 +مثلا
 +  ab -c 100 -n 500 http://​localhost/​
 +
 +===== وحدات المعالجة المتعددة MPM =====
 +عليك اختيار أحد [[http://​httpd.apache.org/​docs/​2.2/​mpm.html|الوحدات الثلاثة الخاصة بالمعالجة المتعددة MPM]]
 +  * prefork - الأكثر استقرارا أو لأغراض التوافقية
 +  * worker - أعلى أداء من الذي قبله للمواقع التي تحتاج موازاة أكثر
 +  * event - تطوير **تجريبي** من الذي قبله لمزيد من الأداء
 +
 +في فيدورا وأعجوبة حزمة httpd تحتوي ثلاثتهم لكن التلقائي هو prefork ويمكن تغيره عبر تحرير /​etc/​sysconfig/​httpd حيث يحتوي على سطر (نزيل علامة التعليق #)
 +
 +<​code>​
 +HTTPD=/​usr/​sbin/​httpd.worker
 +</​code>​
 +
 +وحتى يعمل worker أو event يجب أن يكون مفسر php معد لهذا، في فيدورا وبالتالي أعجوبة عليك تثبيت حزمة **php-zts** التي تحتوي على Thread-safe PHP interpreter المعد لهذا الغرض لكنه لا يدعم الكثير من المكتبات التي تلزمك في php لذلك عليك استخدام fcgi لتشغيل php.
 +
 +في ديبيان (وبالتالي أوبنتو) يتم اختبار ذلك من خلال الحزمة مثلا apache2-mpm-prefork أو apache2-mpm-worker
 +
 +===== ضغط الملفات النصية =====
 +ضغط الملفات فيه مقايضة بين الحجم المرسل عبر الشبكة وبين موارد الجهاز (وقت المعالج والذاكرة الضائعة في عملية الضغط) وهو مجدي جدا في حالة الملفات النصية ويمكن تفعليه بالإعدادات التالية
 +
 +<​code>​
 +AddOutputFilterByType DEFLATE text/html text/plain text/xml text/​javascript text/css application/​json
 +
 +# Netscape 4.x has some problems...
 +BrowserMatch ^Mozilla/4 gzip-only-text/​html
 +
 +# Netscape 4.06-4.08 have some more problems
 +BrowserMatch ^Mozilla/​4\.0[678] no-gzip
 +
 +# MSIE masquerades as Netscape, but it is fine
 +BrowserMatch \bMSIE !no-gzip !gzip-only-text/​html
 +
 +# Do NOT compress localhost
 +SetEnvIf Remote_Host 127.0.0.1 no-gzip
 +
 +# Make sure proxies don't deliver the wrong content
 +Header append Vary User-Agent env=!dont-vary
 +</​code>​
 +
 +===== التحكم في الكاش =====
 +يمكن اخبار المتصفح أن بعض الملفات لن تتغير خلال كذا يوما. وهذا يصلح لملفات الصور وملفات css و js
 +
 +<​code>​
 +ExpiresActive On
 +ExpiresByType image/gif "​access plus 2 days"
 +ExpiresByType image/jpeg "​access plus 2 days"
 +ExpiresByType image/png "​access plus 2 days"
 +ExpiresByType text/css "​access plus 2 days"
 +ExpiresByType text/​javascript "​access plus 2 days"
 +Header append Cache-Control "​public"​
 +</​code>​
 +أو يمكنك حصرها بواسطة FilesMatch عوضا عن MIME Type هكذا
 +
 +<​code>​
 +<​FilesMatch "​\.(gif|jpe?​g|png|css|js)(\?​.*)?​$">​
 +ExpiresActive On
 +ExpiresDefault "​access plus 1 month"
 +Header append Cache-Control "​public"​
 +</​FilesMatch>​
 +</​code>​
  
docs/best_apache_settings.txt · آخر تعديل: 2015/04/23 00:19 (تحرير خارجي)