شرح تفصيلي لإعداد وإدارة خادم الويب IIS

ما هو IIS ومتى تستخدمه؟

يُعدّ Internet Information Services (IIS) خادمَ الويب الرسمي الذي طوّرته شركة مايكروسوفت وأدمجته في منظومة أنظمة تشغيل Windows. يوفر IIS بيئةً متكاملة ومرنة لاستضافة تطبيقات الويب والمواقع الإلكترونية وخدمات الـ API المبنية على تقنيات مثل ASP.NET وPHP وCGI. يتميز IIS بتكامله العميق مع بيئة Windows، مما يجعله الخيار الأمثل للمؤسسات التي تعتمد على بنية تحتية رقمية قائمة على منتجات مايكروسوفت.

شاشة توضح واجهة إدارة المواقع والتطبيقات بداخل خادم الويب IIS Manager
شاشة مراقبة السيرفر - CMD Terminal
root@taskvaults-server:~$ status_monitor --running
[INFO] Active connection secure tunnel... OK
[INFO] Service binding on port 8080... PASS
[WARN] Thread load pool optimized dynamic
[OK] Memory Page File allocated 16384 MB
[OK] Network Interfaces bandwidth 10 Gbps
[OK] SSL Certificates renewal schedule valid
[SYSTEM] Active monitoring dashboard initialized...

شكل 1: واجهة مدير خدمات معلومات الإنترنت IIS لإضافة موقع جديد

تلجأ المؤسسات والشركات إلى IIS في حالات عديدة، أبرزها: استضافة تطبيقات ASP.NET وASP.NET Core، إدارة بوابات الشركات الداخلية (Intranet)، تشغيل خدمات الـ REST API على بيئة Windows، نشر تطبيقات SharePoint وExchange Server، فضلاً عن استضافة مواقع تجارة إلكترونية تعتمد على .NET Framework.

💡 ملاحظة مهمة

يأتي IIS مثبَّتاً مسبقاً في إصدارات Windows Server، لكنه يحتاج إلى تفعيل يدوي. كما يمكن تثبيته على Windows 10/11 Pro وEnterprise لأغراض التطوير والاختبار المحلي.

تثبيت IIS على Windows Server وWindows 10/11

التثبيت على Windows Server

يُعدّ تثبيت IIS على Windows Server عمليةً بسيطة تتم عبر Server Manager أو PowerShell:

  1. افتح Server Manager من قائمة Start.
  2. اختر Add Roles and Features من القائمة الرئيسية.
  3. تابع المعالج حتى تصل إلى قسم Server Roles.
  4. ضع علامة على Web Server (IIS) واختر المكونات المطلوبة.
  5. انقر Install وانتظر اكتمال التثبيت.

أو يمكنك استخدام PowerShell بأمر واحد:

Install-WindowsFeature -Name Web-Server -IncludeManagementTools -IncludeAllSubFeature

التثبيت على Windows 10/11

  1. افتح لوحة التحكم (Control Panel)ProgramsTurn Windows features on or off.
  2. ابحث عن Internet Information Services وفعّله.
  3. توسّع القائمة الفرعية وفعّل الخدمات التي تحتاجها مثل CGI وISAPI Extensions وBasic Authentication.
  4. انقر OK وانتظر اكتمال العملية.
✅ نصيحة

بعد التثبيت، افتح المتصفح وتوجّه إلى http://localhost. إذا ظهرت لك صفحة IIS الترحيبية الزرقاء، فهذا يعني نجاح التثبيت تماماً.

إنشاء موقع ويب جديد في IIS Manager

بعد تثبيت IIS، حان الوقت لإنشاء موقعك الأول. اتبع هذه الخطوات:

  1. افتح IIS Manager (ابحث عنه في قائمة Start أو عبر inetmgr في نافذة Run).
  2. في الشجرة الجانبية اليسرى، انقر بزر الماوس الأيمن على Sites واختر Add Website.
  3. أدخل اسم الموقع في خانة Site name.
  4. حدد Physical path، وهو المجلد الذي يحتوي على ملفات الموقع (مثلاً C:\inetpub\wwwroot\mysite).
  5. اضبط الـ Binding: اختر HTTP من القائمة، أدخل رقم المنفذ (80 افتراضياً)، وأدخل اسم النطاق (Hostname) إن وجد.
  6. انقر OK.

