مقدمة
A web server’s primary role is to serve web pages for a website. A web page can be rendered from a single HTML file, or a complex assortment of resources fitted together. If you want to host your web application on the internet, in many cases you will need a web server.
واحدة من أشهر حالات استخدام خوادم الويب هي تقديم الملفات اللازمة لتقديم موقع على شبكة الإنترنت في متصفح الويب. عندما تزور http://www.digitalocean.com
، تبدأ بإدخال عنوان URL يبدأ طلبًا عبر الإنترنت. يمر هذا الطلب من خلال عدة طبقات، إحداها أو أكثر ستكون خادم ويب. يقوم هذا الخادم بإنشاء استجابة لطلبك، والتي في هذه الحالة هي موقع DigitalOcean، وتحديدًا الصفحة الرئيسية. في الواقع، يحدث هذا بشكل سريع وبتوافر على مدار الساعة طوال أيام الأسبوع.
على الرغم من أن أي زائر إلى صفحة DigitalOcean سيشاهدها كصفحة ويب واحدة، إلا أن معظم صفحات الويب الحديثة اليوم تعتمد على مجموعة من الموارد. تعمل خوادم الويب كوسيط بين الجزء الخلفي والجزء الأمامي، حيث تقدم الموارد مثل ملفات HTML و CSS إلى بيانات JSON، كل ذلك يتم إنشاؤه بشكل دينامي أو يتم تقديمه بشكل ثابت. إذا كنت تنوي العمل مع مواقع الويب أو التطبيقات عبر الإنترنت بأي قدر، فمن المفيد للغاية أن تتعرف على أساسيات ما هو خادم الويب، وكيف يعمل.
بينما يمكن أن يشير مصطلح “خادم ويب” إما إلى الـ برنامج نفسه أو الـ عتاد الذي يوجد عليه، يشير هذا المقال بشكل خاص إلى برنامج خادم الويب. لمزيد من التفاصيل حول هذا الفرق، تحقق من مقدمتنا حول خوادم السحابة.
حالات الاستخدام الشائعة
A web server handles requests on the internet through HTTP and HTTPS protocol, and is also called an HTTP server. A web server is distinct from other types of servers in that it specializes in handling these HTTP and HTTPS requests, differentiating itself from application servers (e.g. Gunicorn) and servers for other protocols (i.e. WSGI). These other servers work as intermediaries for backend programming languages through external libraries, which is a different level of abstraction than web servers.
فيما يلي بعض المهام الشائعة التي يتعامل معها خوادم الويب:
- يخدم ملفات HTML، CSS، وJavaScript.
- يخدم الصور ومقاطع الفيديو.
- يتعامل مع رسائل الخطأ في HTTP.
- يتعامل مع طلبات المستخدم، غالباً ما يكون بشكل متزامن.
- يوجه تطابق وإعادة كتابة عناوين URL.
- يعالج ويخدم المحتوى الديناميكي.
- يضغط المحتوى لاستخدام البيانات بشكل محسّن وتسريع السرعة.
- يمكّن تخزين متصفح الويب المؤقت لمحتواك الثابت.
وفي الأوجه العملية، إليك بعض المشاريع الشخصية التي قد تنطوي على خادم ويب:
- ترغب في إنشاء موقع على الويب.
- ترغب في إنشاء تطبيق يتصل بالإنترنت.
لا تعتبر هذه القائمة شاملة بأي حال من الأحوال، ولا يقتصر خادم الويب على أنواع البيانات التي يمكنه تقديمها للمستخدم النهائي. على سبيل المثال، يتجاوب خادم الويب الذي يخدم طلبات واجهة برمجة التطبيقات على الويب في كثير من الأحيان بالبيانات بتنسيق مثل JSON.
أهداف خادم الويب
تخدم خوادم الويب جمهورًا يتوقع السرعة والتوفر والموثوقية، ولديها هدف مشترك في تقديم المحتوى على الإنترنت، ولكي تُعتبر حلاً لخوادم الويب، يجب مراعاة الجوانب التالية:
- فترة التشغيل: هذا يشير إلى الوقت الذي تكون فيه خادم الويب على الإنترنت ويعمل. يجب أن تكون المواقع على الإنترنت في جميع الأوقات لخدمة المستخدمين، لذا يُعتبر التشغيل لفترة طويلة هو الهدف. كما أن هذا يترجم أيضًا إلى الاستقرار والتنبؤ. عندما يدخل المستخدم عنوان URL أو ينقر على رابط إلى موقع الويب الخاص بك، يجب أن يتم تحميل الصفحة المتوقعة في كل مرة، وفي أي وقت. يجب أن تكون الاستثناءات الوحيدة هي الأوقات المخطط لها لتحديثات أو صيانة مخططة. يؤثر خادم الويب الذي يحتوي على أخطاء أو يتعطل في أوقات عشوائية سلبًا على تجربة المستخدمين.
- السرعة: يجب أن تتم تحميل صفحات الويب الخاصة بك بأسرع ما يمكن. يريد المستخدمون تلبية طلباتهم فورًا، وإلا فإنك تخاطر بفقدانهم. على صفحة الويب التي تحميلها ببطء، حتى لو جلست المستخدم خلال التحميل الأول، سيؤدي كل تحميل طويل لاحق إلى تقليل استعدادهم بشكل هائل للبقاء أو زيارة الموقع مرة أخرى.
- التناغم: يشير هذا إلى التعامل مع طلبات متعددة تأتي في نفس الوقت. يبدو أن وجود الكثير من الأشخاص يحاولون زيارة موقع الويب الخاص بك في نفس الوقت شيئًا جيدًا، ولكن يصبح هذا مشكلة حقيقية عندما تبطئ أوقات التحميل إلى سرعة بطيئة ويتعطل الخادم بأكمله. يحتوي الخادم الخاص بك الفعلي أو الافتراضي فقط على موارد معينة مثل ذاكرة الوصول العشوائي (RAM) وقدرة الحساب المركزية (CPU)، ويجب على خوادم الويب استخدام هذه الموارد بكفاءة.
- قابلية التوسع: تشير قابلية التوسع إما إلى جعل خوادمك الحالية أكثر قوة من خلال التوسيع العمودي، أو إضافة المزيد من الخوادم إلى إعدادك من خلال التوسيع الأفقي. عندما تزداد جماهيرك، قد تصل إلى نقطة تحتاج فيها إلى المزيد من خوادم الويب الصغيرة.
- سهولة الإعداد: إطلاق مشروع بسرعة وتشغيله بسرعة أمران مهمان لتطوير مشروعك. عملية تثبيت مباشرة ومكررة مهمة لأول خادم ويب تقوم بإعداده، وكذلك للخوادم الويب المتعددة بعد ذلك عند توسيع نطاق العمل.
- التوثيق: تعتبر خوادم الويب معقدة. التثبيتات الشائعة ستساعدك في البداية، لكن احتياجاتك ستتزايد مع مرور الوقت. في كثير من الأحيان، ستحتاج إلى ميزات ليست مستخدمة بشكل شائع. عندما يحين الوقت لذلك، فإن وثائق جيدة ضرورية لإنشاء حلول مخصصة لاحتياجاتك.
- دعم المطورين: إذا لم يكن المطورون الأساسيون ملتزمين بمشروعهم الخاص، فلا ينبغي عليك التزام مشروعك بمشروعهم. يتضمن ذلك الخطط لدعم طويل الأمد لبرمجياتهم، جنبًا إلى جنب مع الدعم الفوري الذي يقدمونه على شكل إصلاحات للأخطاء والتصحيحات.
- دعم المجتمع: سيتولى فريق التطوير الأساسي معظم العمل الشاق، لكن المجتمع المزدهر يساهم في سد الفجوات. مع مشاريع مفتوحة المصدر، يمكن أن يعني ذلك المساهمات في قاعدة الشفرة الفعلية، ولكن المجتمع القوي سيجيب أيضًا عن أسئلتك ويساعد في قضاياك الخاصة.
على الرغم من أن خوادم الويب يمكن أن تقدم حلولًا مختلفة، إلا أن الحلول التي تقدمها تنبع من محاولات لمعالجة نفس المشاكل. تتطور هذه المشاكل بحد ذاتها مع مرور الوقت بجانب احتياجات وتوقعات المستخدم النهائي، مما يجعلها قائمة متطورة ومتطورة باستمرار.
اختيار حل خادم الويب
أشهر خوادم الويب مفتوحة المصدر حاليًا هي Apache و Nginx.
جاء Apache أولاً، وتم بناؤه في وقت كان من الشائع وجود عدة مواقع ويب بملفات تكوين فردية خاصة بها جميعًا على خادم ويب واحد. جاء Nginx بعد Apache، في وقت تحولت فيه الاحتياجات بعيدًا عن خدمة عدة مواقع ويب من خادم واحد، وبدلاً من ذلك نحو خدمة موقع ويب واحد من خادم واحد بطريقة فعالة للغاية تحت الحمل.
بينما تشترك خوادم الويب في نفس الأهداف والمشاكل، ستكون تفسيرات وتنفيذ كل حل مختلفة. تشكل الإجابات الدقيقة لهذه المشاكل هوية أي حل لخادم ويب معين. يتم تسليط الضوء هنا على Nginx و Apache بسبب انتشارهما الواسع، لكن أي حل لخادم ويب سيكون له آراء. عند اختيار خادم ويب، من المهم أن تأخذ احتياجاتك الخاصة في الاعتبار لمشروعك الخاص. بهذه الطريقة، حتى لو تغيرت المناظر الخاصة بعروض خوادم الويب، يظل أسلوب التقييم الخاص بك مرتبطًا بمتطلباتك الخاصة.
فيما يلي بعض العوامل المميزة الرئيسية في كيفية محاولة خوادم الويب تحقيق أهداف خادم الويب:
هيكل ملفات التكوين
تخزن خوادم الويب إعداداتها في ملفات تكوين. يمكنك تخصيص خوادم الويب الخاصة بك عن طريق تحرير هذه الملفات. تُعتبر تخزين وتنظيم ملفات التكوين مسألة هيكلية ذات رأي تفصل منتجات خوادم الويب.
التقسيم الرئيسي هو بين التمركز واللامركزية. تسمح ملفات التكوين غير المركزية بمستوى دقيق من التحكم على مستوى نظام الملفات، والذي ينبع من الحاجة إلى استضافة مواقع الويب المتعددة على خادم واحد. لا تركز التكوينات المركزية على استضافة مواقع الويب المتعددة على خادم واحد، وبدلاً من ذلك تركز على خدمة موقع ويب واحد بكفاءة. تعتمد هذه التكوينات على مطابقة أنماط URI، والتي هي مطابقة عناوين URL بأسماء ملفات ومعرفات فريدة أخرى، بدلاً من الاعتماد على المطابقة مقابل هيكل الدليل لخادم الويب.
تُسهل ملفات .htaccess
في أباتشي تكوينًا غير مركزيًا كميزة، وتتدفق كل قرارات التصميم من هذا التركيز على نظام الملفات بمستوى دقيق من التحكم. لا تركز نجينكس على نفس التركيز على نظام الملفات، وتركز بدلاً من ذلك على مطابقة أنماط URI وتكوين مركزي.
معالجة التزامن
الخوادم الفعلية والافتراضية التي تعمل عليها خوادم الويب تحتوي على موارد محدودة مثل الذاكرة العشوائية (RAM) ووحدة المعالجة المركزية (CPU). كيفية إدارة خادم الويب لطلباته بشكل أساسي سيكون له أكبر تأثير على استخدام مواردك بكفاءة. يمكن أن ينشئ طلب واحد عملية كاملة لكل طلب، أو يمكن معالجته على أساس محفوظات الأحداث. ترتبط قدرة خادم الويب الخاص بك على معالجة الطلبات المتزامنة بكفاءة بقرارات التصميم الأساسية.
تعالج Apache الطلبات عن طريق إنشاء عمليات، مما يستهلك موارد بمعدل يمكن أن يصبح مشكلة تحت الحمل. نظام Nginx لمعالجة الطلبات بمبدأ المحفوظات الأحداثية يستخدم موارد أقل ويمكن أن يكون أكثر أداءً تحت الحمل.
خدمة المحتوى الثابت
بالإضافة إلى صفحات الويب، يتلقى خوادم الويب طلبات لموارد أخرى مثل الصور ومقاطع الفيديو وملفات CSS وملفات JavaScript. نظرًا لأن هذه العناصر دائمًا ما تكون متماثلة بغض النظر عن من يطلبها، يُشار إلى هذا النوع من المحتوى بأنه ثابت. في كثير من الأحيان، تكون صفحة الويب نفسها مجرد ملف HTML لا يتم تخصيصه للشخص الذي يطلبه، ويُعامل أيضًا كمحتوى ثابت. يمكن لخوادم الويب أيضًا ضغط هذا المحتوى الثابت لتحسين أوقات التحميل.
تتفوق Nginx في خدمة المحتوى الثابت بسبب نظامها لمعالجة الطلبات بمبدأ المحفوظات الأحداثية. يمكن لـ Apache أيضًا خدمة المحتوى الثابت، ولكن في معظم التكوينات، ليس بنفس سرعة وكفاءة تحت الحمل مقارنة بـ Nginx.
تقديم المحتوى الديناميكي
عندما يتم تغيير المحتوى ومعالجته وتخصيصه اعتمادًا على من يطلبه، يُشار إلى المحتوى بأنه ديناميكي. على سبيل المثال، بعد تسجيل الدخول إلى موقع على الويب، غالبًا ما يملأ الموقع بشكل ديناميكي اسم المستخدم في شريط التنقل العلوي. يضيف المحتوى الديناميكي تعقيدًا إضافيًا لأنه يجبر خادم الويب على التعامل مع العديد من الطلبات بشكل فريد في الوقت الذي يستلم فيه الطلب. لا يمكن تقديم المحتوى المخصص لكل طلب إلى الجميع، ولا يمكن تخزينه على نطاق عالمي.
يُزيل معالجة المحتوى الديناميكي داخليًا طبقة إضافية من التجريد التي تتطلب عادة تحويل الطلب إلى مكتبة خارجية. ينفذ Apache تنفيذيًا معالجة المحتوى الديناميكي، مع حلول مكدس الحلول الشائعة مثل LAMP (Linux، Apache، MySQL، PHP). Nginx هو أكثر لغة البرمجة التعايشية ولكن يتطلب مكتبات خارجية مثل PHP-FPM للعمل كحل مماثل لحالات الاستخدام مثل مكدس LAMP.
قدرة البروكسي العكسي
A reverse proxy sits in front of a traditional web server, becoming an intermediary server that routes HTTP request traffic to web servers behind it. A reverse proxy becomes the gateway that directs traffic between web servers and the internet at large, and often is the layer that directly interfaces with a firewall. While most web servers have reverse proxy capability, Nginx was built and optimized from the ground up to be a robust reverse proxy server.
أهمية Nginx في الاستخدام العملي تعتمد بشكل كبير على ميزاته كخادم وكفاءته. تضع العديد من إعدادات الخوادم خوادم ويب تقليدية متعددة خلف وكيل عكسي لـ Nginx، مستخدمة Nginx لتحديد أي خادم ويب يجب إرسال الطلب إليه بناءً على الحمل أو تكوين القواعد. هذا الدور الوسيطي يسمح له حتى بالتزامن مع Apache في بعض الإعدادات، حيث يجلس كوكيل عكسي أمام خادم ويب تقليدي من نوع Apache.
بيئة الدعم
تحظى كل من Nginx و Apache بدعم قوي من فرق التطوير الخاصة بهم ومن المجتمع. بوصفهما خوادم ويب مفتوحة المصدر الأكثر شهرة، توجد موارد تعليمية بوفرة. يتم دعم Apache من قِبل Apache، وهي منظمة غير ربحية، وستظل مجانية دائمًا للاستخدام. يتمتع Nginx بنواة مفتوحة المصدر، ولكن الميزات المرغوبة مقفلة خلف منتج Nginx Plus الخاص بهم مع ميزات مثل فحوصات الصحة الصعودية، واستمرارية الجلسة، والمراقبة المتقدمة.
بدائل للخادم الويب التقليدي
إذا كنت ترغب في خادم جاهز في جميع الأوقات للاستجابة لطلب HTTP الوارد، فإن خادم الويب يقوم بتحقيق هذه المهمة بشكل أفضل. كلما ابتعدت أكثر عن التركيز على خدمة طلبات HTTP، ستصبح خوادم الويب أقل حلاً مثاليًا. وهذا ينطبق بشكل خاص على الميزات الإضافية التي توفرها خوادم الويب. على سبيل المثال، قد يتم التعامل مع ميزات مثل التخزين المؤقت بكفاءة أكبر على مستوى البروكسي العكسي أو شبكة توزيع المحتوى، اعتمادًا على الإعداد.
بالإضافة إلى ذلك، مع تحول أولويات المطورين في تكريس موارد التطوير لإدارة خوادم الويب، ظهرت حلول مثل الخوادم اللاخادمة، ونظم إدارة المحتوى الرأسية، و Jamstack كاستجابة. هذه الحلول لا تتطلب خادم ويب مستضاف ذاتيًا، بل تجرد طبقة خادم الويب إلى خدمات خارجية. بالنسبة للمطورين الذين لا يحتاجون إلى التحكم التفصيلي أو المتقدم في طبقة خادم الويب، يمكن توجيه الوقت التطويري في مكان آخر. للمزيد، تحقق من هذا المقال حول Jamstack مع نظام إدارة المحتوى الرأسي أو تنفيذ نموذج Jamstack كامل الشكل باستخدام منصة تطبيق DigitalOcean.
الاستنتاج
في هذه المقالة، قمت بتقديم مقدمة أساسية حول ما هي خوادم الويب، وكيفية استخدامها، والمشاكل التي تحاول حلها. مجهزًا بهذ المعرفة، استقبلت المناظر الحالية لحلول خوادم الويب، ووجهت معرفتك نحو العثور على الحل الذي يناسب احتياجاتك بشكل محدد. لمعرفة المزيد حول كيفية إعداد واستخدام خادم ويب، تحقق من بقية سلسلة مناهج السحابة لدينا حول خوادم الويب.
موارد إضافية
البرامج التعليمية:
- كيفية تثبيت أباتشي: تعليمات خطوة بخطوة لإعداد أول خادم أباتشي الخاص بك. تتفوق هذه الحلول في التكوين اللامركزي للتحكم الدقيق، والتعامل الداخلي مع الصفحات الديناميكية مع سنانين لغات البرمجة الشهيرة مثل PHP.
- كيفية تثبيت إنجينكس: تعليمات خطوة بخطوة لإعداد أول خادم إنجينكس الخاص بك. تتفوق هذه الحلول في التكوين المركزي، وخدمة الأصول الثابتة، والعمل كخادم وكيل عكسي، والتعامل مع حركة المرور عالية الكثافة.
- أباتشي مقابل إنجينكس: الاعتبارات العملية: نظرة أعمق على اللاعبين الرئيسيين في منظومة حلول خوادم الويب.
منتجات ديجيتال أوشن:
- ديجيتال أوشن دروبلتس: خوادم افتراضية خاصة بك لاختبار ونشر خوادم الويب.
- ديجيتال أوشن فانكشنز: حل بدون خادم يمكن أن يكون بديلاً للخوادم الافتراضية الخاصة. تخطَّى صيانة الخوادم، وانصب تركيزك على رمز تطبيقك.
Source:
https://www.digitalocean.com/community/conceptual-articles/introduction-to-web-servers