آموزش نصب وب سرور (IIS) در ویندوز سرور ۲۰۱۲

آموزش نصب وب سرور (IIS) در ویندوز سرور ۲۰۱۲

حدود ۱۱ دقیقه مطالعه

نصب وب سرور IIS روی ویندوز سرور ۲۰۱۲ در عمل یعنی افزودن نقش Web Server (IIS) از مسیر Server Manager یا اجرای یک دستور PowerShell؛ بلافاصله پس از نصب، سایت پیش‌فرض روی پورت ۸۰ بالا می‌آید و کار باقی‌مانده شما فعال‌کردن سرویس‌های نقش موردنیاز (مثل ASP.NET) و باز کردن پورت‌های ۸۰ و ۴۴۳ در فایروال است.

در ادامه همین مسیر را قدم‌به‌قدم مرور می‌کنیم: افزودن نقش از Server Manager، دستور معادل در PowerShell، انتخاب Role Serviceهای موردنیاز، بررسی نصب با سایت پیش‌فرض، حالت خاصی که IIS را نه برای سایت خودتان بلکه به‌عنوان پیش‌نیاز یک کنترل‌پنل هاستینگ (مثل وب‌سایت پنل) نصب می‌کنید، و نکاتی که معمولاً بعد از نصب دردسر می‌سازند.

ویدیوی آموزشی: نصب وب سرور IIS در ویندوز سرور

IIS دقیقاً چه کاری انجام می‌دهد؟

IIS مخفف Internet Information Services و وب سرور رسمی مایکروسافت است که به‌صورت یک نقش (Role) داخل خود ویندوز سرور قرار دارد و نیازی به دانلود جداگانه ندارد. وظیفه‌اش دریافت درخواست‌های HTTP و HTTPS، تحویل فایل‌های استاتیک، اجرای اپلیکیشن‌های ASP.NET از طریق Application Pool، مدیریت بایندینگ‌ها و گواهی‌های SSL و ثبت لاگ درخواست‌هاست. اگر با دنیای لینوکس آشنا هستید، IIS تقریباً همان جایگاهی را دارد که Apache یا Nginx دارند، با این تفاوت که مدیریتش هم از رابط گرافیکی inetmgr و هم از PowerShell انجام می‌شود.

پیش‌نیازها پیش از شروع

برای این کار به یک سرور ویندوزی با دسترسی Administrator نیاز دارید که معمولاً از طریق Remote Desktop به آن وصل می‌شوید. اگر هنوز سروری ندارید، در سرویس سرور مجازی دسترسی روت یا ادمین کامل دارید و سیستم‌عامل دلخواه (لینوکس یا ویندوز) را خودتان نصب می‌کنید؛ همین برای تمرین این آموزش کافی است. پیش از نصب، مطمئن شوید تاریخ و ساعت سرور درست است — برای همگام نگه داشتن خودکار آن سرویس NTP را راه‌اندازی کنید — و اگر قرار است سایت از بیرون در دسترس باشد، آی‌پی عمومی سرور را یادداشت کنید.

یک نکته که در نصب‌های تازه زیاد فراموش می‌شود: بلافاصله بعد از نصب سیستم‌عامل، کارت شبکه را روی آی‌پی ثابت (Static) تنظیم کنید و آن را روی DHCP نگذارید. اگر آدرس سرور بعداً عوض شود، بایندینگ‌های IIS، رکوردهای DNS دامنه و — در صورتی که کنترل‌پنل نصب کرده باشید — پیکربندی خود پنل با هم ناسازگار می‌شوند و عیب‌یابی‌اش وقت‌گیر است.

اگر برای تمرین به یک نسخه آزمایشی ویندوز سرور نیاز دارید، فایل ایزو را فقط از مرکز ارزیابی مایکروسافت یا از ارائه‌دهنده سرویس خودتان تهیه کنید؛ ایزوهای دست‌کاری‌شده‌ای که در سایت‌های دانلود فارسی پیدا می‌شوند ریسک امنیتی جدی دارند.