بعد إنشاء الموقع، تأكد من أن مجلد الموقع يمتلك صلاحيات القراءة لمستخدم IIS_IUSRS أو مستخدم حساب Application Pool.

إعداد Application Pools وتحسينها

يُعتبر Application Pool العمود الفقري لعزل التطبيقات في IIS. يعمل كل Application Pool في عملية w3wp.exe مستقلة، مما يعني أن تعطّل تطبيق واحد لن يؤثر على التطبيقات الأخرى.

إعدادات Application Pool الأساسية

تحسين الأداء لـ Application Pool

انقر بزر الماوس الأيمن على الـ Pool واختر Advanced Settings لضبط الإعدادات التالية:

💡 ملاحظة مهمة

لكل موقع Application Pool خاص به يُنصح به للعزل الأمني. لا تُشغّل مواقع متعددة ذات أهمية مختلفة تحت نفس الـ Pool.

إدارة الـ Bindings والمنافذ (HTTP/HTTPS)

تُعرَّف الـ Bindings في IIS بأنها الوسيلة التي يستمع من خلالها الخادم لطلبات الويب. يمكن لموقع واحد أن يمتلك عدة Bindings للاستجابة على منافذ ونطاقات مختلفة.

إضافة أو تعديل Binding

  1. في IIS Manager، انقر على موقعك في قائمة Sites.
  2. من الجانب الأيمن، انقر على Bindings...
  3. انقر Add لإضافة Binding جديد.
  4. اختر النوع (http أو https)، وعنوان IP، ورقم المنفذ، واسم النطاق.
  5. انقر OK.

يمكن استخدام المنفذ 80 لـ HTTP والمنفذ 443 لـ HTTPS. إذا كنت تستضيف عدة مواقع على خادم واحد، استخدم Host Headers لتمييز المواقع بدلاً من استخدام منافذ مختلفة.

إضافة شهادات SSL على IIS

تأمين موقعك بشهادة SSL أصبح ضرورة وليس خياراً. في IIS، يمكن إضافة شهادة SSL بخطوات بسيطة:

استيراد شهادة SSL موجودة

  1. في IIS Manager، انقر على اسم الخادم (جذر الشجرة).
  2. افتح Server Certificates من لوحة المركز.
  3. من الجانب الأيمن، اختر Import... وحدد ملف الشهادة (.pfx) وأدخل كلمة المرور.
  4. بعد الاستيراد، عد إلى إعدادات Bindings لموقعك وأضف Binding من نوع HTTPS مع اختيار الشهادة الجديدة.

طلب شهادة SSL جديدة

  1. من Server Certificates، اختر Create Certificate Request...
  2. أدخل بيانات الشهادة (اسم النطاق، اسم المؤسسة، الدولة).
  3. أرسل الملف الناتج (.csr) إلى جهة إصدار الشهادات (CA).
  4. بعد الاستلام، استكمل الطلب باستخدام Complete Certificate Request...
✅ نصيحة

لإعادة توجيه HTTP إلى HTTPS تلقائياً، ثبّت وحدة URL Rewrite وأضف قاعدة تحويل للطلبات القادمة على المنفذ 80 إلى https://.

إعداد URL Rewrite وتوجيه الطلبات

تُعدّ وحدة URL Rewrite من أقوى الإضافات في IIS، وتتيح لك إعادة توجيه وتحويل عناوين URL بمرونة كاملة. يمكن تحميلها من موقع مايكروسوفت مجاناً وتثبيتها كإضافة لـ IIS.

حالات الاستخدام الشائعة

مثال: إعادة التوجيه من HTTP إلى HTTPS

أضف هذا الكود في ملف web.config الخاص بموقعك:

<system.webServer>
  <rewrite>
    <rules>
      <rule name="Redirect HTTP to HTTPS" stopProcessing="true">
        <match url="(.*)" />
        <conditions>
          <add input="{HTTPS}" pattern="^OFF$" />
        </conditions>
        <action type="Redirect" url="https://{HTTP_HOST}/{R:1}"
                redirectType="Permanent" />
      </rule>
    </rules>
  </rewrite>
</system.webServer>

السجلات (Logs) وكيفية قراءتها

تُخزَّن سجلات IIS افتراضياً في المسار C:\inetpub\logs\LogFiles\، وتحتوي على معلومات قيّمة عن كل طلب يصل إلى خادمك. يُنشئ IIS مجلداً منفصلاً لكل موقع ويب.

