كيفية تكوين خادم ويب أباتشي على VPS بنظام التشغيل Ubuntu أو Debian

المقدمة

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

سيقوم هذا المقال بفحص بعض ملفات التكوين العامة والخيارات التي يمكن التحكم فيها ضمنها. سيتبع هذا المقال تخطيط أباتشي لنظام التشغيل أوبونتو/ديبيان، والذي يختلف عن كيفية بناء التسلسل الهرمي للتكوين في توزيعات أخرى.

المتطلبات المسبقة

إذا كنت تستخدم إصدار أوبونتو 16.04 أو أقل، فإننا نوصي بالترقية إلى إصدار أحدث حيث أن أوبونتو لم تعد توفر الدعم لهذه الإصدارات. ستساعدك هذه مجموعة من الأدلة في ترقية إصدار أوبونتو الخاص بك.

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

  • قبل أن تبدأ في استكشاف تكوينات Apache الخاصة بك، يجب أن يكون Apache مثبتًا على خادمك. يمكنك التعلم من خلال اتباع دليلنا “كيفية تثبيت خادم ويب Apache على أوبونتو” الخاص بنا 22.04 / 20.04 / 18.04 أو الدليل كيفية تثبيت خادم ويب Apache على Debian 10.

5 خطوات لتكوين خادم الويب Apache على أوبونتو

  1. تسلسل الملفات في Apache
  2. استكشاف ملف Apache2.conf
  3. ضبط تكوينات Apache العامة
  4. إعداد ملف الاستضافة الظاهرية في Apache
  5. تمكين المواقع والوحدات

الخطوة 1: تسلسل الملفات في Apache

تُحتفظ Apache بملفات تكوينها الرئيسية داخل مجلد /etc/apache2. تنفيذ الأمر التالي سيقوم بإدراج جميع الملفات داخل هذا المجلد:

  1. ls -f /etc/apache2
Output
envars sites-available . apache2.conf .. sites-enabled mods-available ports.conf magic mods-enabled conf-enabled conf-available

هناك عدد من ملفات النص العادية وبعض الأدلة الفرعية داخل هذا الدليل. فيما يلي بعض المواقع المفيدة لتكون على دراية بها:

  • apache2.conf: هذا هو الملف التكويني الرئيسي للخادم. يمكن القيام بتكوين تقريبًا كل شيء من داخل هذا الملف، على الرغم من أنه من المستحسن استخدام ملفات منفصلة مخصصة للبساطة. سيقوم هذا الملف بتكوين القيم الافتراضية ويكون النقطة المركزية للوصول لتفاصيل التكوين.
  • ports.conf: يتم استخدام هذا الملف لتحديد المنافذ التي يجب أن تستمع إليها المضيفات الافتراضية عليها. تأكد من التحقق من صحة هذا الملف إذا كنت تقوم بتكوين SSL.
  • sites-available/ و sites-enabled/: يحتوي مجلد sites-available على تكوينات ملفات المضيف الافتراضية. تقوم التكوينات داخل هذا المجلد بتحديد أي محتوى يتم تقديمه لأي طلبات. يتم تمكين هذا من خلال الارتباط بمجلد sites-enabled، الذي يخزن ملفات تكوين المضيف الافتراضي المفعّلة. عندما يبدأ Apache أو يعيد تحميله، يقرأ ملفات التكوين والروابط من داخل مجلد sites-enabled أثناء تجميع التكوين الكامل.
  • conf-available/ و conf-enabled/: تحتوي هذه المجلدات على شظايا تكوين غير مرتبطة بملفات تكوين المضيف الافتراضية.
  • mods-enabled/ و mods-available/: هذه الدلائل تعرّف الوحدات التي يمكن تحميلها اختياريًا. تحتوي الدلائل على عنصرين: الملفات التي تنتهي بامتداد .load، والتي تحتوي على شظايا تحمل وحدات معينة، والملفات التي تنتهي بامتداد .conf، والتي تخزن تكوينات هذه الوحدات.

تكوين أباتشي لا يحدث في ملف واحد ضخم، بل يحدث من خلال تصميم مُعمَّد حيث يمكن إضافة ملفات جديدة وتعديلها حسب الحاجة.

الخطوة 2: استكشاف ملف Apache2.conf

تُحتفظ بتفاصيل التكوين الرئيسية لخادم Apache الخاص بك في ملف /etc/apache2/apache2.conf. ينقسم هذا الملف إلى ثلاثة أقسام رئيسية:

  • تكوين لعملية خادم Apache العام
  • تكوين للخادم الافتراضي
  • تكوين للمضيفين الافتراضيين.

