المقدمة
أباتشي هو واحد من أشهر خوادم الويب على الإنترنت. يُستخدم لخدمة أكثر من نصف جميع المواقع النشطة. على الرغم من وجود العديد من خوادم الويب البديلة التي يمكن أن تخدم محتواك، إلا أنه من المفيد فهم كيفية عمل أباتشي بسبب انتشاره.
سيقوم هذا المقال بفحص بعض ملفات التكوين العامة والخيارات التي يمكن التحكم فيها ضمنها. سيتبع هذا المقال تخطيط أباتشي لنظام التشغيل أوبونتو/ديبيان، والذي يختلف عن كيفية بناء التسلسل الهرمي للتكوين في توزيعات أخرى.
المتطلبات المسبقة
إذا كنت تستخدم إصدار أوبونتو 16.04 أو أقل، فإننا نوصي بالترقية إلى إصدار أحدث حيث أن أوبونتو لم تعد توفر الدعم لهذه الإصدارات. ستساعدك هذه مجموعة من الأدلة في ترقية إصدار أوبونتو الخاص بك.
-
خادم يعمل بنظام أوبونتو، مع وجود مستخدم غير جذري يمتلك
sudo
امتيازات وجدار ناري نشط. للإرشادات حول كيفية إعداد هذه الأمور، يرجى اختيار توزيعتك من هذه القائمة واتباع دليل إعداد الخادم الأولي الخاص بنا. -
قبل أن تبدأ في استكشاف تكوينات Apache الخاصة بك، يجب أن يكون Apache مثبتًا على خادمك. يمكنك التعلم من خلال اتباع دليلنا “كيفية تثبيت خادم ويب Apache على أوبونتو” الخاص بنا 22.04 / 20.04 / 18.04 أو الدليل كيفية تثبيت خادم ويب Apache على Debian 10.
5 خطوات لتكوين خادم الويب Apache على أوبونتو
- تسلسل الملفات في Apache
- استكشاف ملف Apache2.conf
- ضبط تكوينات Apache العامة
- إعداد ملف الاستضافة الظاهرية في Apache
- تمكين المواقع والوحدات
الخطوة 1: تسلسل الملفات في Apache
تُحتفظ Apache بملفات تكوينها الرئيسية داخل مجلد /etc/apache2
. تنفيذ الأمر التالي سيقوم بإدراج جميع الملفات داخل هذا المجلد:
Outputenvars 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
:
في أوبونتو وديبيان، يُستخدم هذا الملف لتكوين التعاريف العامة. يتم التعامل مع تكوين الخادم الافتراضي والمضيفين الافتراضيين باستخدام التوجيهة Include
. التوجيهة Include
تُتيح لأباتشي قراءة ملفات التكوين الأخرى داخل الملف الحالي في الموقع الذي تظهر فيه البيان. النتيجة هي أن أباتشي يولد ديناميكيًا ملف تكوين شامل عند بدء التشغيل.
يتم العثور ضمن هذا الملف على عدد من التعليمات المختلفة Include
و IncludeOptional
. تحمل هذه التوجيهات تعاريف الوحدات، وثيقة ports.conf
، وملفات التكوين المحددة في الدليل conf-enabled/
، وتعاريف المضيف الظاهري في الدليل sites-enabled/
:
…
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:
OutputCompiled 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
:
Outputevent
تُظهر النتيجة أن MPM الحدث
مستخدم على هذا الخادم. قد تحتوي التثبيتات المختلفة على عدة خيارات للاختيار من بينها، ولكن يمكن تحديد واحدة فقط.
الخطوة 4: تحديث ملف الاستضافة الافتراضي لأباتشي
يمكن العثور على تعريف الاستضافة الافتراضي في ملف يُسمى 000-default.conf
داخل الدليل sites-available/
. يمكنك التعرف على التنسيق العام لملف الاستضافة الافتراضي من خلال فحص هذا الملف.
افتح الملف باستخدام الأمر التالي:
<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/
:
يحتوي هذا الملف على توجيه Server Signature
، الذي يتيح لك تحديد عنوان البريد الإلكتروني للاتصال يجب استخدامه عند حدوث مشاكل في الخادم. يمكنك تغيير الخيار الافتراضي من On
إلى EMail
لكشف عن عنوان بريد المسؤول عن الخادم. تأكد من رغبتك في استقبال البريد إذا قمت بتعديل هذا الإعداد:
…
ServerSignature EMail
…
اخرج من الملف بالضغط على CTRL+X
. بعد تحرير ملف التكوين، ستُطلب منك التأكيد على تغييراتك. اضغط Y
لحفظ التغييرات في ملفك أو اضغط N
للتخلي عنها.
ضمن ملف الاستضافة الظاهرية الخاص بك، يمكنك إضافة توجيه ServerName
الذي يحدد اسم النطاق أو عنوان IP الذي يجب على هذا الطلب التعامل معه. هذا هو الخيار الذي سيضيف تحديدًا للأستضافة الظاهرية، مما يتيح لها تجاوز التعريف الافتراضي إذا مطابقته لقيمة ServerName
.
قم بتشغيل الأمر التالي لفتح ملف الاستضافة الظاهرية الخاص بك، مُتأكدًا من استبدال المتغير your_domain
بالاسم الفعلي لنطاقك:
أضف your_domain
إلى التوجيهة ServerName
:
…
ServerName your_domain
…
بالمثل، يمكنك أيضًا جعل الخادم الافتراضي ينطبق على أكثر من اسم باستخدام توجيهة ServerAlias
. يوفر ذلك مسارات بديلة للوصول إلى نفس المحتوى. حالة استخدام جيدة لهذا هي إضافة نفس النطاق، مسبوقًا بـ www
:
…
ServerAlias www.your_domain.com
…
توجيهة DocumentRoot
تحدد مكان المحتوى المطلوب لهذا الخادم الافتراضي. في أوبونتو، يتم تعيين الخادم الافتراضي الأولي لتقديم المحتوى من الدليل /var/www/
:
…
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
بهذا الأمر:
…
<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
باسم نطاقك:
توجيه Alias
يختصر مسار URL إلى مسار الدليل. على سبيل المثال، في خادم افتراضي يتعامل مع الطلبات إلى your_domain
سيتيح ما يلي الوصول إلى المحتوى داخل /usr/local/apache/content/
عند التنقل إلى your_domain.com/content/
:
Alias “/content/” “/usr/local/apache/content/”
يعمل توجيه ScriptAlias
بنفس الطريقة، ولكن يُستخدم لتعريف الدلائل التي ستحتوي على مكونات قابلة للتنفيذ فيها:
ScriptAlias "/cgi-bin/" "/usr/local/apache2/cgi-bin/"
تذكّر أن تحدّد الدليل بامتيازات الوصول كما تمت مناقشته في القسم السابق. بعد الانتهاء من تعديلاتك على الملف، اخرج من الملف عن طريق الضغط على CTRL+X
. إذا قمت بأي تغييرات على هذا الملف، اضغط Y
لحفظ التغييرات في ملفك أو اضغط N
لمغادرة الملف كما كان قبل أي تغييرات على التكوين.
الخطوة ٥: تمكين المواقع والوحدات
بمجرد أن تمتلك ملف مضيف افتراضي يلبي متطلباتك، يمكنك استخدام الأدوات المضمنة مع Apache لتحويله إلى مواقع نشطة.
لإنشاء رابط رمزي في الدليل sites-enabled
إلى ملف موجود في الدليل sites-available
، أصدر الأمر التالي. تأكد من استبدال اسم_نطاقك
باسم ملف تكوين مضيف افتراضي خاص بك:
بعد تمكين موقع، أصدر الأمر التالي لإخبار Apache بإعادة تحميل ملفات التكوين الخاصة به، مما يتيح انتشار التغيير:
هناك أيضًا أمر مرافق لتعطيل مضيف افتراضي. يعمل عن طريق إزالة الرابط الرمزي من الدليل sites-enabled
. على سبيل المثال، بعد تمكين موقع مضيف افتراضي لديك، يمكنك تعطيل الموقع الافتراضي 000-default
.
يمكن تمكين أو تعطيل الوحدات باستخدام أوامر a2enmod
و a2dismod
على التوالي. تعمل هذه الأوامر بنفس الطريقة كأوامر a2ensite
و a2dissite
. على سبيل المثال، لتمكين وحدة info
، يمكنك استخدام الأمر التالي:
بالمثل، يمكنك تعطيل وحدة باستخدام الأمر a2dismod
:
تذكر أن تعيد تشغيل Apache بعد تعديل ملفات التكوين وتمكين أو تعطيل الوحدات.
الاستنتاج
Apache متعدد الاستخدامات وجد قابلاً للتوسيع، لذا ستكون احتياجات التكوين مختلفة اعتمادًا على الإعداد الخاص بك.
بعد استعراض بعض الحالات العامة أعلاه، يجب أن تكون لديك فهم جيد لما تُستخدم فيه الملفات الرئيسية للتكوين وكيفية تفاعلها مع بعضها البعض. إذا كنت بحاجة إلى معرفة خيارات التكوين المحددة، فإن الملفات المقدمة معلق عليها بشكل جيد وتوفر Apache وثائق ممتازة. نأمل أن لا تكون ملفات التكوين مرهقة الآن وستشعر بالراحة أكثر في التجربة والتعديل لتناسب احتياجاتك.