تنسيق سجل IIS (W3C Extended)

كل سطر في السجل يمثّل طلباً واحداً ويحتوي على الحقول التالية:

⚠️ تحذير

تتراكم السجلات بسرعة وقد تستهلك مساحة قرص كبيرة. ضع جدولاً لأرشفة السجلات القديمة وحذفها بانتظام. يمكن استخدام PowerShell لأتمتة هذه المهمة.

استكشاف الأخطاء الشائعة في IIS

تتكرر بعض الأخطاء في IIS بشكل متكرر، وإليك أشهرها مع طريقة حلها:

خطأ 403 Forbidden

يحدث عادةً بسبب مشكلة في صلاحيات المجلد. تأكد من أن مستخدم IIS_IUSRS أو IUSR لديه صلاحية القراءة على مجلد الموقع.

خطأ 500 Internal Server Error

يشير إلى خطأ في كود التطبيق. فعّل Detailed Error Messages من إعدادات Error Pages في IIS Manager لرؤية تفاصيل أكثر، أو راجع Event Viewer في Windows.

خطأ 503 Service Unavailable

يعني توقف الـ Application Pool. افتح IIS Manager وتحقق من حالة الـ Pool، وإذا كان متوقفاً أعد تشغيله. وراجع Event Viewer لمعرفة السبب.

الموقع لا يستجيب على المنفذ 80

تحقق من جدار الحماية (Windows Firewall) وتأكد من أن المنفذ 80 مسموح به. أيضاً تأكد من أن خدمة IIS تعمل عبر الأمر net start W3SVC.

الأوامر المفيدة في PowerShell لإدارة IIS

يوفر الـ WebAdministration module في PowerShell مجموعة غنية من الأوامر لإدارة IIS برمجياً، مما يُسهّل الأتمتة والنشر المستمر (CI/CD).

# تحميل وحدة إدارة IIS
Import-Module WebAdministration

# عرض جميع المواقع
Get-Website

# إيقاف موقع وتشغيله
Stop-Website -Name "MyWebsite"
Start-Website -Name "MyWebsite"

# عرض Application Pools
Get-WebConfiguration system.applicationHost/applicationPools/add

# إعادة تشغيل Application Pool
Restart-WebAppPool -Name "MyAppPool"

# إنشاء موقع جديد برمجياً
New-Website -Name "NewSite" -Port 8080 -PhysicalPath "C:\inetpub\newsite" -ApplicationPool "DefaultAppPool"

# تغيير مسار الموقع الفيزيائي
Set-ItemProperty "IIS:\Sites\MyWebsite" -Name physicalPath -Value "C:\inetpub\new_path"

# عرض الـ Bindings
Get-WebBinding -Name "MyWebsite"

# إضافة Binding جديد
New-WebBinding -Name "MyWebsite" -Protocol "https" -Port 443 -HostHeader "www.example.com"

# تفعيل Gzip Compression
Set-WebConfigurationProperty -Filter system.webServer/httpCompression -Name "doDynamicCompression" -Value "True"

مقارنة IIS مع Apache وNginx

عند اختيار خادم الويب المناسب لمشروعك، يجب أن تفهم الفروقات الجوهرية بين الخيارات المتاحة:

المعيار IIS Apache Nginx
نظام التشغيل Windows فقط متعدد المنصات متعدد المنصات
التراخيص مدمج مع Windows مفتوح المصدر مفتوح المصدر
أداء الطلبات المتزامنة جيد جداً جيد ممتاز
دعم ASP.NET ممتاز (أصلي) محدود محدود
واجهة المستخدم الرسومية قوية جداً (GUI) ملفات إعداد نصية ملفات إعداد نصية
استهلاك الذاكرة متوسط متوسط - مرتفع منخفض جداً
الأمان والتحديثات Windows Update مجتمع مفتوح مجتمع مفتوح
💡 الخلاصة

يتفوق IIS بوضوح في بيئات Windows ومع تطبيقات .NET، بينما يُعتبر Nginx الأفضل للأداء العالي في بيئات Linux مع الحمل الثقيل من الطلبات المتزامنة. يظل Apache الخيار الكلاسيكي بمجتمع ضخم ودعم شامل لتقنيات متعددة. اختيارك يجب أن يعتمد على بيئة عملك ونوع التطبيق وخبرة فريقك التقني.