IIS: موقع على Windows
كيفية تثبيت خادم الويب IIS على VPS، ونشر موقعك الأول على نطاقك الخاص، وإصدار شهادة، وتجنب الغرق في السجلات.
آخر تحديث 23 أغسطس 2026
IIS هو خادم الويب المدمج في Windows Server. يعمل جيدًا لتطبيقات ASP.NET، وللمحتوى الثابت، وكوكيل عكسي أمام خدمة تستمع على منفذ محلي.
التثبيت
Install-WindowsFeature -Name Web-Server -IncludeManagementTools
Install-WindowsFeature Web-Asp-Net48, Web-Http-Redirect, Web-Dyn-Compression
افتح المنافذ في الجدار الناري:
New-NetFirewallRule -DisplayName "HTTP" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow
New-NetFirewallRule -DisplayName "HTTPS" -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow
تحقق من أن صفحة البداية تُفتح على عنوان جهازك من «نظرة عامة» في لوحة التحكم /hosting/vds/m/<id>. إذا لم تُفتح، راجع جدار حماية Windows.
موقعك الأول
Import-Module WebAdministration
New-Item -ItemType Directory C:\sites\example
Set-Content C:\sites\example\index.html "<h1>It works</h1>"
New-WebAppPool -Name "example"
New-Website -Name "example" -Port 80 -HostHeader "example.ru" `
-PhysicalPath "C:\sites\example" -ApplicationPool "example"
يتيح لك ترويسة المضيف (-HostHeader) استضافة عدة مواقع على عنوان واحد: يميّز IIS بينها حسب النطاق. يجب أن يشير النطاق إلى عنوان جهازك عبر سجل A.
يحتاج الموقع إلى أذونات دنيا فقط على المجلد — القراءة:
icacls C:\sites\example /grant "IIS AppPool\example:(OI)(CI)R" /T
شهادة HTTPS
أسهل طريقة للحصول على شهادة مجانية هي عميل win-acme: نزّل wacs.exe، وشغّله كمسؤول، واختر موقعك من القائمة — سيصدر الشهادة ويربطها بالموقع وينشئ مهمة تجديد.
للتحقق من الارتباطات:
Get-WebBinding -Name "example"
New-WebBinding -Name "example" -Protocol https -Port 443 -HostHeader "example.ru" -SslFlags 1
لإصدار شهادة، يجب أن يكون المنفذ 80 مفتوحًا من الخارج — فالتحقق من النطاق يمر عبره.
تطبيق خلف IIS
إذا كانت خدمتك (Node، Python، .NET Kestrel) تستمع على 127.0.0.1:5000، فثبّت وحدتي URL Rewrite وApplication Request Routing، وفعّل التوكيل العكسي، وأضف ما يلي إلى ملف web.config الخاص بالموقع:
<rule name="proxy" stopProcessing="true">
<match url="(.*)" />
<action type="Rewrite" url="http://127.0.0.1:5000/{R:1}" />
</rule>
بهذه الطريقة لا يُكشف للخارج سوى IIS مع الشهادة، ويبقى التطبيق على localhost.
التشغيل
Get-Website | Select-Object Name, State, PhysicalPath
Restart-WebAppPool example
Get-WebAppPoolState
توجد السجلات في C:\inetpub\logs\LogFiles وتنمو بلا حدود — على قرص بسعة 40 GB يتراكم ذلك بسرعة. اضبط التدوير في IIS Manager (قسم «Logging»، ملفات يومية) واحذف السجلات القديمة عبر مهمة مجدولة:
Get-ChildItem C:\inetpub\logs\LogFiles -Recurse -File |
Where-Object LastWriteTime -lt (Get-Date).AddDays(-30) | Remove-Item -Force
الأخطاء الشائعة
- الخطأ 500.19 — ملف
web.configتالف أو وحدة مفقودة. يظهر السبب الدقيق في نص الخطأ إذا فعّلت الرسائل التفصيلية للطلبات المحلية. - توقف مجمع التطبيقات من تلقاء نفسه. فُعّلت حماية الفشل السريع: ينهار الموقع فيوقفه IIS. ابحث عن السبب في سجل التطبيقات (
Get-WinEvent -LogName Application -MaxEvents 30). - يفتح الموقع بالعنوان لا بالنطاق. ترويسة المضيف غير مطابقة، أو لم يُحدَّث DNS بعد.
- الخطأ 403 بعد النشر. لم تُمنح أذونات على المجلد لمجمع التطبيقات.
أبقِ مجلدات موقعك خارج
C:\inetpubوفي مجلد منفصل مثلC:\sites— فهذا يسهّل النسخ الاحتياطي ويتيح لك إعادة تثبيت النظام دون فقدان البيانات.