مقدمة
Apache هو حاليًا خادم الويب الأكثر استخدامًا في العالم. وهو برنامج مفتوح المصدر تم تطويره منذ أكثر من عشرين عامًا وتتم صيانته بواسطة the Apache Software Foundation. اعتبارًا من سبتمبر 2020، يُقدر أنه يخدم 35% من إجمالي حركة مرور مواقع الويب في العالم.
يفضل المطورون Apache لسرعته وأمانه وموثوقيته وقوته وسهولة تخصيصه. بالإضافة إلى ذلك، فإن Apache قادر على تلبية احتياجات العديد من البيئات لأنه يسمح بتثبيت العديد من الامتدادات والوحدات. هذا ممكن بسبب مجموعة من الإعدادات التي يمكن للمطورين ومسؤولي الخوادم تعديلها لخدمة أغراض مختلفة. في هذا البرنامج التعليمي، سنرشدك خلال ملفات التكوين العامة والخيارات التي يمكن أن تؤثر على نتائج مختلفة على خوادم Ubuntu و Debian.
Debian و Ubuntu هما من بين أفضل أنظمة تشغيل الخوادم المفضلة. هناك العديد من التشابهات بينهما. على سبيل المثال، كلاهما يستخدم مدير حزم APT و حزم DEB للتثبيت اليدوي. يتعامل كلاهما مع إعدادات Apache وبنية الدليل بشكل متشابه. وبالتالي، يجب أن تكون قادرًا على متابعة هذا البرنامج التعليمي باستخدام أي من نظامي التشغيل. أولاً، يمكنك متابعة هذا البرنامج التعليمي لإعداد خادم Ubuntu في بضع خطوات.
بعد ذلك، قم بتسجيل الدخول كمستخدم غير جذر (non-root) يتمتع بامتيازات sudo، ودعنا نبدأ!
كيفية تثبيت Apache على Ubuntu و Debian
إذا لم يكن خادمك يحتوي بالفعل على Apache، فيمكنك تثبيته بسهولة باستخدام أمر واحد. أولاً، قم بتشغيل أمر التحديث:
|
1 |
sudo apt-get update |
ثم، يمكنك تثبيت Apache عن طريق إصدار الأمر التالي:
|
1 |
sudo apt-get install apache2 |
عند اكتمال التثبيت، يمكنك التحقق من الإصدار المثبت باستخدام الأمر:
|
1 |
apache2 -v |
في وقت كتابة هذا البرنامج التعليمي، كان الإصدار:

بعد ذلك، قم بزيارة عنوان IP الخاص بخادمك أو اسم النطاق. يجب أن تكون قادرًا على رؤية صفحة الفهرس الافتراضية لـ Apache:

هيكل ملفات Apache في توزيعات Ubuntu و Debian
تستخدم كل من توزيعات Ubuntu و Debian مدير حزم apt. وبالمثل، عند تثبيت حزمة، فإنها تنشئ هياكل ملفات مماثلة. في حالتنا، لكل من Ubuntu و Debian، يحتفظ Apache بملفات التكوين الخاصة به داخل دليل “/etc/apache2” دليل. ادخل إلى الدليل باستخدام الأمر التالي واعرض محتويات الدليل:
|
1 2 |
cd /etc/apache2 ls -F |
يمكنك رؤية مخرجات الأمر في لقطة الشاشة أدناه:

يمكنك رؤية عدد من الملفات والأدلة الفرعية التي يجب أن تكون على دراية بها عند تكوين إعداد خادم Apache. إليك وصفها:
- apache2.conf – هو ملف التكوين الرئيسي لخادم Apache. كما أنه يحتوي على جميع التكوينات الافتراضية. في حين أنه يمكن إجراء جميع التكوينات تقريبًا من داخل هذا الملف، فمن المستحسن دائمًا استخدام ملفات مخصصة منفصلة للتبسيط وحماية هذا الملف الافتراضي من التلف.
- conf-available – هو الدليل الذي يحتوي على ملفات تكوين محلية إضافية وملفات لتطبيقات أخرى لم يتم ربطها بعد بأي وحدات. التكوينات في هذا الدليل ليست نشطة ما لم تقم بتمكينها. الأمر a2enconf يمكنه تمكين ملف تكوين. إليك محتويات هذا الدليل:

