كيفية تثبيت Apache مع مضيف افتراضي على CentOS 8

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

اقرأ أيضًا: كيفية تثبيت إنجنكس على CentOS 8

في هذا الدليل، سنقوم بإرشادك خلال تثبيت خادم الويب أباتشي على CentOS 8 و RHEL 8 مع بيئة Virtual Host. في وقت كتابة هذا البرنامج التعليمي، الإصدار الأحدث من أباتشي هو أباتشي 2.2.43.

تثبيت خادم الويب أباتشي

للبدء، قم أولاً بتحديث قائمة حزم نظامك CentOS 8 أو RHEL 8 باستخدام الأمر dnf التالي.

$ sudo dnf update

بمجرد اكتمال التحديث، قم بتثبيت خادم الويب أباتشي عن طريق تنفيذ الأمر التالي.

$ sudo dnf install httpd

بمجرد التثبيت، يمكنك التحقق من إصدار أباتشي عن طريق تشغيل الأمر rpm التالي.

$ rpm -qi httpd
Verify Apache Version

يقوم الأمر بطباعة مجموعة من المعلومات مثل الإصدار، تاريخ الإصدار، والبناء والبنية المعمارية للحزمة.

لبدء خدمة الويب Apache HTTP، قم بتشغيل الأمر systemctl.

$ sudo systemctl start httpd

للتحقق مما إذا كانت الخدمة قيد التشغيل، قم بتنفيذ الأمر.

$ sudo systemctl status httpd
Verify Apache Service Status

من الناتج، يشير الحالة “نشط” باللون الأخضر إلى أن خادم الويب Apache قيد التشغيل.

لتفادي أي شك في تشغيل خادم الويب، اطلب صفحة اختبار من Apache عبر استعراض عنوان IP لخادمك أو اسم النطاق كما هو موضح.

http://server-ip  

يمكنك الحصول على عنوان IP لخادمك عن طريق تشغيل الأمر ifconfig. إذا كان خادمك مستضافًا على السحابة، يمكنك الحصول على العنوان IP العام عن طريق تشغيل الأمر curl.

$ curl ifconfig.me 
OR
$ curl -4 icanhazip.com
Find CentOS Server IP Address

عندما تستعرض عنوان IP للخادم، يجب أن تحصل على الصفحة الويب التالية المعروضة.

Check Apache Webpage

هذا هو تأكيد مؤكد على تشغيل خادم الويب.

إدارة خادم الويب Apache

بعد تثبيت Apache وتشغيله، يمكنك استخدام أداة التفتيش systemctl لإدارة Apache.

على سبيل المثال، لإيقاف Apache، قم بتشغيل الأمر:

$ sudo systemctl stop httpd

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

$ sudo systemctl start httpd

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

$ sudo systemctl restart httpd

إعادة تشغيل الخدمة عادة ما يتسبب في انقطاع الخدمة. بديل أفضل هو إعادة التحميل بدون أي انقطاع في الاتصال.

$ sudo systemctl reload httpd

لبدء خادم الويب Apache تلقائيًا عند التمهيد أو إعادة التمهيد، قم بتشغيل الأمر التالي. سيضمن هذا بدء Apache تلقائيًا دون تدخل منك.

$ sudo systemctl enable httpd

إذا اخترت عدم بدء الخدمة تلقائيًا عند التمهيد، قم بتشغيل:

$ sudo systemctl disable httpd

إعداد مضيفين افتراضيين لـ Apache

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

A virtual host is a separate file that contains configurations that allow you to set up a separate domain from the default one. For this guide, we will set up a virtual host for the domain crazytechgeek.info.

يقع المضيف الافتراضي الافتراضي في الدليل /var/www/html. هذا يعمل فقط لموقع واحد. لإنشاء مضيف افتراضي منفصل لنطاقنا، سنقوم بإنشاء هيكل دليل آخر ضمن الدليل /var/www كما هو موضح.

$ sudo mkdir -p /var/www/crazytechgeek.info/html

بالإضافة إلى ذلك، يمكنك أيضًا إنشاء دليل لتخزين ملفات السجل.

$ sudo mkdir -p /var/www/crazytechgeek.info/log

بعد ذلك، قم بتحرير أذونات الملف باستخدام المتغير البيئي $USER كما هو موضح.

$ sudo chown -R $USER:$USER /var/www/crazytechgeek.info/html

كما، قم بضبط أذونات دليل webroot كما هو موضح.

$ sudo chmod -R 755 /var/www

بعد ذلك، قم بإنشاء ملف index.html عينة كما هو موضح. اضغط على الحرف 'i' على لوحة المفاتيح والصق بعض المحتوى العيني كما هو موضح والذي سيتم عرضه على متصفح الويب عند اختبار المضيف الافتراضي.

$ sudo vim /var/www/crazytechgeek.info/html/index.html

<html>
  <head>
    <title>Welcome to crazytechgeek.info!</title>
  </head>
  <body>
    <h1>Success! The crazytechgeek.info virtual host is up and perfectly working!</h1>
  </body>
</html>

احفظ واخرج من ملف التكوين.

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

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