نصب نقش Web Server (IIS) با Server Manager

  • در Server Manager از منوی Manage گزینه Add Roles and Features را بزنید.
  • صفحه Before You Begin را با Next رد کنید.
  • در Installation Type گزینه Role-based or feature-based installation را انتخاب کنید.
  • در Server Selection همان سرور محلی را از Server Pool انتخاب کنید.
  • در Server Roles تیک Web Server (IIS) را بزنید. پنجره‌ای باز می‌شود که ابزارهای مدیریتی وابسته را پیشنهاد می‌دهد؛ روی Add Features کلیک کنید.
  • در صفحه Features اگر قصد اجرای اپلیکیشن ASP.NET دارید، زیرمجموعه .NET Framework 4.5 Features را باز کرده و ASP.NET 4.5 را تیک بزنید.
  • در Role Services موارد موردنیاز را انتخاب کنید (جدول بخش بعد).
  • در Confirmation روی Install بزنید و تا پایان کار صبر کنید. نصب IIS به ری‌استارت نیاز ندارد.

این مراحل روی هر ماشین ویندوزی یکسان است؛ فرقی نمی‌کند سرور شما یک ماشین مجازی باشد یا یک سرور اختصاصی که تمام منابع سخت‌افزاری آن بدون اشتراک با کاربر دیگری در اختیار شماست.

همین کار با یک دستور PowerShell

اگر ترجیح می‌دهید سریع‌تر پیش بروید یا می‌خواهید نصب را روی چند سرور تکرار کنید، PowerShell را با دسترسی Administrator باز کنید و بنویسید:

Install-WindowsFeature -Name Web-Server -IncludeManagementTools

و اگر ASP.NET و کنسول مدیریت را هم همزمان می‌خواهید:

Install-WindowsFeature -Name Web-Server,Web-Asp-Net45,Web-Mgmt-Console -IncludeManagementTools

سوییچ -IncludeManagementTools باعث نصب IIS Manager می‌شود و وابستگی‌های هر قابلیت به‌صورت خودکار اضافه می‌شوند. برای دیدن وضعیت نهایی از این دستور استفاده کنید:

Get-WindowsFeature -Name Web-*

یک نکته درباره نام دستور: در آموزش‌های قدیمی‌تر همین کار با Add-WindowsFeature نوشته می‌شد. از ویندوز سرور ۲۰۱۲ به بعد Add-WindowsFeature فقط یک نام مستعار (alias) برای Install-WindowsFeature است؛ هنوز اجرا می‌شود اما دستور رسمی و مستندشده Install-WindowsFeature است و در اسکریپت‌هایی که قرار است سال‌ها بمانند بهتر است همین را بنویسید.

اگر نصب با خطای نبود فایل‌های منبع متوقف شد، دیسک نصب ویندوز را مانت کنید و مسیر آن را با سوییچ -Source به دستور بدهید.

کدام Role Serviceها را فعال کنیم؟

Role Service نام در PowerShell کاربرد
Static Content Web-Static-Content تحویل فایل‌های ثابت مثل HTML، CSS و تصاویر
Default Document Web-Default-Doc باز شدن خودکار صفحه پیش‌فرض هر پوشه
ASP.NET 4.5 Web-Asp-Net45 اجرای اپلیکیشن‌های ASP.NET و MVC
HTTP Logging Web-Http-Logging ثبت لاگ درخواست‌ها برای عیب‌یابی
Request Filtering Web-Filtering فیلتر کردن درخواست‌های ناسالم
Static Compression Web-Stat-Compression فشرده‌سازی خروجی و کاهش حجم انتقال

یک نکته مهم: ماژول محبوب URL Rewrite جزو Role Serviceهای IIS نیست و در فهرست Add Roles and Features پیدا نمی‌شود. این ماژول را باید جداگانه از سایت رسمی IIS مایکروسافت دانلود و نصب کنید؛ بعد از نصب، آیکون آن داخل IIS Manager ظاهر می‌شود و برای آدرس‌های تمیز در MVC، ریدایرکت HTTP به HTTPS و تبدیل قواعد .htaccess کاربرد دارد. اگر فقط می‌خواهید یک سایت ASP.NET را بالا بیاورید و حوصله مدیریت سرور را ندارید، هاست ویندوز ایران که با پنل Plesk و روی Windows Server ارائه می‌شود و محیط سازگاری برای ASP.NET و پایگاه داده SQL Server دارد، گزینه ساده‌تری است. پیش از انتخاب نسخه فریم‌ورک هم بد نیست تفاوت NET Framework. و NET Core. را بخوانید، چون Application Pool برای هرکدام تنظیم متفاوتی می‌خواهد.

