العودة إلى المدونة

إعداد خادم الويب Apache على Ubuntu أو Debian VPS

إعداد خادم الويب Apache على Ubuntu أو Debian VPS

مقدمة

Apache هو حاليًا خادم الويب الأكثر استخدامًا في العالم. وهو برنامج مفتوح المصدر تم تطويره منذ أكثر من عشرين عامًا وتتم صيانته بواسطة the Apache Software Foundation. اعتبارًا من سبتمبر 2020، يُقدر أنه يخدم 35% من إجمالي حركة مرور مواقع الويب في العالم.

يفضل المطورون Apache لسرعته وأمانه وموثوقيته وقوته وسهولة تخصيصه. بالإضافة إلى ذلك، فإن Apache قادر على تلبية احتياجات العديد من البيئات لأنه يسمح بتثبيت العديد من الامتدادات والوحدات. هذا ممكن بسبب مجموعة من الإعدادات التي يمكن للمطورين ومسؤولي الخوادم تعديلها لخدمة أغراض مختلفة. في هذا البرنامج التعليمي، سنرشدك خلال ملفات التكوين العامة والخيارات التي يمكن أن تؤثر على نتائج مختلفة على خوادم Ubuntu و Debian.

Debian و Ubuntu هما من بين أفضل أنظمة تشغيل الخوادم المفضلة. هناك العديد من التشابهات بينهما. على سبيل المثال، كلاهما يستخدم مدير حزم APT و حزم DEB للتثبيت اليدوي. يتعامل كلاهما مع إعدادات Apache وبنية الدليل بشكل متشابه. وبالتالي، يجب أن تكون قادرًا على متابعة هذا البرنامج التعليمي باستخدام أي من نظامي التشغيل. أولاً، يمكنك متابعة هذا البرنامج التعليمي لإعداد خادم Ubuntu في بضع خطوات.

بعد ذلك، قم بتسجيل الدخول كمستخدم غير جذر (non-root) يتمتع بامتيازات sudo، ودعنا نبدأ!

كيفية تثبيت Apache على Ubuntu و Debian

إذا لم يكن خادمك يحتوي بالفعل على Apache، فيمكنك تثبيته بسهولة باستخدام أمر واحد. أولاً، قم بتشغيل أمر التحديث:

ثم، يمكنك تثبيت Apache عن طريق إصدار الأمر التالي:

عند اكتمال التثبيت، يمكنك التحقق من الإصدار المثبت باستخدام الأمر:

في وقت كتابة هذا البرنامج التعليمي، كان الإصدار:

Apache Web Server

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

Apache Web Server

هيكل ملفات Apache في توزيعات Ubuntu و Debian

تستخدم كل من توزيعات Ubuntu و Debian مدير حزم apt. وبالمثل، عند تثبيت حزمة، فإنها تنشئ هياكل ملفات مماثلة. في حالتنا، لكل من Ubuntu و Debian، يحتفظ Apache بملفات التكوين الخاصة به داخل دليل “/etc/apache2” دليل. ادخل إلى الدليل باستخدام الأمر التالي واعرض محتويات الدليل:

يمكنك رؤية مخرجات الأمر في لقطة الشاشة أدناه:

screenshot

يمكنك رؤية عدد من الملفات والأدلة الفرعية التي يجب أن تكون على دراية بها عند تكوين إعداد خادم Apache. إليك وصفها:

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

Apache Web Server

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

conf-enabled

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

envvars

  • 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. أدخل الأمر التالي لفتح الملف:

إليك محتويات الملف. لقد قمنا بإزالة التعليقات للإيجاز:

كما ترى في ترويسة التكوين 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 :

توجيه تعريف الدليل

في الحالات الواقعية، من المحتمل أن تكون ملفات موقع الويب الخاص بك في عدة أدلة. لا يحتوي ملف المضيف الافتراضي الافتراضي على توجيه Directory لأنه يمكنه فقط خدمة ملف index.html واحد. يحدد توجيه Directory كيفية تعامل Apache مع الأدلة المختلفة داخل جذر مستند موقع الويب. في هذا التوجيه أيضًا تحدد قيود الوصول إلى نظام الملفات. بشكل افتراضي، يسمح Apache فقط بالوصول عبر الإنترنت إلى الملفات الموجودة في الدليل /var/www. في هذا الدليل، يمكنك إنشاء أدلة أخرى ستحتوي على ملفات موقع الويب الخاص بك. بالإضافة إلى ذلك، يمكنك تحديد كيفية رغبتك في الوصول إلى الملفات الموجودة في الدليل. يمكن أن يبدو تعريف العينة كالتالي:

