إنشاء خادم الويب على الويندوز. مشغل برامج وندوز. إعداد خادم الويب IIS. الاتصال بقاعدة معلومات منشورة عبر متصفح الويب

💖 أحببته؟شارك الرابط مع أصدقائك

يجب استضافة التطبيقات والمواقع المطورة في ASP.NET على خادم ويب (يشار إليه فيما يلي باسم IIS). هذه أداة إضافية لـ Windows مسؤولة عن استضافة تطبيقات الويب ، وموازاة طلبات http ، وتخزين جلسات المستخدم ، وأكثر من ذلك بكثير.

لا يحتوي Windows 2008 على IIS افتراضيًا ، وقبل أن تتمكن من إعداد موقع ، يجب عليك ذلك تثبيت IIS. لذلك تنقسم المقالة إلى قسمين:

كيفية تثبيت IIS 7 على نظام التشغيل windows 2008

تم تثبيت خادم تطبيق IIS 7 من التوزيع نظام التشغيل. يُنصح بتثبيت IIS من نفس توزيع نظام التشغيل المثبت عليه هذا الحاسوب. من التجربة أستطيع أن أقول أن هناك سوابق لا العملية الصحيحة، في حالة تثبيت IIS من توزيع "غير أصلي". أدخل قرص Windows 2008 في محرك الأقراص وابدأ في تثبيت IIS:

1. انقر فوق "ابدأ" وانقر بزر الماوس الأيمن فوق "الكمبيوتر" ، وانتقل إلى "الإدارة":

2. في Server Manager ، حدد "ميزات" وانقر فوق "إضافة ميزات":

3. في الشجرة ، حدد "أدوات خادم الويب (IIS)" وانقر فوق "التالي":

بعد ذلك ، سيبدأ تثبيت IIS 7 من قرص التشغيل. أنظمة النوافذ 2008. انتظر حتى الانتهاء وأعد تشغيل الكمبيوتر. الجميع! اكتمل تثبيت IIS!

كيفية إعداد IIS 7 على نظام التشغيل windows 2008

لذلك ، لدينا موقع ، دعنا نسميه الأمان. إنه دليل أمان ومجموعة من الملفات في هذا الدليل. يحتوي الموقع الصفحة الرئيسية، والتي يجب تحميلها افتراضيًا. دعنا نسميها index.aspx. الخطوة الأولى هي تثبيت وتسجيل .Net Framework. أنت بحاجة إلى تثبيت .Net Framework نفسه الذي تمت كتابة موقعك بموجبه. يمكن عرض الإصدار في ملف web.config الخاص بموقعك. سنفترض أن موقعنا مكتوب بلغة Net.Framework v.4.0.

تثبيت وتكوين Net.Framework مغطى في مقالة منفصلة كيفية تثبيت Asp.Net وتسجيله في IIS. سأشرح هنا بإيجاز: من أجل تسجيل إطار عمل .Net في IIS ، تحتاج إلى ذلك سطر الأوامرمن C: \ WINDOWS \ Microsoft.NET \ Framework \ نسخة من الإطار الخاص بك\ قم بتشغيل الأمر aspnet_regiis.exe -i ؛

ضع دليل الأمان في C: \ Inetpub \ wwwroot \. هذا هو دليل عمل إدارة IIS.

الآن دعنا ننتقل مباشرة إلى إعداد IIS:

1. قم بتشغيل مدير خدمات معلومات الإنترنت (IIS). انقر فوق "ابدأ" ، "تشغيل". في النافذة التي تظهر ، أدخل inetmgr.exe وانقر على "موافق":

2. أولاً وقبل كل شيء ، لنقم بإنشاء مجموعة تطبيقات لموقعنا. بشكل عام ، يتم إنشاء مجموعة تطبيقات لفصل التطبيقات التي تعمل على إصدارات مختلفة من .NET Framework. من حيث المبدأ ، إذا كان لديك موقع واحد فقط على جهازك ، فيمكنك تخطي هذه الخطوة. في IIS Manager ، انقر بزر الماوس الأيمن فوق مجموعات التطبيقات ، قائمة جديدة ، مجموعة التطبيقات ... في النافذة التي تظهر ، أدخل اسم مجموعة التطبيق وانقر فوق "موافق". لأن نظرًا لأننا قررنا أن موقعنا تمت كتابته في .Net Framework v.4.0 ، فسوف نطلق على مجموعة التطبيقات الخاصة بنا "Net 4.0":

3. بعد أن قمنا بنسخ موقعنا إلى C: \ Inetpub \ wwwroot ، لدينا دليل أمان في IIS Manager ضمن مواقع الويب. انقر بزر الماوس الأيمن وحدد "تحويل إلى تطبيق":

4. في النافذة التي تظهر ، حدد مجموعة التطبيقات الخاصة بنا وانقر فوق "موافق":

5. في علامة التبويب "المستندات" ، نحتاج إلى إضافة صفحتنا الرئيسية. بعد ذلك ، عند الوصول إلى الموقع ، لن تحتاج إلى الوصول إلى http: // اسم الخادم/Security/ndex.aspx ، سيكون كافيًا كتابة http: // اسم الخادم/ الأمان وسنصل إلى الصفحة الرئيسية للموقع. في علامة التبويب "المستندات" ، احذف جميع الصفحات الموجودة هناك افتراضيًا وأضف الصفحات الخاصة بك أبدأ الصفحة index.aspx:

6. هذا يكمل تكوين IIS ، يبقى تكوين حقوق الوصول إلى دليل الأمان. افتح "المشاركة" في علامة التبويب "الوصول" وامنح حق الوصول الكامل إلى مجموعة IIS_IUSRS ومستخدم IUSR (تم إنشاؤهما عند تثبيت IIS). في علامة التبويب "الأمان" ، امنح أيضًا حق الوصول الكامل إلى المجموعة والمستخدم المحددين:

الآن يمكنك محاولة فتح موقعنا. افتح متصفحًا وأدخل http: // في شريط العناوين اسم الخادم/ الأمان ، ستظهر صفحتك الرئيسية. الجميع! إذا كان لديك أي أسئلة ، فسأكون سعيدًا بالإجابة في التعليقات على المقالة.

ينطبق هذا الوصف على الإصدارات التالية من Windows 7: Professional و Ultimate.

تثبيت خادم ويب IIS

لوحة التحكم ← البرامج ← تشغيل ميزات Windows أو إيقاف تشغيلها. نجد القسم في القائمة - خدمات IIS. افتحه وحدد المكونات الضرورية:

المجموعة الأساسية:

  • أمان. نختار جميع المكونات باستثناء "المصادقة مع تعيين الشهادة ...".
  • مكونات تطوير التطبيقات. نختار مكون CGI فقط ، وهذا ضروري للتثبيت اللاحق لـ PHP.
  • وظائف HTTP العامة. نحتفل بكل النقاط.
  • الفحص والتشخيص الوظيفي. حدد "تسجيل HTTP" و "طلب مراقب".
  • ميزات تحسين الأداء. نحتفل بكل النقاط.
  • أدوات إدارة الموقع. نحتفل فقط بـ "وحدة التحكم بالإدارة لـ IIS".

عندما يتم تحديد كافة العناصر ، انقر فوق "موافق". بعد اكتمال التثبيت ، تأكد من إعادة التشغيل!

