السلام عليكم ورحمة الله وبركاته
سأتحدث في هذا الموضوع عن تركيب واهم اعدادات خدمة الويب سيرفر (httpd) يدوياً ، بعيداً عن استخدام لوحات التحكم ، مع العلم بانه يمكنك عمل كل هذا بضغطة زر واحدة من أحد لوحات التحكم كـ cpanel او webmin ، ان كنت غير مهتم بالمعرفة ركب أحد هذه البرامج واستخدمها ولا داعي لقراءة الموضوع ، هذا الشرح ينطبق تماماً على ردهات ولا سيما الانظمة الاخرى بمراعاة الفروق ان وجدت.
كل توزيعة لينوكس الان تحتوي على خدمة الويب سيرفر كخدمة اساسية من خدمات النظام تنتظر التفعيل فقط ، ان لم تكن موجودة في نظامك فقم بالبحث عنها وتركيبها كتركيب أي برنامج ، ثم قم بتشغيل الخدمة ، و اجعلها تعمل عند تشغيل السيرفر في كل مره ، بهذين الامرين
كود:
service httpd start
chkconfig httpd on
الامر الاول يقوم بتشغيلها حالياً ، والاخر يجعلها on عند تشغيل النظام
بعد ذلك قم بتحرير ملف الاعداد الرئيسي هنا
كود:
/etc/httpd/conf/httpd.conf
أول شي نقوم بتحديدة هو DocumentRoot وهذه القيمة يجب ان تشير الى مجلد سيحتوي جميع ملفات الموقع بمافيها الاندكس وأي محتويات اخرى تظهر للزائر
افتراضياً ستكون القيمة هكذا
كود:
DocumentRoot "/var/www/html"
أو أي كانت ...
بمعنى ان مجلد /var/www/html هو المجلد الذي سيتحوي على ملفات الموقع التي تظهر للزائر ، وتستطيع تغييره الى أي مكان اخر ، ولكن يفضل ابقائه كما هو لاننا سنتحدث بعد قليل عن عمل VirualHosts وعمل public_html لكل يوزر لدينا.
لذا اترك الاعداد هذا كما هو وتابع القراءة معي.
الان سنقوم بعمل ملف باسم index.html داخل ذلك المجلد لنتأكد ان الخدمة تعمل كما يجب ، علماً ان المجلد الافتراضي يحتوي على اندكس جاهزه ، لكن سنكتب بها عبارة أفضل
قم بانشاء الملف index.html في المسار /var/www/html يدوياً أو من خلال هذا الامر
كود:
echo "LinuxAC" > /var/www/html/index.html
ثم قم بزيارة العنوان http://localhost ، او من خلال الامر التالي اذا كنت لا تستعمل الواجهة الرسومية
كود:
links http://localhost
سترى عبارة LinuxAC وهذا يعني أن الخدمة تعمل كما يجب.
الان سنعرف كيفية عمل host جديد أو بمعنى آخر virtual host وهذا اسلوب شركات الاستضافة بحيث ان السيرفر الواحد ممكن يسكن أكثر من موقع ، وكل موقع له DocumentRoot خاص فيه وهو مجلد public_html الموجود في بيت المستخدم هنا
كود:
/home/user/public_html
هذا المجلد سيحتوي على ملفات الموقع التي تظهر للزائر بمافيها الاندكس والملفات الاخرى ، ولكن كيف يمكننا زيارة الموقع ورؤية الملفات ؟
لهذا سنقوم باعداد ملف httpd.conf السابق ، وسنضع فيه VirtualHost يحتوي جميع المعلومات المطلوبة ليعمل الموقع الجديد بشكل صحيح
/etc/httpd/conf/httpd.conf
اذا كان لدينا اكثر من موقع على نفس السيرفر علينا تحديد الاي بي للسيرفر من خلال الخيار
كود:
NameVirtualHost 10.0.0.3
والان نقوم بإعداد موقع آخر غير localhost وليكن ex4mple.com
لاعداد موقع ex4mple.com على سيرفري اقوم باضافة التالي
كود:
<VirtualHost 10.0.0.3>
DocumentRoot /var/www/ex4mple <-- المجلد الذي سيحوي ملفات الموقع
ServerName ex4mple.com
DirectoryIndex index.*
</VirtualHost>
كما ترى في أول سطر وضعت الاي بي للسيرفر
الان نقوم بانشاء مجلد الـ DocumentRoot وهو /var/www/ex4mple بالامر
كود:
mkdir /var/www/ex4mple
ثم نقوم باعادة تشغيل الخدمة بأحد الاوامر التالية
كود:
service httpd restart
/etc/init.d/httpd restart
يجب عليك الان اعداد الاي بي والهوست في ملف /etc/hosts، لن يعمل معك ان لم تقم بهذه الخطوة بشكل صحيح
كود:
echo "10.0.0.3 ex4mple.com" >> /etc/hosts
ثم قم بانشاء ملف اندكس في المجلد
كود:
echo "Welcome To ex4mple" > /var/www/ex4mple/index.html
الان قم بتصفح الموقع ex4mple.com ، ستجد عبارة Welcome To ex4mple ، والدومين الجديد يعمل في السيرفر محلياً فقط
و لعمل فحص والتأكد من صحة المدخلات يمكنك استخدام الامر
ليفحص جميع VirtualHosts الموجودة في ملف الاعداد
الان نريد تفعيل public_html ليكون متوفر لكل المستخدمين بحيث انه يوجد في الهوم تبع اليوزر ، ليضع فيه ملفات موقعه التي تظهر للزائر
نحدد القيمة public_html للخيار UserDir في ملف الاعداد السابق
ونقوم بازالة العبارة "UserDir disable" بوضع علامة التعليق # قبلها
طبعاً مجلد public_html نقوم بانشائه في المكان المناسب
ولتصفح موقع أحد المستخدمين سيكون عبر الرابط التالي
http://localhost/~user/
هناك الكثير من الخيارات والمودلز التي يصعب حصرها لتشعبها في خدمة الويب سيرفر httpd الا ان هذه الامور تعتبر مقدمة بسيطة يجب ان يعرفها مدير النظام لاعداده
لحماية مجلد من خلال ملف htaccess ، لنفرض اننا نريد ان نحمي المجلد /var/www/html/ باسم مستخدم وكلمة مرور
نذهب الى نفس المجلد وننشئ ملف اسمه htaccess. ونضع فيه مايلي
كود:
AuthName "This is Secured"
AuthType basic
AuthUserFile /etc/httpd/conf/mypasswd
require valid-user
ثم نكتب الامر التالي لانشاء يوزر
كود:
htpasswd -mc /etc/httpd/conf/mypasswd LinuxAC
سيطلب منا باسوورد ، واعادة كتابتة
ثم نضع الخيار AllowOverride AuthConfig داخل البلوك <Directory "/var/www/html"> في ملف httpd.conf
الان نقوم باعادة تشغيل الخدمة بأحد الاوامر التالية
كود:
service httpd restart
/etc/init.d/httpd restart
الان قم بزيارة السيرفر المحلي http://localhost/ ستجد مايلي
لنعمل نوع اخر من الحماية ، وهو تحديد الوصول من اي بي او هوست معين ، لنفترض اني أريد ان اجعل موقعي غير مسموح الوصول اليه الا من خلال الهوست example.com افعل ذلك بالخطوات التالية
نضع مايلي داخل البلوك <Directory "/var/www/html">
كود:
Order Allow.Deny
Allow from .example.com
الان نقوم باعادة تشغيل الخدمة بأحد الاوامر التالية
كود:
service httpd restart
/etc/init.d/httpd restart
جرب زيارته محلياً ، وجرب زيارته من خلال جهاز اخر في نفس الشبكة ، وتحسس الفرق
لدعم بروتوكل (https) التشفير SSL في سيرفري المحلي أقوم بتعريفه في ملف الاعداد بواسطة الخيارات التالية
كود:
SSLEngine on
SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server.key
الان نقوم باعادة تشغيل الخدمة بأحد الاوامر التالية بأحد الاوامر السابقة!
ثم قم بزيارة السيرفر المحلي من خلال بروتوكول https بدلا من http
https://localhost/
سترى
تستطيع عمل الكثير والكثير ولا تنسى ان هناك موديلز خاصة بالحماية وبعضها خاص بماهو خاص به
الى هنا انتهي من كتابة هذه المقدمة عن خدمة الويب سيرفر ، لمن اراد التعمق عليه قراءة التعليقات الموجودة في ملف الاعداد بالاضافة الى استخدام الامر man httpd ولا يمنع عن البحث في قوقل شي.