ما هو IIS ومتى تستخدمه؟
يُعدّ Internet Information Services (IIS) خادمَ الويب الرسمي الذي طوّرته شركة مايكروسوفت وأدمجته في منظومة أنظمة تشغيل Windows. يوفر IIS بيئةً متكاملة ومرنة لاستضافة تطبيقات الويب والمواقع الإلكترونية وخدمات الـ API المبنية على تقنيات مثل ASP.NET وPHP وCGI. يتميز IIS بتكامله العميق مع بيئة Windows، مما يجعله الخيار الأمثل للمؤسسات التي تعتمد على بنية تحتية رقمية قائمة على منتجات مايكروسوفت.
شكل 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:
- افتح Server Manager من قائمة Start.
- اختر Add Roles and Features من القائمة الرئيسية.
- تابع المعالج حتى تصل إلى قسم Server Roles.
- ضع علامة على Web Server (IIS) واختر المكونات المطلوبة.
- انقر Install وانتظر اكتمال التثبيت.
أو يمكنك استخدام PowerShell بأمر واحد:
Install-WindowsFeature -Name Web-Server -IncludeManagementTools -IncludeAllSubFeature
التثبيت على Windows 10/11
- افتح لوحة التحكم (Control Panel) ← Programs ← Turn Windows features on or off.
- ابحث عن Internet Information Services وفعّله.
- توسّع القائمة الفرعية وفعّل الخدمات التي تحتاجها مثل CGI وISAPI Extensions وBasic Authentication.
- انقر OK وانتظر اكتمال العملية.
بعد التثبيت، افتح المتصفح وتوجّه إلى http://localhost. إذا ظهرت لك صفحة IIS الترحيبية الزرقاء، فهذا يعني نجاح التثبيت تماماً.
إنشاء موقع ويب جديد في IIS Manager
بعد تثبيت IIS، حان الوقت لإنشاء موقعك الأول. اتبع هذه الخطوات:
- افتح IIS Manager (ابحث عنه في قائمة Start أو عبر
inetmgrفي نافذة Run). - في الشجرة الجانبية اليسرى، انقر بزر الماوس الأيمن على Sites واختر Add Website.
- أدخل اسم الموقع في خانة Site name.
- حدد Physical path، وهو المجلد الذي يحتوي على ملفات الموقع (مثلاً
C:\inetpub\wwwroot\mysite). - اضبط الـ Binding: اختر HTTP من القائمة، أدخل رقم المنفذ (80 افتراضياً)، وأدخل اسم النطاق (Hostname) إن وجد.
- انقر OK.
بعد إنشاء الموقع، تأكد من أن مجلد الموقع يمتلك صلاحيات القراءة لمستخدم IIS_IUSRS أو مستخدم حساب Application Pool.
إعداد Application Pools وتحسينها
يُعتبر Application Pool العمود الفقري لعزل التطبيقات في IIS. يعمل كل Application Pool في عملية w3wp.exe مستقلة، مما يعني أن تعطّل تطبيق واحد لن يؤثر على التطبيقات الأخرى.
إعدادات Application Pool الأساسية
- .NET CLR Version: اختر الإصدار المناسب (.NET 4.0 للتطبيقات التقليدية، أو No Managed Code لتطبيقات .NET Core).
- Managed Pipeline Mode: Integrated للتطبيقات الحديثة، وClassic للتطبيقات القديمة.
- Identity: حدد الحساب الذي يشغّل العملية. يُنصح باستخدام ApplicationPoolIdentity للأمان.
تحسين الأداء لـ Application Pool
انقر بزر الماوس الأيمن على الـ Pool واختر Advanced Settings لضبط الإعدادات التالية:
- Idle Time-out: اضبطه على 0 للخوادم التي تحتاج إلى استجابة فورية دائمة.
- Regular Time Interval (Recycling): اضبط إعادة تدوير العملية يومياً في وقت محدد بعيد عن أوقات الذروة.
- Maximum Worker Processes: ارفع القيمة إلى 2 أو أكثر لتمكين Web Garden في الخوادم متعددة الأنوية.
- Queue Length: زد قيمة الطابور إلى 5000 أو أكثر للتطبيقات ذات الحركة العالية.
لكل موقع Application Pool خاص به يُنصح به للعزل الأمني. لا تُشغّل مواقع متعددة ذات أهمية مختلفة تحت نفس الـ Pool.
إدارة الـ Bindings والمنافذ (HTTP/HTTPS)
تُعرَّف الـ Bindings في IIS بأنها الوسيلة التي يستمع من خلالها الخادم لطلبات الويب. يمكن لموقع واحد أن يمتلك عدة Bindings للاستجابة على منافذ ونطاقات مختلفة.
إضافة أو تعديل Binding
- في IIS Manager، انقر على موقعك في قائمة Sites.
- من الجانب الأيمن، انقر على Bindings...
- انقر Add لإضافة Binding جديد.
- اختر النوع (http أو https)، وعنوان IP، ورقم المنفذ، واسم النطاق.
- انقر OK.
يمكن استخدام المنفذ 80 لـ HTTP والمنفذ 443 لـ HTTPS. إذا كنت تستضيف عدة مواقع على خادم واحد، استخدم Host Headers لتمييز المواقع بدلاً من استخدام منافذ مختلفة.
إضافة شهادات SSL على IIS
تأمين موقعك بشهادة SSL أصبح ضرورة وليس خياراً. في IIS، يمكن إضافة شهادة SSL بخطوات بسيطة:
استيراد شهادة SSL موجودة
- في IIS Manager، انقر على اسم الخادم (جذر الشجرة).
- افتح Server Certificates من لوحة المركز.
- من الجانب الأيمن، اختر Import... وحدد ملف الشهادة (.pfx) وأدخل كلمة المرور.
- بعد الاستيراد، عد إلى إعدادات Bindings لموقعك وأضف Binding من نوع HTTPS مع اختيار الشهادة الجديدة.
طلب شهادة SSL جديدة
- من Server Certificates، اختر Create Certificate Request...
- أدخل بيانات الشهادة (اسم النطاق، اسم المؤسسة، الدولة).
- أرسل الملف الناتج (.csr) إلى جهة إصدار الشهادات (CA).
- بعد الاستلام، استكمل الطلب باستخدام Complete Certificate Request...
لإعادة توجيه HTTP إلى HTTPS تلقائياً، ثبّت وحدة URL Rewrite وأضف قاعدة تحويل للطلبات القادمة على المنفذ 80 إلى https://.
إعداد URL Rewrite وتوجيه الطلبات
تُعدّ وحدة URL Rewrite من أقوى الإضافات في IIS، وتتيح لك إعادة توجيه وتحويل عناوين URL بمرونة كاملة. يمكن تحميلها من موقع مايكروسوفت مجاناً وتثبيتها كإضافة لـ IIS.
حالات الاستخدام الشائعة
- إعادة التوجيه من HTTP إلى HTTPS: لضمان اتصال آمن دائم.
- التوجيه من www إلى non-www (أو العكس): لتوحيد الروابط وتحسين SEO.
- إخفاء امتدادات الملفات: مثل تحويل
/about.aspxإلى/about. - Reverse Proxy: توجيه الطلبات إلى خوادم خلفية (Backend).
مثال: إعادة التوجيه من 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)
كل سطر في السجل يمثّل طلباً واحداً ويحتوي على الحقول التالية:
- date & time: تاريخ ووقت الطلب (بتوقيت UTC).
- c-ip: عنوان IP للعميل.
- cs-method: طريقة الطلب (GET, POST, PUT...).
- cs-uri-stem: المسار المطلوب.
- sc-status: كود الاستجابة (200, 404, 500...).
- time-taken: وقت المعالجة بالميلي ثانية.
تتراكم السجلات بسرعة وقد تستهلك مساحة قرص كبيرة. ضع جدولاً لأرشفة السجلات القديمة وحذفها بانتظام. يمكن استخدام 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 الخيار الكلاسيكي بمجتمع ضخم ودعم شامل لتقنيات متعددة. اختيارك يجب أن يعتمد على بيئة عملك ونوع التطبيق وخبرة فريقك التقني.