افتح هذا الملف باستخدام محرر النص المفضل لديك. يُستخدم في المثال التالي nano:

  1. sudo nano /etc/apache2/apache2.conf

في أوبونتو وديبيان، يُستخدم هذا الملف لتكوين التعاريف العامة. يتم التعامل مع تكوين الخادم الافتراضي والمضيفين الافتراضيين باستخدام التوجيهة Include. التوجيهة Include تُتيح لأباتشي قراءة ملفات التكوين الأخرى داخل الملف الحالي في الموقع الذي تظهر فيه البيان. النتيجة هي أن أباتشي يولد ديناميكيًا ملف تكوين شامل عند بدء التشغيل.

يتم العثور ضمن هذا الملف على عدد من التعليمات المختلفة Include و IncludeOptional. تحمل هذه التوجيهات تعاريف الوحدات، وثيقة ports.conf، وملفات التكوين المحددة في الدليل conf-enabled/، وتعاريف المضيف الظاهري في الدليل sites-enabled/:

/etc/apache2/apache2.conf
…
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
…
Include ports.conf
…
IncludeOptional conf-enabled/*.conf
…
IncludeOptional sites-enabled/*.conf

الخطوة 3: إعداد التكوينات العامة لأباتشي

هناك بعض الخيارات التي قد ترغب في تعديلها في التكوين العام:

المهلة

بشكل افتراضي، يتم تعيين هذا المعلم إلى 300. وهذا يعني أن الخادم لديه حد أقصى يبلغ 300 ثانية لتنفيذ كل طلب.
يمكن إنزال هذا المعلم بأمان إلى شيء ما بين 30 و 60 ثانية.

الحفاظ على الاتصال

هذا الخيار، إذا تم تعيينه إلى On، سيسمح لكل اتصال بالبقاء مفتوحًا لمعالجة الطلبات المتعددة من نفس العميل.
إذا تم تعيينه إلى Off، فإن كل طلب سيتعين عليه إنشاء اتصال جديد، مما قد يؤدي إلى تكاليف إضافية كبيرة تبعًا لإعدادك وحركة المرور.

MaxKeepAliveRequests

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

KeepAliveTimeout

هذا الإعداد يحدد مقدار الوقت الذي يجب الانتظار حتى يتم استلام الطلب التالي بعد الانتهاء من الطلب السابق. إذا تم الوصول إلى عتبة الانتهاء، سيتم إنهاء الاتصال.
هذا يعني أنه في المرة القادمة التي يتم فيها طلب المحتوى، سيقوم الخادم بإنشاء اتصال جديد لمعالجة الطلب للمحتوى الذي يشكل الصفحة التي يقوم العميل بزيارتها. الإعداد الافتراضي مضبوط على 5.

بعد فحص محتويات هذا الملف التكوين، يمكنك إغلاقه عن طريق الضغط على CTRL+X.

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

A Multi-Processing Module (MPM) extends Apache’s modular design. MPMs are responsible for listening, directing, and handling different network requests. You can cross-reference which section your Apache installation was compiled in with using the following command:

  1. apache2 -L
Output
Compiled in modules: core.c mod_so.c mod_watchdog.c http_core.c mod_log_config.c mod_logio.c mod_version.c mod_unixd.c

يمكنك التحقق من نوع MPM على خادمك باستخدام الأمر a2query -M:

  1. a2query -M
Output
event

تُظهر النتيجة أن MPM الحدث مستخدم على هذا الخادم. قد تحتوي التثبيتات المختلفة على عدة خيارات للاختيار من بينها، ولكن يمكن تحديد واحدة فقط.

الخطوة 4: تحديث ملف الاستضافة الافتراضي لأباتشي

يمكن العثور على تعريف الاستضافة الافتراضي في ملف يُسمى 000-default.conf داخل الدليل sites-available/. يمكنك التعرف على التنسيق العام لملف الاستضافة الافتراضي من خلال فحص هذا الملف.

افتح الملف باستخدام الأمر التالي:

  1. sudo nano /etc/apache2/sites-available/000-default.conf
/etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
…
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
…
ErrorLog ${APACHE LOG DIR}/error.log
CustomLog ${APACHE LOG DIR}/access.log combined
…

تم تكوين الاستضافة الافتراضية للتعامل مع أي طلب على المنفذ 80، وهو منفذ HTTP القياسي. يُعرف ذلك في رأس التعريف حيث يقول *:80، مما يعني المنفذ 80 على أي واجهة.
ومع ذلك، هذا لا يعني بالضرورة أنه سيتم التعامل مع كل طلب على الخادم على هذا المنفذ. تستخدم أباتشي التعريف الأكثر تحديدًا للاستضافة الافتراضية التي تتطابق مع الطلب. إذا كان هناك تعريف أكثر تحديدًا، فيمكن أن يتفوق على هذا التعريف. بعد فحص الملف، يمكنك إغلاقه بالضغط على CTRL+X.

تكوين الاستضافة الظاهرية لأباتشي

الخيارات التالية مُعينة داخل تعريف الاستضافة الظاهرية خارج أي تعريف فرعي منخفض المستوى آخر. تنطبق على الاستضافة الظاهرية بأكملها.
للبدء، افتح ملف security.conf ضمن الدليل conf-available/:

  1. sudo nano /etc/apache2/conf-available/security.conf

يحتوي هذا الملف على توجيه Server Signature، الذي يتيح لك تحديد عنوان البريد الإلكتروني للاتصال يجب استخدامه عند حدوث مشاكل في الخادم. يمكنك تغيير الخيار الافتراضي من On إلى EMail لكشف عن عنوان بريد المسؤول عن الخادم. تأكد من رغبتك في استقبال البريد إذا قمت بتعديل هذا الإعداد:

/etc/apache2/conf-available/security.conf
…
ServerSignature EMail

اخرج من الملف بالضغط على CTRL+X. بعد تحرير ملف التكوين، ستُطلب منك التأكيد على تغييراتك. اضغط Y لحفظ التغييرات في ملفك أو اضغط N للتخلي عنها.

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

قم بتشغيل الأمر التالي لفتح ملف الاستضافة الظاهرية الخاص بك، مُتأكدًا من استبدال المتغير your_domain بالاسم الفعلي لنطاقك:

  1. sudo nano /etc/apache2/sites-available/your_domain.conf

أضف your_domain إلى التوجيهة ServerName:

/etc/apache2/sites-available/your_domain.conf
…
ServerName your_domain

بالمثل، يمكنك أيضًا جعل الخادم الافتراضي ينطبق على أكثر من اسم باستخدام توجيهة ServerAlias. يوفر ذلك مسارات بديلة للوصول إلى نفس المحتوى. حالة استخدام جيدة لهذا هي إضافة نفس النطاق، مسبوقًا بـ www:

/etc/apache2/sites-available/your_domain.conf
…
ServerAlias www.your_domain.com

توجيهة DocumentRoot تحدد مكان المحتوى المطلوب لهذا الخادم الافتراضي. في أوبونتو، يتم تعيين الخادم الافتراضي الأولي لتقديم المحتوى من الدليل /var/www/:

/etc/apache2/sites-available/your_domain.conf
…
DocumentRoot /var/www/your_domain/public_html

تعاريف الدلائل

Dentro de la definición del servidor virtual, hay definiciones sobre cómo maneja el servidor diferentes directorios dentro del sistema de archivos. Apache aplicará todas estas instrucciones en orden de más corto a más largo, por lo que hay una vez más una posibilidad de anular las opciones anteriores.

افتح ملف apache2.conf بهذا الأمر:

  1. sudo nano /etc/apache2/apache2.conf
/etc/apache2/apache2.conf
…
<Directory />
        Options FollowSymLinks
        AllowOverride None
        Require all denied
</Directory>

<Directory /usr/share>
        AllowOverride None
        Require all granted
</Directory>

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>
…

تطبق التعريف الأول للدليل قواعد على الدليل /، أو root. ستوفر هذه التكوينات الأساسية لخادمك الافتراضي، حيث ينطبق على جميع الملفات التي تُقدم على النظام de archivos. لاحظ خيارات تكوين الدليل، جنبًا إلى جنب مع بعض التعليقات المفيدة، الواردة ضمن هذا الملف. يُنكر الوضع الافتراضي هذا الوصول إلى جميع المحتويات ما لم يُحدد خلاف ذلك في تعريفات الدليل اللاحقة.

التوجيه Require يمكن أن يقيد أو يفتح الوصول إلى موارد مختلفة داخل الخادم الخاص بك.
يُستخدم التوجيه AllowOverride لتحديد ما إذا كان يمكن لملف .htaccess تجاوز الإعدادات إذا تم وضعه في دليل المحتوى. هذا لا يُسمح به افتراضيًا، ولكن يمكن أن يكون مفيدًا لتمكينه في مجموعة متنوعة من الحالات.
بعد فحص محتويات هذا الملف، يمكنك الخروج منه بالضغط على CTRL+X.

بيانات Alias و ScriptAlias

تُسبق بيانات الدليل أحيانًا بتوجيهات Alias أو ScriptAlias.
افتح ملف تكوين الخادم الظاهري الخاص بك بهذا الأمر واستبدل المتغير your_domain باسم نطاقك:

  1. sudo nano /etc/apache2/sites-available/your_domain.conf

توجيه Alias يختصر مسار URL إلى مسار الدليل. على سبيل المثال، في خادم افتراضي يتعامل مع الطلبات إلى your_domain سيتيح ما يلي الوصول إلى المحتوى داخل /usr/local/apache/content/ عند التنقل إلى your_domain.com/content/:

/etc/apache2/sites-available/your_domain.conf
Alias “/content/” “/usr/local/apache/content/”

يعمل توجيه ScriptAlias بنفس الطريقة، ولكن يُستخدم لتعريف الدلائل التي ستحتوي على مكونات قابلة للتنفيذ فيها:

/etc/apache2/sites-available/your_domain.conf
ScriptAlias "/cgi-bin/" "/usr/local/apache2/cgi-bin/"

تذكّر أن تحدّد الدليل بامتيازات الوصول كما تمت مناقشته في القسم السابق. بعد الانتهاء من تعديلاتك على الملف، اخرج من الملف عن طريق الضغط على CTRL+X. إذا قمت بأي تغييرات على هذا الملف، اضغط Y لحفظ التغييرات في ملفك أو اضغط N لمغادرة الملف كما كان قبل أي تغييرات على التكوين.

الخطوة ٥: تمكين المواقع والوحدات

بمجرد أن تمتلك ملف مضيف افتراضي يلبي متطلباتك، يمكنك استخدام الأدوات المضمنة مع Apache لتحويله إلى مواقع نشطة.
لإنشاء رابط رمزي في الدليل sites-enabled إلى ملف موجود في الدليل sites-available، أصدر الأمر التالي. تأكد من استبدال اسم_نطاقك باسم ملف تكوين مضيف افتراضي خاص بك:

  1. sudo a2ensite your_domain

بعد تمكين موقع، أصدر الأمر التالي لإخبار Apache بإعادة تحميل ملفات التكوين الخاصة به، مما يتيح انتشار التغيير:

  1. sudo systemctl restart apache2

هناك أيضًا أمر مرافق لتعطيل مضيف افتراضي. يعمل عن طريق إزالة الرابط الرمزي من الدليل sites-enabled. على سبيل المثال، بعد تمكين موقع مضيف افتراضي لديك، يمكنك تعطيل الموقع الافتراضي 000-default.

  1. sudo a2dissite 000-default

يمكن تمكين أو تعطيل الوحدات باستخدام أوامر a2enmod و a2dismod على التوالي. تعمل هذه الأوامر بنفس الطريقة كأوامر a2ensite و a2dissite. على سبيل المثال، لتمكين وحدة info، يمكنك استخدام الأمر التالي:

  1. sudo a2enmod info

بالمثل، يمكنك تعطيل وحدة باستخدام الأمر a2dismod:

  1. sudo a2dismod info

تذكر أن تعيد تشغيل Apache بعد تعديل ملفات التكوين وتمكين أو تعطيل الوحدات.

الاستنتاج

Apache متعدد الاستخدامات وجد قابلاً للتوسيع، لذا ستكون احتياجات التكوين مختلفة اعتمادًا على الإعداد الخاص بك.
بعد استعراض بعض الحالات العامة أعلاه، يجب أن تكون لديك فهم جيد لما تُستخدم فيه الملفات الرئيسية للتكوين وكيفية تفاعلها مع بعضها البعض. إذا كنت بحاجة إلى معرفة خيارات التكوين المحددة، فإن الملفات المقدمة معلق عليها بشكل جيد وتوفر Apache وثائق ممتازة. نأمل أن لا تكون ملفات التكوين مرهقة الآن وستشعر بالراحة أكثر في التجربة والتعديل لتناسب احتياجاتك.

Source:
https://www.digitalocean.com/community/tutorials/how-to-configure-the-apache-web-server-on-an-ubuntu-or-debian-vps