الآن دعنا ننتقل إلى إنشاء موقع ويب. افتح لوحة التحكم -> النظام والأمان -> الأدوات الإدارية -> إدارة الكمبيوتر (يمكنك القيام بذلك بشكل أسرع: انقر بزر الماوس الأيمن على الكمبيوتر ← حدد إدارة من القائمة). في النافذة التي تفتح ، على اليسار ، بالنقر على المثلث الصغير ، وسّع مجموعة "الخدمات والتطبيقات" وافتح "مدير IIS". في نافذة "الاتصالات" التالية ، حدد مجلد "المواقع" (إذا كان هناك موقع ويب افتراضي ، يمكنك حذفه) ، ثم في نافذة "الإجراءات" اليمنى ، انقر فوق الرابط "إضافة موقع ويب ..." ( يمكنك أيضًا القيام بذلك: انقر بزر الماوس الأيمن → حدد "إضافة موقع ويب ..." من القائمة.

بعد ذلك ، في النافذة التي تفتح ، يجب عليك تحديد اسم موقع الويب وموقع ملفاته (بشكل افتراضي ، هذا هو c: \ inetpub \ wwwroot ، إذا لم يتم تحديد هذا المسار افتراضيًا ، أدخله يدويًا). يتم ترك باقي الخيارات دون تغيير.

انقر فوق موافق. على هذا الإعداد الأساسيمكتمل. أنت الآن بحاجة إلى التحقق من أداء الموقع الذي تم إنشاؤه حديثًا. افتح متصفحًا وأدخل http: // localhost في شريط العناوين. إذا كان كل شيء يعمل بشكل صحيح ، فسترى صفحة مشابهة:

تثبيت PHP (FastCGI)

قبل بدء التثبيت ، تحتاج إلى تنزيل إصدار PHP من http://windows.php.net/download/. هناك العديد من الخيارات للاختيار من بينها. نحن بحاجة إلى الإفراج VC9 x86 غير آمن للخيط. للعمل مع IIS في وضع FastCGI ، هذا هو الخيار الأسرع والأكثر استقرارًا. قم بتنزيل الإصدار باستخدام أداة تثبيت ، وليس أرشيف مضغوط (هذا مخصص لأولئك الذين يحبون التثبيت اليدوي). لاحظ أنه مع المثبت ، لا يلزم أن يكون أحدث إصدار من PHP ، ولا بأس إذا قمت بتنزيل إصدار سابق.

اختر IIS FastCGI - هذه هي الطريقة الوحيدة المستقرة حاليًا لتثبيت PHP على IIS.

بعد اكتمال المثبت ، انتقل إلى إعدادات IIS. من حيث المبدأ ، هناك إجراء واحد فقط يجب القيام به هنا - رفع أولوية ملفات php حتى تتم معالجتها في المقام الأول. افتح مدير IIS مرة أخرى - انقر بزر الماوس الأيمن على الكمبيوتر ← حدد "إدارة" في القائمة ، وافتح "الخدمات والتطبيقات" → "مدير IIS" في النافذة اليسرى. في النافذة الموجودة على يمين "الاتصالات" ، انقر فوق اسم موقعنا وفي النافذة الوسطى افتح (انقر مرتين) قسم "المستند الافتراضي".

في القائمة التي تظهر ، تحتاج إلى نقل index.php إلى البداية (أي إلى الأعلى - لهذا ، حدد index.php وانقر فوق "Up" على اليمين):

إذا كنت تستخدم Windows 7 64 بت ، فأنت بحاجة إلى اتخاذ خطوة إضافية. افتح قسم تجمعات التطبيقات (في نافذة الاتصالات). تمييز DefaultAppPool وافتح " خيارات اضافية"(عن طريق النقر بزر الماوس الأيمن أو في العمود الموجود في أقصى اليمين" الإجراءات "). في القسم (عام) ، تحتاج إلى العثور على الخيار "تمكين تطبيقات 32 بت" وتعيينه على True. إذا تم بالفعل إنشاء تجمعات إضافية للمواقع الموجودة ، فسيتعين عليك القيام بنفس العملية لكل منها.

الآن نحن بحاجة لاختبار PHP. في المجلد الجذر لموقع الويب (c: \ inetpub \ wwwroot) ، تحتاج إلى وضع ملف index.php بالمحتوى التالي:

افتح الموقع في متصفح (http: // localhost). إذا كان كل شيء يعمل بشكل صحيح ، فسترى صفحة تحتوي على معلومات حول تثبيت PHP:

افتح صفحة تنزيل التوزيع: http://www.mysql.com/downloads/mysql/

لتنزيل Win 32: Windows (x86 ، 32 بت) ، مثبّت MSI
لتنزيل Win 64: Windows (x86، 64-bit)، MSI Installer

بعد النقر فوق الزر "تنزيل" ، سترى نموذج تسجيل ، يمكنك تخطيه بالنقر فوق الارتباط أدناه ("لا شكرًا ، فقط ابدأ التنزيل!").

أطلقنا برنامج التثبيت ، بعد عدة نوافذ غير مفيدة للغاية ، يُعرض علينا اختيار نوع التثبيت ، حدد Custom:

نافذة اختيار المكون (إذا كنت مبتدئًا ، اترك كل شيء افتراضيًا ، انقر فوق التالي وتثبيت):

في نهاية التثبيت ، ستظهر نافذة جديدة بها سؤال حول الاشتراك ، انقر فوق علامة التبويب في الزاوية اليمنى العليا.

المرحلة النهائية من التركيب. حدد الخيار "تشغيل معالج تكوين مثيل MySQL" وانقر فوق "إنهاء":

بعد اكتمال التثبيت ، My خادم قاعدة البياناتمعالج تكوين المثيل (يمكن تشغيله يدويًا من الكمبيوتر ← ملفات البرامج ← MySQL ← MySQL Server 5.5 ← bin ← MySQLInstanceConfig.exe). انقر فوق {التالي:

نختار سيناريو التثبيت: Developer Machine - للتثبيت على كمبيوتر منزلي (من اختيارنا) ، وآلة Server - للتثبيت على خادم ، وآلة MySQL Server مخصصة - للتثبيت على خادم مخصص بالكامل لـ MySQL. تؤثر هذه الخيارات بشكل أساسي على مقدار الذاكرة التي تستهلكها MySQL:

تدعم MySQL نوعين رئيسيين من قواعد البيانات (InnoDB - مع دعم المعاملات و MyISAM - بدون معاملات). قاعدة بيانات متعددة الوظائف - سيتم تثبيت دعم لكلا النوعين من قواعد البيانات (اختيارنا). قاعدة بيانات المعاملات فقط - سيتم تثبيت دعم InnoDB فقط. قاعدة البيانات غير المعاملات فقط - سيتم تثبيت دعم MyISAM فقط.

إذا تم تحديد دعم InnoDB في الخطوة السابقة ، فيمكن تكوين موقع ملفات بيانات InnoDB هنا:

دعم الاتصالات المتزامنة. دعم القرار - ما يصل إلى 20 اتصالًا متزامنًا (اختيارنا). معالجة المعاملات عبر الإنترنت - حتى 500 اتصال. الإعداد اليدوي- التثبيت اليدويعدد التوصيلات.

نحتفل بالخيارين "تمكين شبكة TCP / IP" و "تمكين الوضع الصارم". نترك رقم المنفذ دون تغيير - 3306. إذا تم التخطيط لاتصالات مباشرة من أجهزة كمبيوتر أخرى بالخادم ، فحدد الخيار "إضافة استثناء جدار الحماية لهذا المنفذ" (افتح المنفذ في جدار حماية Windows).

حدد الترميز الافتراضي. الخيار الأكثر منطقية الآن هو UTF-8. حدد خيار أفضل دعم لتعدد اللغات:

تأكد من تحديد الخيار "تثبيت كخدمة Windows" (تعمل كخدمة Windows). حدد "تشغيل MySQL Server تلقائيًا" إذا كنت تريد أن تبدأ الخدمة تلقائيًا.

المرحلة النهائية. تعيين كلمة مرور المسؤول (الجذر). من الأفضل عدم فقد كلمة المرور هذه! خيارات "تمكين الوصول إلى الجذر من الأجهزة البعيدة" و "إنشاء حساب مجهول" غير مستحسنة ، لأن يقللون من الأمن.

ملاحظة: إذا قمت بتثبيت MySQL من قبل ، ثم قمت بإلغاء تثبيته أو إعادة تثبيته ، فسيحدث الخطأ 1045 في الخطوة الأخيرة ( خطأ في الإتصال). لتجنب ذلك ، سيتعين عليك إزالة MySQL ، ثم إزالتها مجلد مخفييقع MySQL في C: \ ProgramData (يحتوي هذا المجلد على ملفات معلومات بيانات المستخدم). ثم كرر إجراء التثبيت والتكوين.

الآن يبقى التحقق مما إذا كان التثبيت ناجحًا. افتح قائمة ابدأ ← كافة البرامج ← MySQL ← MySql Server 5.5 ← MySQL 5.5 Command Line Client (أداة مساعدة للعمل مع MySQL في سطر الأوامر).

بعد ذلك ، أدخل كلمة مرور المسؤول (الجذر). إذا كانت كلمة المرور صحيحة ، فسيتم نقلك إلى موجه الأوامر (mysql>). أدخل الأمر: إظهار قواعد البيانات ؛ (مطلوب فاصلة منقوطة في النهاية). نتيجة لذلك ، يجب أن ترى قائمة قواعد البيانات (اثنان على الأقل - information_schema و mysql). هذا يعني أن الخادم يعمل بشكل صحيح. أغلق سطر الأوامر عن طريق تنفيذ أمر الخروج.

التثبيت والتكوين الأساسي لملف phpMyAdmin

افتح صفحة التنزيل http://www.phpmyadmin.net/home_page/downloads.php واختر تنزيل الأرشيف المنتهي بـ * all-languages.7z أو * all-languages.zip. قم بإنشاء مجلد phpmyadmin في C: \ inetpub \ wwwroot \ واستخرج ملفات الأرشيف الذي تم تنزيله هناك.

دعنا نتحقق من كيفية عملها. افتح المتصفح وانتقل إلى العنوان http: // localhost / phpmyadmin /. يجب أن تفتح هذه النافذة:

قبل الاتصال بـ MySQL ، تحتاج إلى إنشاء ملف تكوين.

هناك خياران. يمكنك تحرير ملف config.sample.inc.php يدويًا وحفظه كملف config.inc.php (كلا الملفين في جذر تثبيت phpMyAdmin).

أو استخدم المُكوِّن الرسومي. للقيام بذلك ، افتح العنوان التالي في المتصفح: http: // localhost / phpmyadmin / setup /

إذا رأيت التحذير "تعذر تحميل أو حفظ الإعدادات". قم بإنشاء مجلد التكوين في جذر تثبيت phpMyAdmin (بمعنى داخل مجلد phpmyadmin). تأكد من أنه في إعدادات الأمان لمجلد التكوين ، تتمتع مجموعة مستخدمي IIS_IUSRS ومستخدم IUSR بحقوق تحكم كاملة. بالنسبة لأولئك الذين لا يعرفون كيفية القيام بذلك: انقر بزر الماوس الأيمن على مجلد التكوين ← خصائص ← علامة تبويب الأمان ← انقر فوق الزر "تغيير ..." ← حدد IIS_IUSRS (...) في القائمة وتحقق من "التحكم الكامل" مربع الاختيار أدناه ، انقر فوق "تطبيق". نفعل نفس الشيء مع IUSR. إذا لم يكن هناك مثل هذا المستخدم في القائمة ، فانقر على "إضافة" ← متقدم ... ← بحث ← حدد IUSR واضغط على موافق ، ثم امنحه حق الوصول الكامل.

نعود إلى المكون. لتكوين إعدادات اتصال MySQL ، انقر فوق الزر "خادم جديد":

أهم لحظة! إذا كنت تتصل بخادم MySQL مثبت على نفس الجهاز (المضيف المحلي) ، في عمود "مضيف الخادم" ، يجب استبدال المضيف المحلي بـ 127.0.0.1 (الأمر نفسه ينطبق على إنشاء config.inc.php يدويًا). أضف السطر التالي إلى ملف C: \ Windows \ System32 \ drivers \ etc \ hosts: 127.0.0.1 localhost. في نفس الملف ، احذف أو علّق (ضع علامة # في بداية السطر) السطر :: 1 localhost (إذا تم التعليق عليه في البداية ، فلن تحتاج إلى فعل أي شيء به).

نحفظ الإعدادات ونعود تلقائيًا إلى الصفحة السابقة. هنا نختار اللغة الافتراضية - الروسية ، الخادم الافتراضي هو 127.0.0.1 ، ونهاية السطر هي Windows.

هذا كل شئ. نعود إلى الصفحة http: // localhost / phpmyadmin /. يمكنك الآن تسجيل الدخول إلى النظام باعتبارك المستخدم الجذر (أدخل كلمة المرور التي حددتها عند إعداد MySQL للمستخدم الجذر). اختبار الاتصال بـ MySQL. إذا سارت الأمور على ما يرام (كنت قادرًا على تسجيل الدخول إلى phpMyAdmin) ، فاحذف مجلد التكوين.

1. إنشاء دليل مسبقًا موقع الاختبارلمحتوى الموقع في الدليل ج: \ inetpubعلى الخادم. يمكن القيام بذلك أيضًا من نظام التشغيل الأساسي: باستخدام Explorer ، افتح الدليل \\ win_web_srv \ с $ وأنشئ مجلدًا أو على سطر الأوامر على الخادم باستخدام الأمر مكدير.

2. في الكتالوج موقع الاختبارقم بإنشاء ملف index.htmlالمحتوى التالي

موقع الاختبار

موقع اختبار للتجارب

3. في الملف يستضيففي نظام التشغيل الأساسي ، سنكتب المراسلات بين عنوان IP لخادم الويب الخاص بنا واسم موقع TestSite الجديد.

4. إطلاق مدير IISفي نظام التشغيل الأساسي.

5. الاتصال بخادم الويب البعيد.

6. على اللوحة اليمنى "روابط"حدد العقدة "مواقع"، على اللوحة اليمنى "أجراءات"يختار "إضافة موقع ويب"

7. في النافذة التي تفتح ، نحدد المعلمات الرئيسية للموقع:

اسم الموقع - موقع الاختبار(يمكنك تعيين تعسفي ، سيتم استخدامه فقط لتحديد الموقع داخل خادم الويب)

دليل المحتوى ، المسار المادي - ج: \ inetpub \ testite

سيتم الربط عن طريق رأس المضيف.

اسم العقدة - موقع الاختبار(سيصل الزوار إلى الموقع بهذا الاسم)

8. وهكذا ، أنشأنا موقعًا جديدًا وقمنا بعمل ارتباط وفقًا لرأس المضيف (اسم المضيف).

9. تحقق مما إذا كان الموقع يعمل. في المتصفح في سطر عنوان URL ، اكتب http: // testite / يجب أن ترى الصفحة index.htmlالموقع الذي تم إنشاؤه.

10. دعونا تكوين "المستند الافتراضي"

11. على لوحة الاتصال في العقدة المواقعاختر موقعنا موقع الاختباروفي الجزء الأوسط من النافذة الرئيسية ، حدد العنصر "المستند الافتراضي"

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

13. يرجى ملاحظة أن إعدادات موقعنا موروثة من مستوى أعلى. لأن لدينا صفحة فقط index.htmlولم يتم توقع أي شيء آخر ، فسنقوم بتعديل هذه الإعدادات. استخدم الخيارات المتاحة في لوحة الإجراءات على اليمين:

قم بإزالة كافة أسماء الملفات من القائمة باستثناء index.html

إضافة اسم جديد default.html

انقل ملف index.html إلى الأعلى

14. يجب أن تكون النتيجة شيء من هذا القبيل

15. بعد التغييرات ، ابحث في الدليل الرئيسي لموقعنا ج: \ inetpub \ TestSiteظهر الملف web.config، والتي تحتوي على تغييرات التكوين الخاصة بالموقع والتي تتعلق فقط بالإعدادات المستند الافتراضي

16. لنقم بإنشاء دليل افتراضي.


17. في الكتالوج ج: \ inetpub \ testiteإنشاء دليل فرعي على الخادم vd.

18. في مدير خدمات معلومات الإنترنت (IIS) ، انقر بزر الماوس الأيمن على اسم موقعنا وحدد ينعش

19. يرجى ملاحظة أن مجلدًا قد ظهر في بنية الموقع ، ولكنه مجلد حقيقي وليس مجلدًا افتراضيًا J. إنه موجود في بنية الدليل المادي لموقعنا.

20. في المتصفح ، اكتب http: // testite / vd في شريط URL ، وستحصل على رسالة الخطأ التالية

21. يفسر رد فعل خادم الويب هذا من خلال حقيقة أنه في الدليل vdلا يوجد ملف محدد في الإعدادات المستند الافتراضي، والإعداد تصفح الدليلالموروثة من الموقع لها قيمة معلمة ممكّن = خطأ، أي. تصفح الدليل معطل.

22. السماح باستعراض الدليل لمجلد vd

23. في هيكل الموقع ، حدد مجلد VDوعلى الصفحة فرصفي مجموعة IIS ، حدد العنصر عرض الكتالوجوبالتالي ، لن نكون قادرين فقط على تكوين خيارات العرض لمحتويات الدليل ، ولكن أولاً وقبل كل شيء تمكين هذه الميزة لمجلد VD.

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

25. قم بتحديث الصفحة في المتصفح

26. لاحظ أنه تم إنشاء ملف تلقائيًا في دليل VD web.config، والذي يحدد فقط أذونات تصفح الدليل

27. محاولة خلق "حقيقي" دليل ظاهريخارج هيكل دليل موقعنا. على سبيل المثال ، في جذر القرص معإنشاء دليل VD_TestSite.وفقًا لذلك ، بخلاف مجلد VD ، لم يتم تضمين هذا المجلد تلقائيًا في بنية موقعنا.

28. في IIS Manager ، انقر بزر الماوس الأيمن فوق عقدة موقعنا (TestSite) وحدد العنصر "إضافة دليل ظاهري"

29. يبقى فقط تحديد بارامترات الدليل الافتراضي وتحديد موقعه الفعلي

30. في النافذة "إضافة دليل ظاهري"تحديد معلمات الدليل الظاهري: الاسم المستعار والموقع الفعلي. يرجى ملاحظة أن الاسم المستعار (الاسم المستعار) لا يتطابق مع اسم المجلد. في سطر المتصفح في عنوان URL ، ستحتاج إلى استخدام الاسم المستعار المحدد فقط.

31. انتبه إلى الفرق بين أيقونات المجلدين في هيكل الموقع

32. إضافة إلى الكتالوج ج: \ VD_TestSiteإنشاء صفحة html بدائية مسماة index.html

33. في المتصفح ، في شريط URL ، اكتب http: // testite / vd1. تأكد من عرض الصفحة التي قمت بإنشائها. بشكل عام ، يمكن أن يشير الدليل الظاهري إلى دليل موجود حتى على جهاز مادي مختلف ، وفي هذه الحالة يكون المسار هو مسار UNC.

34. دعونا نحاول تجربة الكثير طرق مختلفةروابط الموقع.

35. محاولة ربط الموقع بالميناء.

36. في مدير IIS، على اللوحة "أجراءات"يختار "الارتباطات"، ثم "يضيف"وحدد المنفذ غير القياسي 4545

37. في المتصفح ، في شريط URL ، اكتب http: // web_win_srv. يجب أن نرى الصفحة موقع ويب الافتراضي، أي. الموقع بشكل افتراضي.

38. لنحاول الآن كتابة http: // web_win_srv: 4545 في سطر عنوان URL. يجب فتح صفحة موقعنا - TestSite.

39. وهكذا توصلنا إلى أن موقعنا مرتبط بطريقتين:

المنفذ 80 ورأس المضيف TestSite

المنفذ 4545

40. دعنا نتعرف على إعدادات القيود الخاصة بموقعنا.

41. في الفريق "أجراءات"حدد البند "خيارات إضافية"

42. غريب أعداد كبيرةقيم المعلمات "الحد الأقصى الإنتاجيةتشير "و" الحد الأقصى للوصلات "إلى أنه لم يتم تعيين حدود.

43. يمكن تغيير القيود باستخدام هذا البند "قيود…"على اللوحة "أجراءات"

44. الآن دعونا نجرب رسائل الخطأ التي يستجيب بها خادمنا للإجراءات غير الصحيحة للزوار أو التطبيقات المستضافة عليه.

45. في المتصفح ، حاول فتح صفحة على موقعنا غير موجودة ، على سبيل المثال http: //testsite/test.html. لأن لا توجد مثل هذه الصفحة ، سيرد الخادم رسالة خطأ مع الرمز 404 . يمكن تغيير هذه الرسالة لتكون أكثر "ودية" للزائر.

46. ​​لنلق نظرة على جميع الصفحات المقابلة للأخطاء الخاصة بموقع TestSite ، والتي ورثتها من مستوى خادم الويب

47. دعنا نحاول تغيير الرسالة عند حدوث خطأ 404 .

48. لنقم بإنشاء صفحة html الخاصة بنا بالاسم 404.htmووضعه في الدليل ج: \ inetpub \ TestSite \ Err.محتوى الملف 404.htm

خطأ 404

لم يتم العثور على الملف

لسوء الحظ ، المحتوى الذي كنت تبحث عنه غير موجود هنا.

يرجى محاولة الاختيار معلومات ضروريةبالذهاب إلى الصفحة الرئيسية للموقع:

49. في حلقة النقاش أجراءاتحدد البند "يتغير…"

50. في المتصفح ، حاول فتح صفحة غير موجودة على موقعنا ، على سبيل المثال http: //testsite/test.html

51. ننظر إلى الصفحة التي أنشأناها خصيصًا للخطأ 404.

52. الآن دعونا نجرب الاتصال بموقعنا والعمل معه من خلال بروتوكول HTTPS الآمن القائم على شهادات SSL.

53. دعونا نلقي نظرة على الشهادات الموجودة على جهاز الكمبيوتر المحلي لدينا (نظام التشغيل الأساسي) وخادم الويب. للقيام بذلك ، سنستخدم الأداة الإضافية المناسبة لوحدة تحكم إدارة MMC.

54. بدء تشغيل وحدة الإدارة من سطر الأوامر كمد.

55. دعونا نضيف المعدات التي نحتاجها.

ملف -> إضافة أو إزالة الأدوات الإضافية

56. من قائمة الأدوات الإضافية المتاحة ، حدد "الشهادات"واضغط على الزر "يضيف".

57. في النافذة التي تفتح ، حدد الخيار "حساب الكمبيوتر"، يضعط "إضافي"و "مستعد"

58. بعد ذلك ، سيظهر الخاطف في القائمة "اللقطات المحددة ..."، انقر للإنهاء "نعم"

59. بنفس الطريقة ، قم بإضافة أداة إضافية إلى نفس وحدة التحكم "الشهادات"لخادم ويب بعيد. فقط أثناء التكوين ، حدد اسم خادم الويب البعيد.

60. وهكذا ، يمكننا الوصول إلى إدارة الشهادات الموجودة في المستودعات على الكمبيوتر المحلي (نظام التشغيل الأساسي) وخادم الويب البعيد.

62. للعمل على بروتوكول HTTPS ، يجب أن يكون لديك شهادة خادم ، ويجب أن تكون هذه الشهادة معتمدة من قبل مرجع مصدق. كجزء من العمل المختبري ، لن "نهتم" بإنشاء شهادة "كاملة" من شأنها أن تكون صحيحة للاستخدام. سنصادق على الشهادة لخادم الويب الخاص بنا بشهادة جذر موقعة ذاتيًا ، والتي سننشئها بأنفسنا وننقلها إلى مخزن الشهادات الجذر الموثوق به على الجهاز المحلي (نظام التشغيل الأساسي). من الواضح أن هذا "ليس رياضيًا" ، ولا يمكن استخدامه في الحياة الواقعية ، ولكنه سيفي بالغرض في تجاربنا. هذا نتيجة لحقيقة أن هناك عددًا كبيرًا جدًا من الاتفاقيات في شبكة المختبرات الخاصة بنا ولا يوجد مرجع مصدق رئيسي بحد ذاته ، أو على الأقل وحدة تحكم مجال عاملة.

63. هناك عقبة أخرى بسبب وضع التثبيت لخادم الويب - Server Core ، حيث لا يوجد "IIS Manager" ، لذلك نقوم بتنفيذ جميع إجراءات التكوين بشكل أساسي عن بُعد أو في وضع سطر الأوامر. عند إدارة IIS عن بعد باستخدام "IIS Manager" ، لا يوجد وصول إلى وظيفة إدارة الشهادات لـ IIS (للمقارنة ، انظر الصور أدناه ، لقطات شاشة من خادم الويب في وضع التثبيت الكامل). لكننا لا نبحث عن طرق سهلة.

64. لذلك ، نقوم بإنشاء جميع الشهادات باستخدام سطر الأوامر. للقيام بذلك ، سوف نستخدم الأداة المساعدة makecert.exeمن Windows SDK لنظام التشغيل Windows Server 2008 و. NET Framework 3.5

65. إنشاء شهادة جذر موقعة ذاتيًا. على خادم الويب في سطر الأوامر (cmd) أدخل الأمر

makecert.exe –ss root –sr localMachine –n “CN = TestCompany” -eku 1.3.6.1.5.5.7.3.1 –r

- الجذريحدد أن الشهادة سيتم إنشاؤها في مخزن الشهادات الجذر الموثوق به

-r- إنشاء شهادة موقعة ذاتيا

--eku 1.3.6.1.5.5.7.3.1- معرف الشهادة لمصادقة الخادم ؛ بالنسبة للعميل ، تحتاج إلى استخدام مصادقة العميل (1.3.6.1.5.5.7.3.2)

66. نقوم بإنشاء شهادة للموقع موقعة بشهادة الجذر الخاصة بنا. من المهم أن قيمة المعلمة CNتطابق اسم موقع URL تمامًا. على سبيل المثال ، ستكون الشهادة التي تم إنشاؤها صالحة فقط لموقع الاختبار ، ولكنها لن تكون صالحة لـ www.testsite.

makecert –pe ss my –n "CN = test Site" -b 01/01/2013-e 01/01/2036 –sky exchange - in "TestCompany" - is root eku 1.3.6.1.5.5.7.3.1 - ريال محليآلة

67. نتيجة لعمليات التلاعب ، لدينا شهادة الجذر التي تم إنشاؤها في متجر "Trusted Certification Authorities" وشهادتنا الخاصة لموقع الويب في متجر "Personal"

68. ابحث عن هذه الشهادات بنفسك في وحدة تحكم إدارة نظام التشغيل الأساسي.

69. افتح "مدير IIS" وقم بربط موقع الاختبار على الويب لتمكين الوصول إليه عبر HTTPS. تجدر الإشارة إلى أنه عند الربط ، نختار بروتوكول HTTPS ونحدد الشهادة التي أنشأناها باسم "موقع الاختبار" كشهادة SSL

70. في المتصفح ، نحاول الوصول إلى موقع الاختبار باستخدام بروتوكول HTTPS.

https: \\ testite

71. الالتفات لأن. منظمة "TestCompany" غير معروفة لجهازنا المحلي ، ثم أصدر المتصفح تحذيرًا

72. بالرغم من التحذير ، نواصل العمل مع الموقع.

73. لجعل كل شيء يبدو جيدًا ، نحتاج إلى وضع الشهادة الجذرية لمنظمتنا الاختبارية (TestCompany) في مخزن الشهادات الجذرية الموثوق به على الكمبيوتر المحلي (نظام التشغيل الأساسي). دعنا نصدر شهادة الجذر إلى ملف (على سبيل المثال ، TestCompany.cert) باستخدام وحدة التحكم في الإدارة.

74. لنستورد شهادة من ملف TestCompany.certفي مخزن الشهادات الجذرية الموثوقة على الجهاز المحلي (نظام التشغيل الأساسي).

75. في المتصفح ، افتح موقع الاختبار الخاص بنا مرة أخرى باستخدام بروتوكول HTTPS للوصول إليه. نرى أن تعريف الشهادة كان ناجحًا.

76. حاول استخدام بروتوكول HTTP للعمل مع موقع الاختبار.

http: \\ testite

77. نرى أن الموقع يمكنه التعامل مع طلبات HTTP و HTTPS. لحظر استخدام بروتوكول HTTP ، ومعالجة جميع الطلبات فقط عبر بروتوكول HTTPS ، من الضروري في إعدادات موقع الويب "إعدادات SSL"حدد اختيارا "يتطلب SSL". بالإضافة إلى ذلك ، يمكنك هنا أيضًا تكوين سلوك موقع الويب فيما يتعلق بشهادة SSL الخاصة بالعميل.

78. نحاول الآن الوصول إلى موقع الاختبار عبر بروتوكول HTTP. نرى أن الوصول مرفوض.

79. إذا حاولنا استخدام شهادة SSL التي تم إصدارها لموقع TestSite لموقع آخر (على سبيل المثال ، للموقع الافتراضي) ، فسوف نتلقى رسالة خطأ في نافذة المتصفح.

80. اربط الموقع الافتراضي بنفسك لاستخدام HTTPS وشهادة SSL التي تم إنشاؤها لموقع TestSite وتحقق من وجود خطأ.

81. قم بإنشاء شهادة SSL للموقع الافتراضي بنفسك وقم بتغيير الربط للموقع الافتراضي للعمل بشكل صحيح عبر بروتوكول HTTPS.

82. وأخيرا ، الأكثر إثارة للاهتمام ...

83. سنوفر القدرة على استضافة المواقع التي تم إنشاؤها باستخدام PHP على خادم الويب الخاص بنا.

84. أولاً وقبل كل شيء ، نتحقق مما إذا كان خادم الويب CGI الخاص بنا مدعومًا. نتأكد من أنه عند تثبيت مكون IIS-CGI ، لم يتم تثبيته

oclist | أكثر

85. قم بتثبيت وحدة IIS-CGI

عادة ، عندما يتحدثون عن خادم ويب ، فإنهم يقصدون الحلول القائمة على نظام Linux. ولكن إذا تم نشر البنية الأساسية الخاصة بك على أساس Windows Server ، فسيكون من المنطقي استخدام خادم الويب IIS. خلافًا للاعتقاد الشائع ، فهذه منصة شائعة جدًا تتيح لك العمل مع CMS الأكثر شيوعًا ، ولديها مجموعة واسعة من الأنظمة المصممة للعمل بشكل خاص على Windows و IIS.

الميزة التي لا شك فيها لـ IIS هي تكاملها الوثيق مع التقنيات الأخرى وأدوات تطوير Microsoft. على وجه الخصوص ، يمكن لحلول الويب الخاصة بـ IIS الاستفادة من الميزات الغنية لـ .NET والتفاعل بسهولة مع تطبيقات سطح المكتب على هذا النظام الأساسي. إذا لم تكن مهتمًا بهذا بعد ، ففي خدمتك مجموعة واسعة من أنظمة إدارة المحتوى الجاهزة ، بما في ذلك تلك المكتوبة خصيصًا لـ IIS. سننظر اليوم في كيفية تثبيت IIS وتكوينه للعمل مع حلول الويب المستندة إلى ASP.NET وتثبيت أحد أنظمة CMS الشائعة لهذا النظام الأساسي.

لتثبيت خادم ويب على نظام Windows الأساسي ، انتقل إلى الأداة الإضافية الأدوارالخامس مدير الخادموحدد تثبيت الأدوار خادم الويب (IIS)و خادم التطبيقات.

لكن لا تتسرع في النقر فوق التالي ، على اليسار ، تحت اسم كل دور ، يتوفر خيار خدمات الدور، انتقل إليه وقم بتعيين الخيارات التالية لخادم التطبيق: دعم خادم الويب (IIS) ، ومشاركة منفذ TCP ، وتنشيط HTTP.

وبالنسبة لخادم الويب ، قم بتثبيت خدمة خادم FTP.

ثم قم بتثبيت الأدوار المحددة. للتحقق من عمل IIS ، اكتب عنوان IP الخاص بالخادم في متصفحك ، يجب أن تشاهد صفحة كعب خادم الويب القياسية.

الآن دعنا ننتقل إلى إعداد الخادم ، لذلك سنفتح مدير IIS(موجود في ابدأ - أدوات إدارية).

بادئ ذي بدء ، دعنا ننشئ موقعًا جديدًا ، للقيام بذلك ، انقر بزر الماوس الأيمن على العنصر المواقعفي الشريط الجانبي لـ IIS Manager وحدد قم بإنشاء موقع جديد.

في النافذة التي تفتح ، حدد اسم الموقع والمسار إلى المجلد الجذر (افتراضيًا ، توجد مواقع المستخدمين في ج: \ inetpub \ wwwroot) ، والذي يجب إنشاؤه أولاً وتحديد اسم المضيف (اسم مجال الموقع) ، في حالتنا iissite.local

لا تنس إضافة سجل A مع اسم موقعك إلى خادم DNS أو كتابة الأسطر اللازمة في ملفات المضيفين لمحطات العمل تلك التي ستصل إلى الموقع من خلالها

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

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

في الصفحة التالية ، حدد معلمات الوصول إلى الخادم ، نوصي بتحديد مستخدمين محددين سيعملون مع هذا الموقع.

تم تكوين خادم الويب ويمكنك استخدامه لاستضافة صفحات HTML ، ومع ذلك ، تستخدم المواقع الحديثة نظام DBMS لتخزين بياناتها ، لذا فإن الخطوة التالية هي تثبيت MS SQL Express 2012 ، التي تعد قدراتها أكثر من كافية لمهامنا. يتم التثبيت بالقيم الافتراضية ، باستثناء وضع مصادقة، والذي يجب التبديل إليه وضع مختلطوتعيين كلمة مرور للمستخدم المتميز لخادم SQL سا.

الآن دعنا نحاول تثبيت بعض أنظمة إدارة المحتوى الشائعة القائمة على تقنية ASP.NET ، يتم تقديم مجموعة واسعة من هذه الحلول في معرض تطبيقات الويب من Microsoft. يرجى ملاحظة أنه بالنقر فوق زر التنزيل ، ستتلقى حزمة للتثبيت عبر Web PI ، وللتثبيت على IIS ، ستحتاج إلى الانتقال إلى موقع المطور وتنزيل الحزمة الكاملة من CMS

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

يعتمد نظام إدارة المحتوى هذا على ASP.NET 4 ، لذا فلنقم بإعداد موقعنا لاستخدام التقنيات اللازمة. للقيام بذلك ، انقر بزر الماوس الأيمن على اسم الموقع في الشريط الجانبي وحدد إدارة الموقع - خيارات متقدمة

في النافذة التي تفتح ، قم بتغيير المعلمة تجمع التطبيقات، مشيرا إلى هناك ASP.NET الإصدار 4

ثم قم بالتثبيت الحقوق اللازمةإلى مجلد الموقع ، تحتاج إلى إضافة مستخدم IIS_IUSRS القدرة على كتابة محتويات هذا المجلد وتغييرها.

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

في العام الماضي ، اضطررت إلى إجراء مقابلات مع حوالي 10-15 مرشحًا لمنصب مبرمج ويب ASP.NET متوسط ​​المستوى. كأسئلة "حول إعادة التعبئة" أو "بعلامة النجمة" ، طلبت منك أن تخبرني بما يحدث لطلب HTTP من لحظة وصوله إلى المنفذ 80 من الخادم إلى نقل التحكم إلى كود صفحة aspx. كانت الإحصائيات محبطة: لم يتمكن أي من المرشحين من التوصل إلى أي شيء مفهوم. وهناك تفسير لذلك: لا في MSDN مع تكنيت ، ولا في المصدر المتخصص iis.net ، ولا في الكتب على غرار "ASP.NET للمحترفين" ، ولا في المدونات ، يتم إيلاء هذا الموضوع الاهتمام الواجب - المعلومات لديها ليتم جمعها شيئًا فشيئًا تقريبًا. حتى أنني أعرف أشخاصًا قرروا كتابة خادم الويب الخاص بهم (إيغور ، جورجي ، مرحبًا!) حتى لا يفهموا كيفية عمل IIS. المقالة المعقولة الوحيدة هي "مقدمة إلى معماريات IIS" بقلم ريغان تمبلن. لكنها تظل على هامش مصالح Aspnets.

على الرغم من أنني شخصيًا لم أعد مهتمًا بالمسائل التقنية البحتة ، فقد قررت تجميع خبرتي المتراكمة واكتشاف التفاصيل الغريبة في اتساع الويب ونقل هذه المعرفة المقدسة إلى الجماهير قبل أن تصبح قديمة. سأحجز على الفور أن المقالة تركز بشكل أكبر على IIS 7.x ، وفي بعض الأحيان ستكون هناك فروع حول 6-ku. لم أجد الإصدار الثامن في عملي ، لذلك قررت تجاوزه في هذه المقالة. لكنني متأكد من أن القارئ سيتعامل بسهولة مع الثمانية ، بعد أن أتقن المادة المعروضة أدناه.







1. الخطة العامة

لذا ، لنبدأ من النهاية ، وبعد ذلك سننظر في الجوانب الفردية عن كثب.
في أدبيات اللغة الإنجليزية ، تسمى عملية معالجة الطلب في IIS "خط أنابيب معالجة الطلب" - وهو ما يشبه "خط معالجة الطلب". في بعبارات عامةيتم عرضه في الشكل أدناه لطلب http.

أرز. 1.خط أنابيب معالجة طلب HTTP (IIS 7.x).

لذلك يذهب طلب http إلى أسفل "حزام التجميع" من خلال ما يلي:

1. يصل المتصفح إلى خادم الويب على عنوان URL محدد ، على جانب الخادم ، يتم اعتراض الطلب من قبل السائق HTTP.SYS.
2. HTTP.SYSيطرق على الباب كانلاسترداد المعلومات من مخزن التكوين.
3. خدمة كانيطلب التكوين من المستودع - من ملف في مجلد IIS (applicationHost.config).
4. بسبب ال طلب معينالمستلمة عبر معلومات تكوين HTTP تستقبلها الخدمة W3SVC(المعروفة أيضًا باسم خدمة WWW في الصورة) ، تحتوي هذه المعلومات على بيانات حول تجمع التطبيقات (تجمع التطبيقات) ومعلمات الموقع الأخرى.
5. خدمة W3SVCيستخدم هذه المعلومات للتكوين HTTP.SYS.
6. خدمة كانيبدأ العملية W3WP.exeلتجمع التطبيقات إذا لم يبدأ بعد.
7. في تَقَدم W3WP.exeتطبيق الموقع قيد التشغيل ، وهو في الواقع يولد ويعيد استجابة للسائق HTTP.SYS.
8. HTTP.SYSيرسل ردًا إلى المتصفح.

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

2. عن قرب

الآن دعونا نلقي نظرة فاحصة على كل من هذه المكونات.
2.1. HTTP.SYS
على طبقة النقليستخدم IIS أدوات استماع البروتوكول التي توجد أعلى مكدس TCP / IP. العنصر الأكثر أهمية بالنسبة لنا هو سائق النظام HTTP.sys ، المدمج في نظام التشغيل kernel ويعمل مع بروتوكولات HTTP و HTTPS ، يسجل نفسه للاستماع إلى جميع المنافذ التي ستتلقى طلبات إلى المواقع في IIS.

كان HTTP.sys المدمج في النواة جديدًا في IIS 6 ، ليحل محل Windows Socket API ، ومكون اعتراض طلب HTTP على مستوى المستخدم و HTTPS في IIS. الإصدارات القديمة. ربما يكون تكامل برنامج التشغيل في kernel هو السبب الرئيسي وراء تشفير إصدار IIS بشكل ثابت لإصدار Windows.

يقبل برنامج التشغيل جميع الطلبات الواردة ويعيد توجيهها إلى مجموعة التطبيقات الصحيحة. إذا تم إيقاف العملية المنفذة التي تستضيف التجمع المطلوب لسبب ما (تعطل ، أو مهلة الخمول ، أو تغيير التكوين ، وما إلى ذلك) أو لا تزال قيد التشغيل ، فإن HTTP.sys يخزن الطلبات الواردة في قائمة انتظار مخصصة خصيصًا لكل تجمع. وبالتالي ، لا تختفي طلبات المستخدم في أي مكان ، ولا يلاحظون أي انقطاع في تشغيل المواقع التي تشغل IIS على الإطلاق.

يمكن لـ HTTP.sys أيضًا تخزين الاستجابات مؤقتًا (بمزيد من التفاصيل - المثيلات التي لا يقوم فيها HTTP.sys بتخزين المحتوى مؤقتًا) ، لذلك تتم معالجة بعض الطلبات دون أن يتم تمريرها إلى طبقة التطبيق ، كما أنه يوزع عنوان URI للطلب ويتحقق من صحته وفقًا لـ RFC 2396 (بعض - ما يمكن استخلاصه من هنا - استخدام أحرف خاصة مثل "٪" '.' و ':' في عنوان URL لـ IIS) وتسجيل الطلب / الاستجابة.

تم نقل بعض إعدادات HTTP.sys إلى النظام سجل ويندوز(لمزيد من التفاصيل ، راجع إعدادات تسجيل Http.sys لنظام التشغيل Windows). بالمناسبة ، في نفس المكان - في السجل - يمكنك إلقاء نظرة سريعة على مكان الإقامة المعتاد لمواطننا:٪ SystemRoot٪ \ system32 \ drivers \ http.sys.

بصراحة ، أثناء كتابة هذا المقال ، اكتشفت بنفسي بعض التفاصيل. على سبيل المثال ، استجابة التخزين المؤقت على مستوى برنامج تشغيل HTTP.sys. ساعدني هذا في شرح حالة واحدة لظاهرة غريبة ، كما بدت لي حينها ، في سلوك IIS. نشر المسوقون بطاقة بريدية من swf على الموقع قبل العطلة التالية ، لكنهم لم يعجبهم شيئًا ما في اسم الملف وأعادوا تسميته. ومع ذلك ، استمر الموقع في إصدار بطاقة بريدية على عنوان URL القديم ، وحتى مسح ذاكرة التخزين المؤقت للمتصفح لم يساعد. لقد كنت متصلاً هنا بالفعل ، ولكن لا إعادة تشغيل موقع الويب وتجمع التطبيقات بالكامل ، ولا الوصول إلى الموقع عبر خادم وكيل الشركة لم يعط النتيجة المتوقعة. لكننا نعرف الآن من يقع اللوم.
2.2. خدمة نشر الويب العالمية (W3SVC)
تم تقديم هذه الخدمة (المُختصرة باسم خدمة WWW في المواصفات) في IIS 6 كمكون منفصل للعمل مع بروتوكولات HTTP / HTTPS وإدارة سير عمل التطبيق وأداء الوظائف التالية:
  • إدارة برنامج تشغيل HTTP.sys.
  • إدارة تتابع الأعمال.
  • مراقبة مقاييس أداء الموقع.
تعمل هذه الخدمة في Windows Server 2003 في سياق عملية Svchost.exe (يمكن العثور على الإعدادات في التسجيل HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ W3Svc) بخلاف كافة خدمات IIS الأخرى التي يتم تشغيلها في سياق عملية Inetinfo.exe ويتم تنفيذها في Iisw3adm.dll.

في IIS 7.x ، تم نقل وظيفة إدارة العملية إلى خدمة منفصلة - WAS (انظر القسم 2.3) من أجل تعميم البنية. الآن أصبحت خدمة WWW في جوهرها أحد المحولات المتخصصة في بروتوكولات HTTP / HTTPS - تعمل فوق برنامج تشغيل HTTP.sys. ومع ذلك ، تظل خدمة WWW حجر الزاوية في IIS ، لذلك يختلف تكوينها عن تكوين المحولات إلى البروتوكولات الأخرى (أكثر تشابهًا قليلاً هنا) ؛ يعمل في نفس سير العمل مثل WAS ويتم تنفيذه في نفس المكتبة (الشكل 2).


الصورة 2.سير العمل مع خدمات W3SVC و WAS.

نظرًا لأننا نتحدث عن محولات محول مستمع البروتوكول ، فلنتوقف قليلاً ونرى ما هي. من حيث المبدأ ، يمكن تكوين IIS 7.x للتعامل مع الطلبات عبر أي بروتوكول بخلاف HTTP و FTP النموذجيين ، مثل POP3 و SMTP و Gopher. يمكنك أيضًا ابتكار بروتوكول خاص بك لخدمة الويب أو WCF وتنفيذ جميع المكونات الضرورية له ، إذا كنت لا تشعر بالأسف على وقتك. على الأرجح ، المحولات والمستمعات للبروتوكولات الأكثر شيوعًا متاحة للتنزيل المجاني والتجاري - لم أختبر ذلك. لكن أولاً وقبل كل شيء ، يجب الانتباه إلى الخدمات القياسية (الشكل 3) المتوفرة. الإطار الصافيومتكاملة مع IIS:

  • NetTcpActivator لبروتوكول TCP ؛
  • NetPipeActivator للأنابيب المسماة
  • NetMsmqActivator لخدمة "وضع الرسائل في قائمة انتظار" (المعروف أيضًا باسم MSMQ).


أرز. 3.قائمة المحولات القياسية غير HTTP في الأداة الإضافية Windows Services.

ولكن لا يزال ، أهم محول بالنسبة لنا هو خدمة WWW ، بما في ذلك. دعنا نتحدث أكثر قليلاً عن الوظيفتين المتبقيتين من وظائف IIS 6.

إدارة وتكوين HTTP (S).عند تحديث تكوين موقع الويب ، تمرر خدمة WAS هذه المعلومات إلى خدمة WWW ، والتي بدورها تقوم بتكوين HTTP.sys للاستماع إلى منافذ معينة ، وتحليل عنوان IP ورأس الموقع المطلوب ، وربما معلمات أخرى لبرنامج التشغيل. في الجانب المعاكسيستدعي W3SVC WAS عندما يصطف طلب جديد في قائمة انتظار HTTP.sys للحصول على عملية عاملة لمعالجة هذا الطلب.

تتبع مقاييس الأداء.تحافظ خدمة WWW على عدادات الأداء باستخدام برنامج تشغيل HTTP.sys وتوفرها لمواقع الويب وذاكرة التخزين المؤقت لـ IIS. لم أتمكن من العثور على مزيد من المعلومات التفصيلية حول هذه المسألة.

2.3 خدمة تنشيط العمليات في Windows (WAS)
لذلك ، تستمر خدمة WWW في IIS 7.x ، تمامًا كما هو الحال في IIS 6 ، في أداء مهام إدارة HTTP.sys وإدارة مقاييس أداء موقع الويب. ولكن تم نقل مهمة إدارة سير العمل إلى خدمة منفصلة - WAS. يتم تشغيله بواسطة النظام في مثيل واحد ، يقرأ التكوين من الملف ٪ SystemRoot٪ \ System32 \ inetsrv \ Config \ ApplicationHost.configوتكوين مستمعي البروتوكول من خلال المحولات المناسبة وفقًا للمعلومات المحددة فيها. تذكر أنه بالنسبة لبروتوكولات HTTP / HTTPS ، يكون المحول هو خدمة W3SVC ، والمستمع هو برنامج تشغيل HTTP.sys. عندما يعترض مستمع الطلب ، فإنه يستدعي WAS من خلال المحول الخاص به للحصول على عملية عامل التطبيق التي سيتم تمرير الطلب إليها للمعالجة والاستجابة للعميل.

عند تنشيط التطبيق المطلوب لمعالجة طلب المستخدم ، يتم تضمين المكونات التالية:

  • محولات المستمع - خاصة خدمات الويندوزالتي تعمل مع بروتوكول معين وتتفاعل مع WAS لتوجيه الطلبات إلى عملية العامل الصحيحة.
  • في الواقع كان. إنها مسؤولة عن إنشاء عمليات العمال وإدارة حياتهم.
  • الملف القابل للتنفيذ w3wp.exe هو قالب سير عمل.
  • يدير مدير التطبيقات إنشاء مجالات التطبيق والتخلص منها ، والتي تتم استضافتها ضمن العملية العاملة.
  • معالجات البروتوكول هي مكونات خاصة بالبروتوكول داخل سير عمل تكون مسؤولة عن الاتصال بين محول معين وسير عمل. هناك نوعان من معالجات البروتوكول: معالج بروتوكول العملية (PPH) ومجال التطبيق (معالجات بروتوكول AppDomain - ADPH).
يوضح الشكل أدناه مثالاً على رسم تخطيطي للمكونات داخل مثيل سير عمل التطبيق. عندما يبدأ WAS عملية عاملة ، فإنه يقوم بتحميل معالجات بروتوكول العملية المطلوبة (PPHs) وفقًا لتكوين التطبيق ويستخدم مدير التطبيق لإنشاء مجال تطبيق ضمن العملية العاملة التي سيتم فيها استضافة التطبيق. يقوم مدير التطبيق بتحميل رمز التطبيق في مجال التطبيق ومعالجات بروتوكول طبقة التطبيق (ADPH) المطلوبة للتعامل مع الرسائل عبر بروتوكولات الشبكة المناسبة.


أرز. 4.مكونات w3wp.exe للتفاعل مع المكونات الخارجية.

كما هو مذكور أعلاه ، يوفر .NET Framework تطبيقات لبروتوكولات HTTP / HTTPS (ASP.NET المفضلة لدينا) و net.tcp و net.pipe و MSMQ. لا تزال مكدسات بروتوكولات HTTP / HTTPS و FTP مدمجة بشكل أكثر إحكامًا في IIS ونظام التشغيل ، لذلك يتم عرض إعداد البروتوكول الجديد بشكل أفضل باستخدام بروتوكولات Dotnet الأقل شيوعًا كمثال. لذلك ، بعد تثبيت إطار العمل ، يظهر الإدخال التالي في ملف تكوين IIS ApplicationHost.config:

ويتم تكوين مكونات PPH و ADPH المقابلة في آلة dotnet.config:

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

يرجى ملاحظة أنه في الوضع القياسي لتشغيل IIS ، يتم تشغيل خدمة WAS وخدمة المهايئ لكل مستمع بروتوكول (بما في ذلك W3SVC) وبرامج التشغيل / المستمعين لكل من البروتوكولات نفسها (بما في ذلك HTTP.sys) في نظام التشغيل في مثيل واحد. ولكن يمكن إرسال الطلبات الفردية إلى تطبيقات مختلفة في مهام سير عمل مختلفة. من ناحية أخرى ، يمكن إرسال الطلبات إلى تطبيق واحد باستخدام بروتوكولات مختلفة من خلال المحولات المناسبة. على ما يبدو ، من أجل التنفيذ الصحيح لهذا السلوك ، تم اختراع برنامج تشغيل بروتوكول الحزمة المعمارية - محول برنامج تشغيل البروتوكول - خدمة التنشيط (نوع من وحدة التحكم في حركة المرور ، وبصورة أدق ، جهاز توجيه) - تم اختراع عملية العامل.

2.4 تجمع التطبيقات
عند تكوين تطبيق ويب ، بالإضافة إلى الربط (الربط) بمعلمات الاستعلام والإعدادات الأخرى ، تتم الإشارة إلى العضوية في تجمع التطبيقات. كان تجمع التطبيقات جديدًا في IIS 6 وقد تم تصميمه لعزل تطبيقات الويب عن بعضها البعض وبالتالي تحسين استقرار خادم الويب ككل. خلاصة القول هي أن كود التطبيق يتم تنفيذه داخل عملية Windows خاصة - w3wp.exe. لذلك ، فإن الاستثناء داخل تطبيق الويب سيؤدي فقط إلى تعطيل هذه العملية ولن يؤثر على توفر تطبيقات الويب في التجمعات الأخرى وتشغيل IIS بأي شكل من الأشكال. علاوة على ذلك ، ستحاول خدمة WAS إعادة تشغيل الموقع المعطل ، وقد لا يلاحظ العملاء الخارجيون حتى مشاكل مع الخادم.

يستخدم IIS تجمع تطبيقات لإدارة بعض الإعدادات لعملية عامل w3wp.exe واحد. الأكثر استخدامًا هو الحساب الذي سيتم تشغيل العملية بموجبه ، والقيود المفروضة على قائمة انتظار الطلبات ، وأجهزة ضبط الوقت والعدادات المختلفة لإعادة تشغيل العملية تلقائيًا ، وهندسة x86 / x64 (في IIS 7.x) وبعضها الآخر (الشكل 5) ) ، والتي يمكن للقارئ الفضولي قراءتها بسهولة في MSDN ومحرك البحث المفضل لديهم. الذي - التي. يمكننا القول (مع بعض الحجوزات ، راجع أيضًا الفقرة الأخيرة في 2.5) حول هوية عملية w3wp.exe وتجمع التطبيقات.


أرز. 5إعدادات تجمع التطبيقات الإضافية

كان الابتكار الرئيسي في مفهوم تجمعات التطبيقات في IIS 7.x معلمة جديدة - نموذج إدارة الحاوية ، والذي يمكن أن يأخذ قيمتين: كلاسيكي (الوضع الكلاسيكي) ونموذج مضمن (الوضع المتكامل).
لشرح الفرق بين أوضاع التشغيل هذه ، ستحتاج إلى أن تكون على دراية بمفهوم "الوحدة النمطية" (الوحدة النمطية) في IIS 6 / 7.x ونموذج معالجة الطلب المستند إلى الحدث في حزمة IIS + ASP.NET. هذا الموضوع يستحق مقالة منفصلة ، ولكن ، للأسف ، ليس لدي ما يكفي منه ، على ما يبدو. هنا سوف أعرض عليكم النقاط العامة فقط.

لذلك ، عند معالجة طلب ما ، يقوم IIS بتمريره داخل سير العمل من خلال سلسلة من المكونات الخاصة - الوحدات النمطية. على سبيل المثال ، التصفية ، إعادة التوجيه ، التخزين المؤقت ، المصادقة ، الإذن. ترتبط كل وحدة من هذه الوحدات بحدث معين ، ويشكل تسلسلها نموذج معالجة الطلب المستند إلى الحدث. تنقسم الوحدات إلى أصلية (أصلية) ومدارة (مُدارة). تأتي الوحدات النمطية الأصلية مع IIS ، بينما تأتي الوحدات المدارة مع .NET Framework (ASP.NET). بشكل عام ، يمكنك التحكم فيها إلى حد ما على مستوى تكوين تطبيق الويب ، ولكن يمكنك فقط التفاعل مع الوحدات النمطية المدارة من كود موقع ASP.NET الخاص بك.


أرز. 6.إيديولوجية الوحدات في IIS.

النموذج الكلاسيكيتوفر إدارة الحاوية توافقًا عكسيًا مع وضع عزل العملية العاملة في IIS 6 - يتم تمرير الطلبات إلى موقع ASP.NET أولاً من خلال الوحدات النمطية الأصلية ثم يتم تمريرها إلى Aspnet_isapi.dll للمعالجة بواسطة الوحدات النمطية في بيئة مُدارة. ينتج عن هذا الفصل بين IIS و ASP.NET تكرار بعض الميزات ، مثل المصادقة والترخيص. وليس لديك القدرة على التحكم برمجيًا في سلوك الوحدات الأصلية (مثال ، على الرغم من أنه ليس الأكثر احتراقًا ، ولكن لا يزال - القسم "إزالة رأس الخادم" في هذه المقالة).

نموذج مضمنيقترح تفاعلًا أوثق بين IIS و ASP.NET. يتم تمرير الطلب في بنية المعالجة هذه من خلال سلسلة محددة من الأحداث ، يتم في كل منها تمرير الطلب عبر الوحدات النمطية الأصلية والمُدارة. في هذا الوضع ، يتم دمج نماذج معالجة الطلبات الخاصة بـ IIS و ASP.NET في نموذج واحد ، مما يسمح لك بتجنب تكرار الوظائف والحصول على مزيد من التحكم في معالجة الطلب.

من الناحية العملية ، فإن أهم شيء يجب مراعاته عند تطوير تطبيقات الويب ونشرها هو عدم التوافق الجزئي لهذين الوضعين. أولئك. عند نقل موقع (بتعبير أدق ، تجمع التطبيقات الذي يعمل فيه الموقع) من النموذج الكلاسيكي إلى النموذج المضمن ، ستكون تعديلات التعليمات البرمجية مطلوبة دائمًا تقريبًا (على الرغم من أنها قد لا تكون مهمة) ، بالإضافة إلى اختبار شامل.

2.5 مجال التطبيق ، التطبيق
الحاويات المباشرة لتطبيق الويب هي التطبيق ومجال التطبيق (مجال التطبيق ، AppDomain). غالبًا ما يتم تحديد هذين المفهومين ، لكنهما لا يزالان مختلفين قليلاً. التطبيق هو مفهوم IIS ومجال التطبيق من ASP.NET. علاوة على ذلك ، في الحالة العامة ، يمكن أن يحتوي التطبيق على عدة مجالات. يمكنك إدارة التطبيق من وحدة تحكم IIS ، ولكن مجال التطبيق في الغالب برمجي. لذلك ، على سبيل المثال ، يتم إعادة تشغيل التطبيق من وحدة التحكم. وعندما نقوم بإعادة حفظ web.config ، يتم إعادة تحميل مجال التطبيق دون لمس تطبيق IIS.

والأهم من ذلك ، من وجهة نظر عملية ، أن مجال التطبيق / التطبيق هو وضع الحماية لرمز موقع ASP.NET الخاص بك (ليس معزولًا جيدًا مثل التجميع ، ولكن لا يزال). إليك أحد أسئلتي المفضلة التي طرحتها على المتقدمين في المقابلات. يجب أن يكون هناك موقع ويب 1 وموقع ويب 2 ، بالإضافة إلى بعض المكتبات MyLib.dll ، والتي تحدد الفئة MyClass1 مع الحقل الثابت Field1. لذلك يقوم كلا الموقعين بتشغيل نفس تجمع التطبيقات واستخدام نفس مكتبة MyLib.dll. Website-1 يكتب إلى MyClass1.Field1 = 16 (الشكل 7). س: هل سيرى موقع الويب -2 التغييرات التي تم إجراؤها؟ الجواب "لا". لكن لماذا؟ لأنه ، بالنسبة لتطبيقات IIS ، يتم تخصيص مساحات عناوين غير متداخلة ، حتى لو كانت تعمل داخل عملية عاملة واحدة ، لذلك ، يتم تحميل نسخ التجميعات الخاصة بهم في ذاكرة تطبيقات الويب (يرجى عدم العثور على خطأ في عدم الدقة المحتملة من حيث العمل مع الذاكرة في .NET Framework).

أرز. 7.رسم المشكلة.

هناك نقطة مهمة أخرى أود أن أشير إليها هنا. بشكل افتراضي ، يمكن لكل عملية عاملة فردية استخدام جميع المعالجات / المراكز المتوفرة على الخادم ، ويعمل تجمع التطبيقات على عملية عاملة واحدة ، وبالتالي يعمل تطبيق الويب داخل تطبيق IIS واحد. ومع ذلك ، يمكنك تخصيص حديقة الويب عن طريق زيادة عدد العمليات العاملة لكل مجموعة وبالتالي عدد تطبيقات IIS لكل تطبيق ويب. يمكنك بسهولة العثور على معلومات حول حديقة الويب على الإنترنت ، لذلك أغفلت التفاصيل هنا. الشيء الوحيد الذي أود تحذيره هو أن هذه الأداة ليست أداة لزيادة الإنتاجية ، لأن. بشكل افتراضي ، يتم بالفعل استخدام كل قوة الحوسبة للخادم. على العكس من ذلك ، تم إنفاق وقت "إضافي" لوحدة المعالجة المركزية على مزامنة عمل أكثر من 2 من عمليات العاملين. يتم ذلك بشكل أساسي لزيادة توفر تطبيق الويب. من المستحيل أيضًا عدم ذكر مزرعة الويب (مزرعة الويب) هنا ، باعتبارها أبسط وسيلة لموازنة الحمل في IIS - هناك أيضًا مقالات كافية على الويب حول هذا الموضوع. هذا مثال آخر على تطبيق الويب الموزع. ومع ذلك ، مع نفس nginx ، لا يمكن لموازنة التحميل المضمنة في IIS أن تتنافس ، وفي الأنظمة ذات التحميل العالي ، سيتعين عليك إعادة اختراع العجلة الخاصة بك أو استخدام منتجات الجهات الخارجية.

3. ماذا بعد؟

بعد ذلك ، تحتاج إلى فهم تشغيل الوحدات (من حيث IIS) ونموذج الحدث ، الذي تتم فيه المعالجة الفعلية للطلب بالفعل ، كما هو مذكور في القسم 2.4. بشكل عام ، هذا الموضوع يستحق مقالًا منفصلاً ، أخشى أنه لن يكون لدي ما يكفي منه. ولكن بدون ذلك ، لا يمكن القول أننا نظرنا في خط أنابيب معالجة الطلب بالكامل. لذلك ، سنتناول هنا بإيجاز النقاط الرئيسية التي يمكن للقارئ الفضولي حلها بمفرده.

كما هو مذكور أعلاه في القسم 2.4 ، يتم تضمين وحدات IIS النمطية في عملية عامل. يتم تمرير طلب بالتسلسل من خلالهم (على عكس HttpHandlers). يتم تحديد مجموعتها وترتيبها من خلال تكوين الخادم و / أو تطبيق ويب معين. تم تصميم الوحدات النمطية لمهام منفصلة ومحددة التركيز ، مثل التفويض والتخزين المؤقت والتسجيل المخصص والضغط وإعادة المحتوى الثابت ، وبالطبع إنشاء صفحات HTML على عنوان URL محدد.

كما نعلم بالفعل ، هناك نوعان من الوحدات النمطية في IIS: أصلية ومدارة. يمكنك العثور على القائمة الدقيقة للوحدات النمطية في MSDN أو في مقالة Regan Templin. يمكنك دائمًا كتابة الوحدة الخاصة بك ، على سبيل المثال ، لعمليات إعادة التوجيه. في أغلب الأحيان ، بالطبع ، يصنعون وحدات مُدارة ، لأن. فهي الأسهل في التنفيذ. بالمناسبة ، تعمل ASP.NET WebForms و MVC مثل الوحدات النمطية المُدارة. بما في ذلك. أنا شخصيا لدي WebForms مقابل holivars. يسبب MVC ابتسامة ورغبة يصعب السيطرة عليها في التصيد. بمعرفة مبادئ IIS و ASP.NET ، يمكنك بنفسك تنفيذ أي نمط تريده.

في المستوى التالي من الاعتبار ، سنواجه مكونات ASP.NET ، مثل HttpHandlers وأحداث معالجة الصفحة. تم كتابة الكثير من المقالات حول هذا الموضوع ، بما في ذلك. لا أرى الهدف من الخوض في ذلك بعد الآن. الشيء الوحيد الذي يمكنني أن أنصح به أولئك الذين يذهبون إلى المقابلات هو البحث عن "دورة حياة صفحة ASP.NET" في محرك البحث قبل الاجتماع - وهذا ، في اعتقادي العميق ، هو بالتأكيد عار على المتخصصين الذين يعتبرون أنفسهم مطوري ASP.NET ليس للعلم.

مثال على الإعدادات الافتراضية للوحدات النمطية الأصلية في applicationHost.config



أخبر الأصدقاء