يحدد <Directory /var/www/html> الدليل الذي ستنطبق عليه هذه القواعد. أما التوجيه “AllowOverride” يحدد ما إذا كان ملف “.htaccess” يجب أن يتجاوز الإعدادات إذا قمت بوضعه في الدليل المحدد. هذا ضروري عند العمل مع أطر عمل مثل Laravel التي تعمل مع .htaccess وإعادة كتابة عناوين URL.

لمعرفة المزيد حول المضيفين الافتراضيين، يمكنك زيارة الدرس التعليمي حول كيفية إعداد مضيفات Apache الافتراضية على Ubuntu 20.04. إليك نموذج لملف مضيف افتراضي يحتوي على جميع التوجيهات التي قمنا بتحديدها:

توجيهات 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، يمكنك تمكينه باستخدام الأمر التالي:

يقوم الأمر بتمكين المضيف الافتراضي. ومع ذلك، لكي تدخل التغييرات حيز التنفيذ، يجب عليك توجيه Apache لإعادة تحميل ملفات التكوين عن طريق إدخال الأمر التالي:

قد ترغب في تعطيل ملف مضيف افتراضي يسمى example.com.conf حتى لا يستخدمه Apache لخدمة الطلبات. للقيام بذلك، أدخل الأمر التالي لتعطيل الملف:

مرة أخرى، لكي تدخل التغييرات حيز التنفيذ على الفور، يجب عليك توجيه apache لإعادة تحميل ملفات التكوين عن طريق إدخال الأمر التالي:

وبالمثل، يمكنك تمكين وتعطيل الوحدات باستخدام نفس الصيغة. أمر تمكين الوحدة هو “a2enmod” وأمر تعطيل الوحدة هو “a2dismod.” على سبيل المثال، هناك وحدة في Apache تسمى mod_rewrite تساعد في إعادة كتابة عناوين URL اعتمادًا على تكوينات .htaccess. يجب عليك تمكين هذه الوحدة لكي يعمل ملف .htaccess. يمكنك القيام بذلك عن طريق إدخال الأمر:

لكي يدخل هذا التغيير حيز التنفيذ، يجب عليك إعادة تحميل تكوينات Apache. يمكنك أيضًا تعطيل الوحدة عن طريق إدخال الأمر:

بعد ذلك، أعد تحميل تكوينات Apache2 لتطبيق التغييرات على الفور.

أخيرًا، إليك بعض الموارد الإضافية التي ستساعدك في التعرف على خادم ويب Apache:

الخاتمة

في هذا الدرس التطبيقي، قمنا بتعريف ملفات تكوين Apache الأساسية على نظامي Ubuntu و Debian. وكما أوضحنا، فإن Apache يتميز بكونه تركيبيًا للغاية، مما يعني أنه يمكنك تثبيت الكثير من الوحدات لأداء مهام مختلفة.

يمكنك بسهولة تمكين وتعطيل هذه الوحدات وتغيير التكوينات الأخرى لتحقيق نتائج مختلفة. يمكنك الآن تعديل ملفات التكوين المحلية والتي يتم تضمينها بعد ذلك في ملف التكوين الرئيسي. وبالتالي، لا داعي للقلق بشأن إتلاف ملف التكوين العام.

حوسبة سعيدة!

author

Manpreet Singh

المؤلف · CloudSigma

Preslav Dobrev هو مصمم إبداعي في CloudSigma، يركز على هوية أعمال متسقة باستخدام قنوات التسويق التقليدية والمبتكرة. هو بارع في دمج الرؤية الفنية مع التسويق الاستراتيجي لخلق سرد قصصي مؤثر للعلامة التجارية.

التعليقات

لا توجد تعليقات بعد. كن أول من يعلق.