وقتی IIS را برای یک کنترل‌پنل نصب می‌کنید

تا اینجا فرض بر این بود که IIS را برای بالا آوردن سایت خودتان می‌خواهید. اما یک کاربرد رایج دیگر هم دارد: کنترل‌پنل‌های هاستینگ ویندوزی روی IIS سوار می‌شوند و پیش از نصبشان باید مجموعه نسبتاً بلندی از Role Serviceها و Featureها روی سرور فعال باشد. تیک‌زدن تک‌تک این گزینه‌ها در Server Manager هم خسته‌کننده است و هم جای اشتباه دارد؛ بهتر است همه را با یک خط PowerShell نصب کنید. نمونه‌ای که در ادامه می‌آید برای وب‌سایت پنل (WebsitePanel) است، ولی الگوی کار برای هر پنل دیگری هم همین است.

وب‌سایت پنل چیست و از چه اجزایی ساخته شده؟

وب‌سایت پنل یک پورتال مدیریت هاستینگ متن‌باز برای شرکت‌های پردازش ابری و ارائه‌دهندگان خدمات IT روی ویندوز سرور است. کاری که می‌کند این است که سرویس‌های پراکنده مایکروسافتی روی سرور — IIS، SQL Server، Exchange، SharePoint، OCS/Lync و Hyper-V — را زیر یک رابط واحد جمع می‌کند تا بتوانید برای هر مشتری پلن، حساب کاربری و سهمیه تعریف کنید.

معماری‌اش سه لایه دارد و هر سه لایه را می‌توان روی یک سرور نصب کرد یا بین چند ماشین پخش کرد:

  • WSP Portal — رابط کاربری وب که ادمین و مشتری با آن کار می‌کنند.
  • WSP Enterprise Server — هسته مرکزی که منطق کار، حساب‌ها و پایگاه داده در آن قرار دارد.
  • WSP Server — سرویسی که روی هر سرور تحت مدیریت نصب می‌شود، دستورها را از Enterprise Server می‌گیرد و روی آن ماشین اجرا می‌کند.
نمودار معماری سه‌لایه وب‌سایت پنل شامل WSP Portal و WSP Enterprise Server و WSP Server
ارتباط سه جزء وب‌سایت پنل با یکدیگر

وضعیت امروز این پروژه را حتماً در نظر بگیرید. آموزش‌های فارسی موجود حول نسخه WebsitePanel 2.1 نوشته شده‌اند و خود پروژه سال‌هاست توسعه فعالی ندارد. ادامه کار در قالب فورک‌های آن — SolidCP که متن‌باز است و MSPControl — دنبال می‌شود که با نسخه‌های جدیدتر ویندوز سرور و SQL Server سازگارترند. برای یک نصب تازه سراغ همین فورک‌ها بروید، نه بسته‌های بایگانی‌شده WebsitePanel، و بسته نصبی را فقط از سایت رسمی همان پروژه بگیرید نه از آینه‌های ناشناس. سرویس‌هایی هم که در فهرست بالا آمدند یکدست به‌روز نیستند: پشتیبانی Exchange Server 2010 در اکتبر ۲۰۲۰ به پایان رسیده و SharePoint 2010 و OCS/Lync هم از رده خارج شده‌اند؛ آن‌ها را فقط به‌عنوان توضیح دامنه کاری پنل بخوانید، نه فهرست خرید.

نصب یکجای پیش‌نیازها با PowerShell

PowerShell را با دسترسی Administrator باز کنید و این دستور را اجرا کنید. همه رول‌ها و فیچرهای لازم در یک مرحله نصب می‌شوند:

Install-WindowsFeature NET-Framework-Core, Web-Server, Web-Static-Content, Web-Default-Doc, Web-Http-Errors, Web-Http-Redirect, Web-Asp-Net, Web-Asp-Net45, Web-Net-Ext, Web-Net-Ext45, Web-ISAPI-Ext, Web-ISAPI-Filter, Web-Http-Logging, Web-Log-Libraries, Web-Http-Tracing, Web-Windows-Auth, Web-Client-Auth, Web-Filtering, Web-Stat-Compression, Web-Mgmt-Console, Web-Scripting-Tools -IncludeManagementTools