- conf-enabled – هو الدليل الذي يحتوي على تكوينات محلية إضافية وملفات تكوين لتطبيقات أخرى مرتبطة بالوحدات المقابلة لها. ملفات التكوين في هذا الدليل نشطة وتؤثر على سلوك Apache. يمكنك تعطيل ملف تكوين باستخدام الأمر a2disconf. إليك محتويات هذا الدليل:

- envvars – هو الملف الذي يحتوي على متغيرات البيئة لـ Apache2. تؤثر المتغيرات في هذا الملف على Apache فقط وليست مرتبطة بنظام Linux الخاص بك. إليك محتويات الملف:

- magic – هو الملف الذي يحتوي على تعليمات لتحديد نوع MIME للملف. يساعد الخادم على تحديد نوع الملف.
- mods-available – هو الدليل الذي يحتوي على ملفات التكوين لتحميل الوحدات وتكوينها. ومع ذلك، فهي ليست مُمكّنة بعد. يمكنك تمكينها باستخدام الأمر a2enmod.
- mods-enabled – هو الدليل الذي يحتوي على ملفات التكوين لتحميل الوحدات وتكوينها. التكوينات في هذا الدليل مُمكّنة بالفعل وترتبط بالوحدات المقابلة لها. يمكنك تعطيل الوحدات باستخدام الأمر a2dismod.
- ports-conf – هو الملف الذي يحدد المنافذ المتاحة للمضيفين الافتراضيين ومنافذ TCP التي يستمع إليها Apache.
- sites-available – هو الدليل الذي يحتوي على ملفات التكوين المتاحة لمضيفي Apache الافتراضيين. تتيح المضيفات الافتراضية لـ Apache خدمة مواقع ويب مختلفة. الملفات الموجودة في هذا الدليل ليست نشطة بعد. يمكنك تمكين ملف مضيف افتراضي باستخدام الأمر a2ensite.
- sites-enabled – هو الدليل الذي يحتوي على ملفات تكوين المضيف الافتراضي النشطة. وعادةً ما يحتوي على روابط رمزية للملفات الموجودة في دليل sites-available. يمكنك تعطيل ملف مضيف افتراضي باستخدام الأمر a2dissite.
يتيح لك التصميم المعياري لملفات تكوين Apache تعديل الملفات وإضافتها حسب حاجتك.
محتويات ملف Apache2.conf
الملف الموجود في “/etc/apache2/apache2.conf” يحتوي على ملفات التكوين الرئيسية لـ Apache. وبشكل أكثر تحديدًا، يحتوي على توجيهات التكوين التي تعطي الخادم تعليماته. ويتكون من ثلاثة أقسام لتحديد تكوينات عملية الخادم العام، وتكوين الخادم الافتراضي، وتكوينات المضيفين الافتراضيين .
في أنظمة Ubuntu وDebian، يحتوي الجزء الأكبر من الملف على تكوينات عملية الخادم العام. وباتجاه الجزء السفلي، يمكنك العثور على تكوينات الخادم الافتراضي والمضيفين الافتراضيين باستخدام توجيه “Include”. يستخدم Apache التوجيه “Include” لقراءة ملفات التكوين الأخرى ثم تضمينها في ملف التكوين الحالي، من النقطة التي يظهر فيها التوجيه. يحدث هذا عند بدء تشغيل خادم Apache.
عند التمرير إلى أسفل ملف apache2.conf، من المفترض أن ترى العديد من توجيهات التضمين (include). تقوم هذه التوجيهات بتحميل تعريفات الوحدات في دليل mods-enabled، وملف ports.conf، والتكوينات المحلية في دليل conf-enabled، وتكوينات المضيفين الافتراضيين في دليل sites-enabled.
قسم تكوين الخادم العام
يحتوي قسم تكوين الخادم العام على الإعدادات والتعليمات التي تتحكم في كيفية عمل Apache بشكل عام. ويتميز ببعض التوجيهات التي يمكنك تعديل قيمها لتغيير سلوك Apache. دعنا نناقش بعضًا منها:
- Timeout – يحدد هذا التوجيه الحد الأقصى للوقت الذي يستغرقه الخادم لتلبية الطلب. بشكل افتراضي، يكون 300 ثانية، وهو أمر مرتفع للغاية على الأرجح إذا كنت تقوم بتطوير تطبيق أسرع استجابة. يمكنك تغيير هذا إلى قيمة أقل إذا كان خادمك يحتوي على موارد كافية.
- KeepAlive – يحدد وجوب بقاء كل اتصال مفتوحًا لمعالجة طلبات can متعددة من نفس العميل. بشكل افتراضي، يتم تعيينه على “On”. ومع ذلك، إذا تم تعيينه على “Off”، فسيتعين على كل طلب إنشاء اتصال جديد، حتى لو كان من نفس العميل. قد يتسبب هذا في تحميل زائد كبير على الخادم.
- MaxKeepAliveRequests – يتحكم في الحد الأقصى لعدد الطلبات المسموح بها أثناء اتصال مستمر واحد قبل إنهاء الاتصال. للسماح بعدد غير محدود من الاتصالات، اضبط القيمة على 0. وللحصول على أقصى قدر من الأداء والكفاءة، اضبط الرقم على أعلى قيمة ممكنة.
- KeepAliveTimeout – يحدد الحد الأقصى لعدد الثواني لانتظار الطلب التالي من نفس العميل بعد الطلب الأخير قبل إنهاء الاتصال. القيمة الافتراضية هي 5 ثوانٍ. إذا انقضى الوقت، فسيتم إنشاء اتصال جديد في الطلب التالي لمعالجة الطلب.
- HostnameLookups – يحدد ما إذا كان ينبغي تمكين البحث عن اسم المضيف (DNS lookup) أم لا. بشكل افتراضي، يكون معطلاً. إذا قمت بتمكينه، فسيؤدي كل طلب إلى إجراء بحث واحد على الأقل في خادم الأسماء (nameserver)، مما سيؤثر بشكل كبير وسلبي على أداء خادمك.
ملف المضيف الافتراضي الافتراضي
يأتي التثبيت الجديد لخادم Apache مع ملف مضيف افتراضي افتراضي يسمى 000-default.conf. هذا هو الملف الذي يخدم صفحة index.html الافتراضية لـ Apache. يتم وضعه في دليل sites-available. ستعطيك محتويات هذا الملف فكرة عامة عن تنسيق ملفات المضيف الافتراضي لـ Apache. أدخل الأمر التالي لفتح الملف:
|
1 |
sudo nano /etc/apache2/sites-available/000-default.conf |
إليك محتويات الملف. لقد قمنا بإزالة التعليقات للإيجاز:
|
1 2 3 4 5 6 7 8 9 |
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> |
كما ترى في ترويسة التكوين VirtualHost *:80، يتم تكوين هذا المضيف الافتراضي افتراضيًا لمعالجة الطلبات على المنفذ 80. هذا هو منفذ HTTP القياسي.
تم تصميم Apache لاستخدام تعريف المضيف الافتراضي الأكثر تحديدًا والذي يطابق طلبًا معينًا. هذا يعني أن هذا المضيف الافتراضي المعين قد لا يعالج بالضرورة كل طلب إلى الخادم. بدلاً من ذلك، إذا كان هناك ملف مضيف افتراضي آخر بتعريف أكثر تحديدًا، فإنه سيلغي هذا الملف.
فيما يلي أوصاف التوجيهات في ملف المضيف الافتراضي:
- ServerAdmin – يحدد البريد الإلكتروني لجهة الاتصال لاستخدامه عند حدوث مشكلات في الخادم. يعرض Apache هذا عادةً على صفحة الخطأ التي ينشئها. إذا قمت بتعيين ServerSignature على “Email” في ملف /etc/apache2/conf-enabled/security.conf، فسيتم عرض عنوان البريد الإلكتروني المحدد هنا مع رابط mailto
- DocumentRoot – يشير هذا التوجيه إلى الدليل الذي يحتوي على ملفات موقع الويب. يمكنك العثور على صفحة الفهرس الترحيبية الافتراضية لـ Apache في الدليل /var/www/html في Ubuntu 20.04.
- ErrorLog – يحدد هذا التوجيه موقع ملف سجل الأخطاء.
- CustomLog – يوضح هذا التوجيه موقع سجل الوصول وتنسيق عرض السجل.
توجيهات المضيف الافتراضي الإضافية
- ServerName – يحدد اسم المجال أو عنوان IP الذي يجب أن يتعامل معه المضيف الافتراضي. إذا كنا نحدد مضيفين افتراضيين متعددين حتى يتمكن خادم Apache الخاص بنا من خدمة مواقع ويب متعددة، فسنضيف توجيه ServerName ونحدد المجال الذي يجب أن يخدمه كل مضيف افتراضي.
- ServerAlias – يجعل هذا التوجيه ملف مضيف افتراضي واحد ينطبق على أكثر من اسم واحد، مما يوفر مجالات بديلة للوصول إلى نفس المحتوى. على سبيل المثال، عندما يكون لدى المستخدمين إمكانية الوصول إلى نفس المحتوى إذا قاموا بسبق اسم المجال الخاص بك بـ www. على سبيل المثال، يمكننا إضافة ما يلي إلى المضيف الافتراضي لمجال example.com :
|
1 2 |
ServerName example.com ServerAlias www.example.com |
توجيه تعريف الدليل
في الحالات الواقعية، من المحتمل أن تكون ملفات موقع الويب الخاص بك في عدة أدلة. لا يحتوي ملف المضيف الافتراضي الافتراضي على توجيه Directory لأنه يمكنه فقط خدمة ملف index.html واحد. يحدد توجيه Directory كيفية تعامل Apache مع الأدلة المختلفة داخل جذر مستند موقع الويب. في هذا التوجيه أيضًا تحدد قيود الوصول إلى نظام الملفات. بشكل افتراضي، يسمح Apache فقط بالوصول عبر الإنترنت إلى الملفات الموجودة في الدليل /var/www. في هذا الدليل، يمكنك إنشاء أدلة أخرى ستحتوي على ملفات موقع الويب الخاص بك. بالإضافة إلى ذلك، يمكنك تحديد كيفية رغبتك في الوصول إلى الملفات الموجودة في الدليل. يمكن أن يبدو تعريف العينة كالتالي:
|
1 2 3 4 5 |
<Directory /var/www/html> Options Indexes FollowSymLinks MultiViews Require all granted AllowOverride all </Directory> |
يحدد <Directory /var/www/html> الدليل الذي ستنطبق عليه هذه القواعد. أما التوجيه “AllowOverride” يحدد ما إذا كان ملف “.htaccess” يجب أن يتجاوز الإعدادات إذا قمت بوضعه في الدليل المحدد. هذا ضروري عند العمل مع أطر عمل مثل Laravel التي تعمل مع .htaccess وإعادة كتابة عناوين URL.
لمعرفة المزيد حول المضيفين الافتراضيين، يمكنك زيارة الدرس التعليمي حول كيفية إعداد مضيفات Apache الافتراضية على Ubuntu 20.04. إليك نموذج لملف مضيف افتراضي يحتوي على جميع التوجيهات التي قمنا بتحديدها:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<VirtualHost *:80> ServerName example.com ServerAlias www.example.com ServerAdmin webmaster@localhost.com DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined <Directory /var/www/html> Options Indexes FollowSymLinks MultiViews Require all granted AllowOverride all </Directory> </VirtualHost> |
توجيهات Redirect و Alias و ScriptAlias
في بعض الحالات، قد ترغب في الوصول إلى ملفات موقع الويب أو الملفات القابلة للتنفيذ التي لا تقع مباشرة تحت دليل DocumentRoot. وهنا يأتي دور هذه التوجيهات الثلاثة.
يقوم التوجيه Redirect بتوجيه العملاء لإجراء طلب جديد باستخدام عنوان URL مختلف. عادةً، ستستخدمه عندما تريد توجيه زوار موقعك إلى اسم نطاق أو عنوان IP مختلف. لاحظ أن Redirect يتم تنفيذه أولاً قبل Alias و ScriptAlias. يقوم التوجيه Alias برسم خريطة لعنوان URL إلى مسار دليل. ويقوم التوجيه ScriptAlias بربط عنوان URL بالأدلة التي ستحتوي على البرمجيات النصية القابلة للتنفيذ. لكي يعمل Alias و ScriptAlias، يجب عليك تعيين أذونات الدليل لمستخدم www-data الذي يستخدمه الويب.
كيفية تمكين المواقع والوحدات في Apache
يجب تمكين المضيفين الافتراضيين والوحدات قبل أن يصبحوا نشطين ويمكن لعملية Apache الوصول إليهم. علاوة على ذلك، يتم إنشاء المضيفين الافتراضيين داخل دليل sites-available كما تم توضيحه. إذا كان لديك ملف مضيف افتراضي بالاسم example.com.conf، يمكنك تمكينه باستخدام الأمر التالي:
|
1 |
sudo a2ensite example.com.conf |
يقوم الأمر بتمكين المضيف الافتراضي. ومع ذلك، لكي تدخل التغييرات حيز التنفيذ، يجب عليك توجيه Apache لإعادة تحميل ملفات التكوين عن طريق إدخال الأمر التالي:
|
1 |
sudo service apache2 reload |
قد ترغب في تعطيل ملف مضيف افتراضي يسمى example.com.conf حتى لا يستخدمه Apache لخدمة الطلبات. للقيام بذلك، أدخل الأمر التالي لتعطيل الملف:
|
1 |
sudo a2dissite example.com.conf |
مرة أخرى، لكي تدخل التغييرات حيز التنفيذ على الفور، يجب عليك توجيه apache لإعادة تحميل ملفات التكوين عن طريق إدخال الأمر التالي:
|
1 |
sudo service apache2 reload |
وبالمثل، يمكنك تمكين وتعطيل الوحدات باستخدام نفس الصيغة. أمر تمكين الوحدة هو “a2enmod” وأمر تعطيل الوحدة هو “a2dismod.” على سبيل المثال، هناك وحدة في Apache تسمى mod_rewrite تساعد في إعادة كتابة عناوين URL اعتمادًا على تكوينات .htaccess. يجب عليك تمكين هذه الوحدة لكي يعمل ملف .htaccess. يمكنك القيام بذلك عن طريق إدخال الأمر:
|
1 |
sudo a2enmod rewrite |
لكي يدخل هذا التغيير حيز التنفيذ، يجب عليك إعادة تحميل تكوينات Apache. يمكنك أيضًا تعطيل الوحدة عن طريق إدخال الأمر:
|
1 |
sudo a2dismod rewrite |
بعد ذلك، أعد تحميل تكوينات Apache2 لتطبيق التغييرات على الفور.
أخيرًا، إليك بعض الموارد الإضافية التي ستساعدك في التعرف على خادم ويب Apache:
- تثبيت خادم Apache على Ubuntu 18.04: دليل إرشادي
- كيفية تثبيت حزمة Linux و Apache و MySQL و PHP (LAMP) على CentOS 7
- تأمين Apache باستخدام Let’s Encrypt على Ubuntu 18.04
- عالم خوادم الويب: Apache مقابل Nginx
الخاتمة
في هذا الدرس التطبيقي، قمنا بتعريف ملفات تكوين Apache الأساسية على نظامي Ubuntu و Debian. وكما أوضحنا، فإن Apache يتميز بكونه تركيبيًا للغاية، مما يعني أنه يمكنك تثبيت الكثير من الوحدات لأداء مهام مختلفة.
يمكنك بسهولة تمكين وتعطيل هذه الوحدات وتغيير التكوينات الأخرى لتحقيق نتائج مختلفة. يمكنك الآن تعديل ملفات التكوين المحلية والتي يتم تضمينها بعد ذلك في ملف التكوين الرئيسي. وبالتالي، لا داعي للقلق بشأن إتلاف ملف التكوين العام.
حوسبة سعيدة!
التعليقات
لا توجد تعليقات بعد. كن أول من يعلق.