سيتم تخزين ملف المضيف الافتراضي في دليل sites-available بينما سيحتوي دليل sites-enabled على الرابط الرمزي إلى المضيف الافتراضي.

أنشئ كلا الدليلين كما هو موضح.

$ sudo mkdir /etc/httpd/sites-available
$ sudo mkdir /etc/httpd/sites-enabled

بعد ذلك، قم بتعديل ملف تكوين خادم الويب Apache الرئيسي وأوجه Apache إلى موقع المضيف الافتراضي داخل دليل sites-enabled.

$ sudo vim /etc/httpd/conf/httpd.conf

ألصق السطر كما هو موضح في نهاية ملف التكوين.

IncludeOptional sites-enabled/*.conf

احفظ واخرج.

الآن قم بإنشاء ملف مضيف افتراضي كما هو موضح:

$ sudo vim /etc/httpd/sites-available/crazytechgeek.info

الصق المحتوى أدناه واستبدل crazytechgeek.info باسم النطاق الخاص بك.

<VirtualHost *:80>
    ServerName www.crazytechgeek.info
    ServerAlias crazytechgeek.info
    DocumentRoot /var/www/crazytechgeek.info/html
    ErrorLog /var/www/crazytechgeek.info/log/error.log
    CustomLog /var/www/crazytechgeek.info/log/requests.log combined
</VirtualHost>

احفظ واخرج من الملف.

الآن قم بتمكين ملف المضيف الافتراضي عن طريق إنشاء رابط رمزي في دليل sites-enabled.

$ sudo ln -s /etc/httpd/sites-available/crazytechgeek.info.conf /etc/httpd/sites-enabled/crazytechgeek.info.conf

ضبط أذونات SELinux لمضيفات افتراضية

تأتي CentOS 8 و RHEL 8 مع SELinux الذي هو وحدة أمان لتعزيز أمان نظام Linux. نظرًا لأنك قمت بتكوين دليل log المخصص في الخطوة السابقة، فإنك بحاجة إلى تحديث بعض سياسات SELinux لتوجيه خادم الويب Apache للكتابة إلى الدليل.

هناك نهجان في ضبط سياسات Apache SELinux: ضبط السياسات بشكل عالمي والسياسات على الدليل. يُفضل الأخير لأنه أكثر تفضيلًا.

ضبط سياسات SELinux على دليل

تحرير أذونات SELinux لدليل السجل يمنحك التحكم المطلق في سياسات خادم الويب Apache. هذه الطريقة طويلة نوعًا ما وتتطلب منك تكوين نوع السياق يدويًا للمجلدات الإضافية المحددة في ملف تكوين المضيف الظاهري.

قبل البدء، تأكد أولاً من نوع السياق المسند لدليل السجل من قبل SELinux:

$ sudo ls -dlZ /var/www/crazytechgeek.info/log/

يجب أن يكون الإخراج مماثلًا لما لدينا أدناه.

Set SELinux Policies on Apache Log Directory

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

لذلك، قم بتنفيذ الأمر:إذا حدث أنك تحصل على الخطأ ” semanage: command not found“.

$ sudo semanage fcontext -a -t httpd_log_t "/var/www/crazytechgeek.info/log(/.*)?"

إذا حدثت الخطأ أدناه “semanage: command not found“.

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

$ sudo dnf whatprovides /usr/sbin/semanage

يعطي الإخراج لنا الحزمة التي توفر لـ semanage، وهي policycoreutils-python-utils.

الآن قم بتثبيت الحزمة كما هو موضح باستخدام مدير الحزم DNF.

$ sudo dnf install policycoreutils-python-utils

يجب أن يعمل الأمر الخاص بتغيير السياق الآن.

$ sudo semanage fcontext -a -t httpd_log_t "/var/www/crazytechgeek.info/log(/.*)?"

لحفظ التغييرات وجعلها دائمة، قم بإصدار الأمر restorecon كما هو موضح:

$ sudo restorecon -R -v /var/www/crazytechgeek.info/log

يمكنك تأكيد التغييرات من خلال تشغيل الأمر مرة أخرى:

$ sudo ls -dlZ /var/www/crazytechgeek.info/log/
Check SELinux Context Type

تأكد من أن نوع السياق قد تغير إلى httpd_log_t كما هو موضح في الإخراج.

أعد تشغيل Apache لتطبيق التغييرات.

$ sudo systemctl restart httpd

يمكنك الآن التحقق مما إذا كان Apache يقوم بحفظ ملفات السجل في دليل السجل عن طريق عرض محتوياته كما هو موضح:

$ ls -l /var/www/crazytechgeek.info/log/

يجب أن ترى ملفي سجل كما هو موضح: ملفات سجل الأخطاء والطلبات.

Check Apache Log Files

اختبار مضيف Apache الافتراضي

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

http://domain-name
Check Apache Virtual Host for Website

ممتاز! هذا يشير إلى أن كل شيء تم بنجاح وأن خادمنا الافتراضي يخدم كما هو متوقع.

الاستنتاج

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

إذا كنت ترغب في إعداد مكدس استضافة كامل، أوصي بـ تثبيت مكدس LAMP على CentOS 8.

Source:
https://www.tecmint.com/install-apache-with-virtual-host-on-centos-8/