دو نکته درباره این فهرست:

  • NET-Framework-Core همان .NET Framework 3.5 است. فایل‌های این قابلیت از ویندوز سرور ۲۰۱۲ به بعد روی دیسک قرار ندارند و باید از رسانه نصب تأمین شوند؛ این دقیقاً همان جایی است که دستور با خطای نبود Source متوقف می‌شود. ایزوی ویندوز را مانت کنید و مسیر sourcessxs آن را بدهید (حرف درایو را با درایو خودتان عوض کنید).
  • Web-Asp-Net نسخه ASP.NET 3.5 است و به همان .NET 3.5 وابسته است. اگر اپلیکیشن قدیمی ندارید می‌توانید از فهرست حذفش کنید و فقط Web-Asp-Net45 را نگه دارید — هم نصب سریع‌تر می‌شود و هم سطح حمله سرور کوچک‌تر.

بنابراین اگر .NET 3.5 روی سرور فعال نیست، بهتر است پیش از اجرای دستور بلند بالا اول همین یک قابلیت را با مسیر منبع نصب کنید تا کار وسط راه متوقف نشود. به‌جای D: حرف درایوی را بگذارید که ایزوی ویندوز روی آن مانت شده است:

Install-WindowsFeature NET-Framework-Core -Source D:sourcessxs

برخلاف نصب ساده IIS، این فهرست بلند ممکن است در خروجی مقدار RestartNeeded را برابر Yes برگرداند (معمولاً به‌خاطر همان .NET Framework 3.5)؛ در این حالت پیش از نصب پنل یک بار سرور را ری‌استارت کنید.

پس از پایان نصب، صحت نصب رول‌ها و فیچرها را با این دستور بررسی کنید تا فهرست کامل موارد نصب‌شده را ببینید:

Get-WindowsFeature | Where-Object Installed

پایگاه داده: SQL Server Express

وب‌سایت پنل برای نگه‌داری اطلاعات حساب‌ها و پیکربندی به SQL Server نیاز دارد و آموزش‌های قدیمی SQL Server 2012 SP1 Express را پیشنهاد می‌کردند. پشتیبانی SQL Server 2012 در ژوئیه ۲۰۲۲ به پایان رسیده است؛ برای نصب تازه یکی از نسخه‌های پشتیبانی‌شده‌تر Express (مثلاً SQL Server 2019 Express یا SQL Server 2022 Express) را مستقیماً از مرکز دانلود مایکروسافت بگیرید. نسخه Express رایگان است اما محدودیت دارد — از جمله سقف ۱۰ گیگابایت برای هر پایگاه داده — و برای محیط عملیاتی پرترافیک باید سراغ نسخه کامل بروید. هنگام نصب، حالت احراز هویت را روی Mixed Mode بگذارید تا حساب SQL اختصاصی پنل بتواند متصل شود، و رمز حساب sa را قوی انتخاب کنید. دو نکته امنیتی را هم جدی بگیرید: برای خود پنل یک لاگین SQL جداگانه با دسترسی محدود به همان دیتابیس بسازید و از sa به‌عنوان حساب روزمره استفاده نکنید، و پورت SQL Server (پیش‌فرض ۱۴۳۳) را در فایروال به‌روی اینترنت باز نکنید — اگر پنل و دیتابیس روی یک ماشین هستند اصلاً نیازی به باز کردن این پورت نیست.

بررسی نصب با سایت پیش‌فرض

پس از نصب، IIS به‌صورت خودکار سایتی به نام Default Web Site روی پورت ۸۰ می‌سازد که ریشه آن مسیر C:inetpubwwwroot است. روی خود سرور مرورگر را باز کنید و به http://localhost بروید؛ دیدن صفحه خوش‌آمدگویی IIS یعنی نصب درست انجام شده است. سپس از یک دستگاه دیگر آدرس http://SERVER-IP را امتحان کنید تا دسترسی از بیرون هم تأیید شود. ساخت سایت‌های بعدی و اختصاص پوشه و بایندینگ به هرکدام در راه‌اندازی IIS و بالا آوردن یک وب‌سایت توضیح داده شده است.

اگر صفحه بالا نیامد، اول ببینید چه پروسه‌ای پورت ۸۰ را گرفته است:

netstat -ano | findstr ":80"

شماره PID خروجی را با این دستور به نام پروسه ترجمه کنید:

tasklist /FI "PID eq 1234"

برای اعمال تغییرات پیکربندی هم می‌توانید از iisreset استفاده کنید، اما توجه داشته باشید که این دستور تمام سایت‌های روی سرور را برای مدتی کوتاه از دسترس خارج می‌کند؛ روی سرور فعال آن را در ساعت کم‌ترافیک اجرا کنید.

باز کردن پورت ۸۰ و ۴۴۳ در فایروال

نصب IIS قوانین آماده‌ای با نام World Wide Web Services در Windows Firewall ایجاد می‌کند؛ قانون مربوط به HTTP معمولاً فعال است اما قانون HTTPS به‌طور پیش‌فرض غیرفعال می‌ماند. وضعیت هر دو را ببینید (نام قوانین روی نسخه انگلیسی ویندوز همین است؛ روی نسخه‌های زبان‌های دیگر ترجمه می‌شود):

Get-NetFirewallRule -DisplayName "World Wide Web Services*" | Select-Object DisplayName,Enabled

و برای فعال کردن ترافیک HTTPS:

Enable-NetFirewallRule -DisplayName "World Wide Web Services (HTTPS Traffic-In)"

اگر ترجیح می‌دهید قانون دلخواه خودتان را بسازید:

netsh advfirewall firewall add rule name="IIS-HTTPS" dir=in action=allow protocol=TCP localport=443

دقت کنید که فایروال ویندوز تنها لایه ممکن نیست؛ بسته به ارائه‌دهنده، ممکن است یک فایروال شبکه‌ای یا Security Group بیرونی هم وجود داشته باشد که باید جداگانه پورت را در آن باز کنید. برای اینکه پورت ۴۴۳ واقعاً پاسخ بدهد هم باید در IIS Manager به سایت خود بروید، از بخش Bindings یک بایندینگ از نوع https اضافه کنید و یک گواهی معتبر به آن اختصاص دهید؛ گواهی را می‌توانید از سرویس گواهینامه SSL تهیه کنید. اگر کنترل‌پنل نصب کرده‌اید، علاوه بر ۸۰ و ۴۴۳ باید پورتی را هم که پورتال پنل روی آن گوش می‌دهد در فایروال باز کنید؛ این پورت در مستندات همان پنل ذکر شده و بهتر است دسترسی به آن را فقط به آی‌پی‌های مدیریتی خودتان محدود کنید.

بعد از نصب: چند نکته که جلوی دردسر را می‌گیرد

مهم‌ترین نکته این است که پشتیبانی توسعه‌یافته ویندوز سرور ۲۰۱۲ و ۲۰۱۲ R2 در اکتبر ۲۰۲۳ به پایان رسیده و این نسخه‌ها دیگر به‌روزرسانی امنیتی عمومی دریافت نمی‌کنند؛ اگر سروری اینترنتی و در معرض دید عموم دارید، مهاجرت به نسخه جدیدتر ویندوز سرور را در برنامه بگذارید. خبر خوب اینکه مراحل بالا — چه نصب ساده IIS و چه نصب یکجای پیش‌نیازهای کنترل‌پنل — روی نسخه‌های جدیدتر ویندوز سرور هم تقریباً بدون تغییر برقرار است و همان دستورهای Install-WindowsFeature کار می‌کنند.

در کنار آن، هر سایت را در Application Pool مجزای خودش قرار دهید تا کرش یک اپلیکیشن بقیه را از کار نیندازد، دسترسی نوشتن روی C:inetpubwwwroot را فقط به پوشه‌هایی بدهید که واقعاً به آن نیاز دارند، و برای عیب‌یابی سراغ لاگ‌های C:inetpublogsLogFiles بروید. اگر هم تعداد سایت‌ها یا حجم ترافیک از توان ماشین فعلی فراتر رفت، انتقال به سرور اختصاصی گام منطقی بعدی است.

همه آموزش‌های ویدیویی آنلاین سرور — از ناحیه کاربری و سرور مجازی تا کنترل‌پنل، دامنه و ویندوز سرور — در صفحه ویدئو آموزشی کنار هم فهرست شده‌اند.

آموزش‌های مرتبط

ارسال نظر