docs:best_apache_settings

أفضل إعدادات لخادم الويب أباتشي

خادم الويب أباتشي Apache (والذي يعرف بالاسم العام httpd بعد إصداره الثاني) يمتاز بالعديد من الوحدات الإضافية وله ملف إعدادات مرن جدا يمكن معايرة أداء الخادم للحصول على أداء أعلى عند ثبات كل العوامل الخرى (أي بصرف النظر العتاد أو عن لغة برمجة تطبيق الويب وسرعتها وغيرها)

<note important> هذه المقالة لا تشرح بدهيات إعدادات الخادم وإنما خلاصة للقيم المثلى. </note>

أداة قياس الأداء ab

هناك أداة لقياس الأداء اسمها apache benchmarking tool (في فيدورا وبالتالي أعجوبة اسم الحزمة هو httpd-tools)

<note>يمكن استخدام أداة ab لقياس أداء خوادم أخرى</note>

الخيارات

  • c عدد الاتصالات المتزامنة
  • n عدد الإتصالات الإجمالية

مثلا

ab -c 100 -n 500 http://localhost/

وحدات المعالجة المتعددة MPM

عليك اختيار أحد الوحدات الثلاثة الخاصة بالمعالجة المتعددة MPM

  • prefork - الأكثر استقرارا أو لأغراض التوافقية
  • worker - أعلى أداء من الذي قبله للمواقع التي تحتاج موازاة أكثر
  • event - تطوير تجريبي من الذي قبله لمزيد من الأداء

في فيدورا وأعجوبة حزمة httpd تحتوي ثلاثتهم لكن التلقائي هو prefork ويمكن تغيره عبر تحرير /etc/sysconfig/httpd حيث يحتوي على سطر (نزيل علامة التعليق #)

HTTPD=/usr/sbin/httpd.worker

وحتى يعمل worker أو event يجب أن يكون مفسر php معد لهذا، في فيدورا وبالتالي أعجوبة عليك تثبيت حزمة php-zts التي تحتوي على Thread-safe PHP interpreter المعد لهذا الغرض لكنه لا يدعم الكثير من المكتبات التي تلزمك في php لذلك عليك استخدام fcgi لتشغيل php.

في ديبيان (وبالتالي أوبنتو) يتم اختبار ذلك من خلال الحزمة مثلا apache2-mpm-prefork أو apache2-mpm-worker

ضغط الملفات النصية

ضغط الملفات فيه مقايضة بين الحجم المرسل عبر الشبكة وبين موارد الجهاز (وقت المعالج والذاكرة الضائعة في عملية الضغط) وهو مجدي جدا في حالة الملفات النصية ويمكن تفعليه بالإعدادات التالية

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

التحكم في الكاش

يمكن اخبار المتصفح أن بعض الملفات لن تتغير خلال كذا يوما. وهذا يصلح لملفات الصور وملفات css و js

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"

أو يمكنك حصرها بواسطة FilesMatch عوضا عن MIME Type هكذا

<FilesMatch "\.(gif|jpe?g|png|css|js)(\?.*)?$">
ExpiresActive On
ExpiresDefault "access plus 1 month"
Header append Cache-Control "public"
</FilesMatch>

نقاش

http://www.7obkk.com, 2011/09/07 12:46

http://www.7obkk.com

Nelle, 2011/12/30 17:26

Kick the tires and light the fires, problem offciially solved!

Leon, 2012/03/01 06:08

You've maanegd a first class post

Auth, 2012/10/06 13:57

All of my questions steteld-thanks!

beknaoui, 2016/10/21 13:34
السلام عليكم اخوني ممكن مسعدة انا اشتريت نطاق ولكن لا عرف طريقة تنصيبه اوتركيب ولاشي ارجو المساعدة وشكرا
أدخل تعليقك:
 
آخر تعديل:: 23 نيسان 2015 الساعة 00:19 (تحرير خارجي)