خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را


IIS چیست؟

IIS چیست؟
IIS یا Internet Information Services یک Core کامپوننت در ویندوز سرور است که موضوعی بسیار گسترده می باشد. Core کامپوننت بودن آن به این دلیل است که خدمات بسیاری را می تواند ارائه دهد. در این مطلب در حد توان به IIS می پردازیم و آن را بررسی می کنیم. اگر به تازگی کار با ویندوز سرور را آغاز کرده اید و با IIS آشنا شده اید، این مطلب می تواند برای شما مفید باشد.

نرم افزار سامانه مودیان راهکار



IIS چیست؟

برای درک نحوه صحبت کردن در مورد IIS، ابتدا باید اصول نحوه عملکرد آن را درک کنید. IIS با اصطلاحات دیگری مانند IIS server، IIS web server و online IIS server هم شناخته می شود و ممکن است در سرچ های خود با این اصطلاحات مواجه شوید.
IIS یک وب سرور مخصوص پلتفرم دات نت مایکروسافت است. به این ترتیب، از آن به عنوان Windows Web Server نیز یاد می شود. اگرچه می توان آن را روی لینوکس و سیستم عامل مک با یک ابزار به نام Mono اجرا کرد ولی توصیه به انجامش نمی شود زیرا پایداری ندارد و قابل اعتناد نیست. از آنجا که IIS برای مایکروسافت دات نت طراحی شده است، پیاده سازی IIS ویندوز تا حد زیادی قابل اعتمادتر است.
خب، حالا IIS چه کاری انجام می دهد؟ به عنوان یک وب سرور، IIS یک پردازش وب اپلیکیشن ها است. شما می توانید آن را یک واسطه بدانید که مسئول پردازش پیام های برنامه از پورت های TCP پیش فرض است. به عنوان مثال، 443 پورت پیشفرض برای ترافیک HTTPS است در حالی که 80 پورت پیشفرض برای ترافیک HTTP است. ترافیک ورودی به وب سرور IIS بعضا با نام درخواست وب یا web request هم شناخته می شود. طبق تنظیمات پیشفرض، همانطور که در بالا توضیح داده شد، ترافیک از طریق پورت های 443 و 80 وارد می شوند. این ترافیک ورودی یا درخواست وب را می توان توسط وب سرور IIS به چند روش پردازش کرد.

نحوه پردازش درخواست های IIS

یک وب سرور معمولی می تواند از دو مدل پردازش اصلی استفاده کند. در روش اول، می تواند درخواست ها را بر اساس مدل تک رشته ای یا single-thread پردازش کند و یا می تواند برای هر درخواست جداگانه یک رشته(thread) جدید ایجاد کند. سیستم thread-per-request مدلی است که IIS از آن استفاده می کند و در اصل به یک thread pool دسترسی دارد و برای هر درخواست یک thread جدید را می گیرد. درخواست ها معمولا بر اساس request-response یا درخواست و پاسخ پردازش می شوند. کلاینت یک درخواست ارسال می کند، و یک پاسخ ارسال می شود. به طور معمول، ارتباط اینترنتی بین سرویس گیرنده و وب سرور توسط پروتکل HTTP اجرا می شود.
IIS از موتور پردازش خود و معماری پردازش با دو لایه یا حالت، هسته(kernel mode) و حالت کاربر(user mode) استفاده می کند.

Kernel mode: هنگامی که از حالت کرنل استفاده می شود، کد می تواند هر Command ای را اجرا کند و به تجهیزات Connect دسترسی کامل داشته باشد. این حالت عمدتا زمانی مورد استفاده قرار می گیرد که به یک فرآیند اطمینان داشته باشد و عمدتا آسیب پذیر نباشد. هرگونه خرابی در حالت کرنل می تواند آسیب زیادی به خود سیستم وارد کند.

User mode: حالت کاربر محدودتر است. با استفاده از این حالت ، کد اجرا شده نمی تواند به سخت افزار دسترسی داشته باشد و محیط امن تری را برای کار در داخل به شما می دهد. اگر اشتباهی و اروری در این لایه رخ دهد، بعید است عواقب آن به اندازه ای که خطا در حالت کرنل رخ داده، مخرب باشد. کد اجرا شده در حالت کاربر به API ها دستور می دهد تا با تجهیزات و حافظه مرجع ارتباط برقرار کنند، که بسیار امن تر از حالت کرنل است. سرویس IIS، application pools ها و virtual directory ها را در حالت User یافت خواهید کرد.
هدف از حالت کرنل استفاده از HTTP.SYS برای پذیرش Request های ورودی کلاینت است، بنابراین می تواند آنها را به application pool ارسال کند. این فرآیند زمانی آغاز می شود که کلاینت یا کاربر نهایی آدرس وب سایت را وارد کند. اساسا کاربر است که درخواست بازدید از یک صفحه وب را دارد و درخواست را برای سرور ارسال می کند. HTTP.SYS این درخواست را دریافت می کند. هنگامی که application pool درخواست را از HTTP.SYS دریافت می کند، ISAPI filter توسط IIS worker process یا w3wp.exe لود می شود. اگر یک صفحه ASPX باشد، worker process، HttpRuntime.ProcessRequest و بعضا aspnet_isapi.dll را باز می کند. HttpRuntime مجموعه ای از اشیاء HttpApplication ایجاد می کند.

نسخه های IIS موجود

چندین نسخه از IIS موجود است، اما نسخه های قبلی IIS 6 برای استفاده تجاری مناسب نیستند و از این رو فقط در خصوص نسخه های بعد از آن صحبت خواهیم کرد.
صحبت را با IIS 6 در ویندوز سرور 2003 آغاز می کنیم. در این پست قدیمی ترین ورژنی که بدان اشاره می کنیم همین نسخه است. این نسخه پشتیبانی از IPv6 را اضافه کرد، اما هیچ آپدیت دیگری برای نسخه قبلی نداشت. حداقل نسخه ای که در یک محیط سازمانی و کرای می توانید بهره ببرید همین نسخه 6 است.
نسخه بعدی IIS نسخه 7 است که همراه با ویندوز ویستا ارائه شد. و اقدامات امنیتی و پشتیبانی از دات نت فریم ورک را افزایش داد.
IIS 7.5 در ویندوز 7 با پشتیبانی اضافی از TLS 1.1 و 1.2 در دسترس است.
IIS 8 در ویندوز سرور 2012 ارائه شد که شامل پشتیبانی از SNI می شود. همچنین دارای یک پشتیبانی عمومی است که تا سال 2023 در دسترس است.
IIS 8.5 برای ویندوز 8.1 در دسترس است و iis 10 شامل پشتیبانی از HTTP/2 و Windows PowerShell 5.0 است.

پیش از اینکه در IIS ریزتر شویم، اجازه دهید به تعریف وب سرور بپردازیم تا ادامه صحبت های ما معنای کامل تری بگیرد.

وب سرور چیست؟

اینترنت امروزه بخش جدایی ناپذیر از زندگی همه ما شده است و اینترنت بدون سرورهای وب نمی تواند وجود داشته باشد. اما خود وب سرور دقیقاً چیست؟ اجازه دهید که آن را به صورت انتزاعی تعریف کنیم تا بتوانیم زمینه ای را برای نحوه عملکرد IIS در این زمینه داشته باشیم.
وب سرور فرایندی برای میزبانی وب اپلیکیشن ها است. وب سرور به یک اپلیکیشن اجازه می دهد تا پیام هایی را که از طریق پورت های خاص TCP (به طور پیشفرض) می رسند پردازش کند. به عنوان مثال ، پورت پیشفرض برای ترافیک HTTP 80 و پورت HTTPS 443 است.
وقتی از یک وب سایت اینترنتی در مرورگرتان بازدید می کنید، معمولاً شماره پورت را مشخص نمی کنید(نیازی نیست دستی شماره پورت را تایپ کنید) مگر اینکه وب سرور طوری پیکربندی شده باشد که در پورت های دیگر به طور پیشفرض ترافیک دریافت کند. با مراجعه به http://khoshamoz.ir درخواست شما به طور ضمنی به پورت 80 ارسال می شود. ولی شما می توانید آدرس را به صورت http://khoshamoz.ir:80 هم قید کنید. از آنجایی که وب سرور روی روی پورت 80 که شماره پورت پیشفرض است، سرویس دهی می کند الزامی به وارد کردن شماره پورت ندارید.


با فرض اینکه پیکربندی پیش فرض و TLS برای برنامه وب شما پیکربندی شده است، وب سرور تمام ترافیک های ورودی به پورت های 80 و 443 را دریافت می کند. آنچه که وب سرور با ترافیک به دست رسیده انجام می دهد بستگی دارد. گزینه های بی شماری برای نحوه پردازش این درخواست ها توسط وب سرور وجود دارد.

ویژگی های وب سرور IIS

IIS سرور بسیار محبوب است. و استفاده از آن گسترده است. IIS مجموعه و طیف وسیعی از ویژگی های مفید را ارائه می دهد و یک ابزار موثر برای بسیاری از مدیران فناوری اطلاعات است. به طور معمول، IIS برای میزبانی وب سایتهای ASP.NET و وب اپلیکیشن ها مورد استفاده قرار می گیرد. در ادامه ویژگی های کلیدی IIS را مشاهده خواهید کرد:

Application pools: Application pools ها بخش مهمی از یک سیستم IIS سرور را تشکیل می دهند. یک application pool می تواند 0 یا تعداد زیادی IIS worker processes در حال اجرا باشد. این worker processes مسئول اجرای اپلیکیشن ها هستند. در IIS، برخی از application pool ها به طور پیش فرض ایجاد می شوند. عنوان مثال، v2.0 و v4.0 را در نظر بگیرید، که به احتمال زیاد در حالت classic یا integrated هستند. اگر pool ای integrated باشد، ASP.NET نیز بخشی از IIS request pipeline است. اگر classic باشد یک pipeline جدا برای ASP و pipeline جدای دیگری برای IIS وجود دارد. به طور کلی، حالت integrated امروزه بیشتر مورد استفاده قرار می گیرد(حداقل از زمان منتشر شدن IIS 8). ابدا توصیه به استفاده از حالت classic و یا v2.0 نمی شود مگر اینکه مجبور باشید و شرایط ایجاب کند.

Authentication: IIS سرور دارای گزینه هایی برای احراز هویت، از جمله Windows auth ، Basic و ASP.NET است. اگر از Windows Active Directory استفاده می کنید، Windows author بیشتر مناسب شما خواهد بود. زیرا به شما امکان می دهد از طریق حساب دامبن خود به طور خودکار وارد وب اپلیکیشن ها شوید.

Security: IIS دارای ویژگی های امنیتی است، مانند ابزارهای مدیریت TLS certificate ها و ملزم به استفاده از آن برای HTTPS و SFTP در سایت های شما، request filtering برای ایجاد لیست سفید یا سیاه، قوانین authorization یا مجوز ها، لاگ برداری و ثبت request ها و مجموعه ای غنی از گزینه های امنیتی مخصوص FTP است.

Remote management: ویژگی ارزشمند دیگر، remote management است. IIS را می توان از طریق CLI یا با استفاده از PowerShell مدیریت کرد. شما می توانید همه چیز را اسکریپت کنید و از کار با IIS لذت ببرید.

در حال حاضر، شما باید تصور خوبی در مورد قابلیت پیکربندی و تنوع IIS داشته باشید. همچنین باید توجه داشته باشید که می تواند علاوه بر میزبانی برنامه های ASP.NET، برای اهداف بسیاری نیز به کار برده شود. از طریق extension، IIS به یک وب سرور بسیار پایدار و متنوع برای پلتفرم ویندوز تبدیل می شود. اجازه دهید نگاهی به نحوه نصب IIS در ویندوز 10 بیندازیم (همین روند در مورد ویندوز 7 و 8 و حتی 11 نیز صدق می کند ولی روش IIS در ویندوز سرور متفاوت است).
برای شروع نصب، کافیست که Run را باز کرده و دستور optionalfeatures را در آن وارد و Enter کنید تا پنجره Windows Features باز شود.
سپس تیک گزینه Internet Information Services را فعال کرده و فرم را OK کنید. حالا لحظاتی منتظر بمانید تا نصب به اتمام برسد.
پس از اتمام نصب و فعال شدن IIS، کافیست که در Run دستور inetmgr را وارد و Enter کنید تا وارد کنسول مدیریتی IIS شوید.
قبل از اینکه به جزئیات بپردازیم، می خواهم یک معرفی سریع از IIS Manager به شما ارائه دهم. کنسول IIS دارای جزئیات بسیاری و از این رو بخش های مورد نظر، با کادر زرد نشان داده شده اند.

IIS چیست؟
همانطور که مشاهده می کنید، کنسول فوق دارای سه بخش است. در سمت چپ سروری که IIS روی آن نصب شده و یا بدان متصل شده اید را نمایش می دهد(بصورت ریموت هم می توانید به یک IIS Server هم متصل شوید و آن را مدیریت کنید). پنل وسط جاییست که همه ویژگی ها مانند application security، logging، filtering، redirecting را مشاهده می کنید. در سمت راست پنجره actions را دارید.
اگر پنل سمت چپ(connection) را باز کنید، اولین چیزی که باید ببینید Application Pools و پس از آن Sites است. در ادامه به توصیف این بخش می پردازیم.

درک Port ها

اکثر سرورها از پورت 80 برای مدیریت ترافیک HTTP استفاده می کنند(بالاتر هم بدان اشاره کردیم). اما اگر فکر می کنید که پورت دیگری برای نیازهای شما مناسب تر است، می توانید آن را تغییر دهید. تغییر پورتی که ترافیک HTTP شما از آن عبور می کند آسان است. در Run دستور inetmgr را وارد و Enter کنید تا پنجره IIS Manager باز شود.
مانند تصویر زیر روی وب سایت مورد نظرتان در این کنسول کلیک راست کرده و گزینه Edit Binding را کلیک کنید.

IIS چیست؟
همانطور که مشاهده می کنید شماره پورت پیشفرض http عدد 80 است که در صورت نیاز می توانید این شماره پورت را تغییر دهید.

IIS چیست؟
همانطور که بالاتر بدان اشاره کردیم، وقتی شماره پورت تغییر کند، باید هنگام دسترسی بدان وب سایت، شماره پورت هم در انتهای نام وب سایت قید شود.

دسترسی به Log Files ها:

درک نحوه دسترسی و استفاده از فایل های log بخش مهمی از نگهداری IIS سرور است. Log file ها بسیار مهم و مفید هستند چرا که تمامی فعالیت های سرور را دنبال و ثبت می کنند. با Load کردن log file ها برای هر Action ای که تعیین می کنید لاگ های آن قابل مشاهده می شود.
برای مشاهده لاگ ها، به کنسول IIS Manager بروید. سپس از پنل سمت چپ وب سایت مورد نظرتان را انتخاب کرده و در پنل مقابل آیکون logging را باز کنید.

IIS چیست؟
پس از باز شدن پنجره، از پنل سمت راست لینک View Log را کلیک کنید تا لاگ باز شده و نمایش داده شود.

ایجاد Virtual Directory

IIS بیشتر برای ایجاد وب سایت ها و برنامه ها استفاده می شود اما می توانید از آن برای ایجاد Virtual Directory ها هم استفاده کنید. لطفا به تصویر زیر دقت کنید. khoshamoz.ir، نام اصلی وب سایت است و هر آنچه بعد از / وجود دارد، در Virtual Directory است که می توانید Virtual Directory های تو در تو ایجاد کنید. از IIS 7 به بعد، اپلیکیشن ها و Virtual Directory ها در یک سلسله مراتب وجود دارد، به این معنی که یک سایت واحد می تواند شامل اپلیکیشن های متعدد و چندین Virtual Directory باشد.

IIS چیست؟

بکارگیری SSL

هر کسب و کاری که امیدوار به بقا است همیشه باید در نظر داشته باشد که اقدامات امنیتی آن در برابر تهدیدهای بی شمار موجود چگونه است. یکی از این تهدیدها دسترسی غیر مجاز است. برای مقابله با آن می توانید از Secure Sockets Layer یا SSL استفاده کنید. ضمن اینکه SSL رمزگذاری داده ها را انجام می دهد.

Application Pools چیست؟

از پنل Actions در سمت راست لینک Add Application Pool را کلیک کنید تا پنجره زیر ظاهر شود. کار با آن بسیار ساده است. فقط کافیست که یک نام به App Pool خود داده و سپس OK کنید.

IIS چیست؟
در اینجا نگاهی به Application pools که به طور پیش فرض در IIS تنظیم شده اند می اندازیم. همانطور که می بینید، ترکیب v2.0 و v4.0 ، و classic و integrated وجود دارد.
با classic pipeline تفاوت دارد زیرا ASP.NET در pipeline درخواست IIS در واقع integrated شده است. در حالت classic درخواست ها باید از یک pipeline برای IIS و دیگری برای ASP.NET عبور کنند. از زمان انتشار IIS 7 با ویندوز سرور 2008 و ویستا، حالت integrated ارائه شده است. حالت classic هم برای زمانیست که مجبور باشید از آن استفاده کنید و در مورد v2.0 هم قضیه همینطور است. آنها فقط برای پشتیبانی و سازگاری با گذشته هستند.

Virtual Users یا کاربران مجازی
درک Virtual Users هم بسیار مهم است. IIS یک کاربر مجازی برای هر application pool ایجاد می کند. به طور پیش فرض worker process ها به عنوان کاربر مجازی application pool ها اجرا می شوند. اگرچه در صورت لزوم می توانند به عنوان یک کاربر خاص دیگر- به عنوان مثال، یک حساب دامین نیز اجرا شوند. کاربران مجازی دارای فولدر های مرتبط با آنها هستند. اینها معمولاً فولدرهای استاندارد مانند Pictures، Music، Desktop هستند و به یاد داشته باشید ک هاگر یک application pool را حذف کنید فولدرهای user همچنان وجود خواهند داشت. برای صرفه جویی لو خیلی کم در فضا، می توانید این فولدرها را حذف کنید.

Application Pool Recycling
هر 29 ساعت همه Application Pool ها Recycle می شوند. Application Pool ها همچنین هر زمان که فایل پیکربندی تغییر کرد، recycle می کنند. ولی می توانید recycle را مطابق با ترجیحات خود تنظیم کنید. فرآیند recycle حافظه مصرف شده توسط app هایی که در Pool اجرا می شوند را آزاد می کند و راهی عالی برای جلوگیری از خوردن حافظه سرور توسط فرایندهای فرار است.
اما چه چیزی حافظه را مصرف می کند؟ اساسا متغیرهای ثابت، ویژگی های استاتیک و ثابت، آیتم های موجود در cache، ارجاعات object-to-object و ... حافظه را اشغال می کنند. اگر می خواهید نحوه و زمان اجرای Recycle را تغییر دهید، به تنظیمات موجود در تصویر زیر باید مراجعه کنید. زمان بر حسب دقیقه ذکر شده است که شما هم بر حسب دقیقه می توانید زمان را تغییر دهید.

IIS چیست؟

IIS vs. Apache

برای شما که وب سایت میزبانی می کنید، احتمالاً از Apache یا IIS استفاده می کنید. این دو وب سرور در مقایسه با سایر رقبای خود بیشترین استفاده را از خود نشان می دهند و در مورد اینکه کدامیک بهترین است اختلاف نظر زیادی وجود دارد. البته سعی ما بر این نیست که ببنیم کدام بهتر است اما فکر می کنیم درک تفاوت بین IIS و Apache مهم است. شاید شما در گذشته به طور انحصاری از Apache استفاده کرده اید و به دنبال تغییر هستید. شاید هم بصورت بی طرف می خواهید دنبال تفاوت های این دو باشید.

Apache Server

با Apache شروع می کنیم که به عنوان سرور HTTP Apache شناخته می شود. این یک سرور منبع باز یا Open Source است که توسط بنیاد نرم افزار Apache ایجاد شده است(Apache Software Foundation). مانند بسیاری از برنامه های منبع باز، این برنامه بصورت رایگان و آزادانه توزیع می شود و توسط کاربران قابل ویرایش است. این مشارکت های مداوم کاربران به این معنی است که برنامه دائما در حال پیشرفت است، که یکی از دلایل محبوبیت آن است. مزیت بزرگ Apache این است که می توانید آن را روی هر سیستم عاملی اجرا شود. بیشتر اوقات با لینوکس استفاده می شود و با زبان اسکریپت PHP و پایگاه داده MySQL ترکیب شده است که معمولاً به عنوان LAMP شناخته می شود که یک راه حل جامع وب سرور است. استفاده از Apache بخش قابل توجهی از بازار وب سرور را اشغال کرده است. گرچه که محبوبیت IIS افزایش یافته است ولی رواج آن اینطور نیست. Apache یک ابزار بسیار متنوع است. از رابط های متداول زبان ، از جمله PHP ، Tcl ، Perl و Python پشتیبانی می کند. همچنین دارای طیف وسیعی از ماژول های احراز هویت از جمله:

Mod_auth
Mod_access
Mod_auth_digest
Mod_digest

همچنین موارد زیر را هم شامل می شود:

Support for SSL and Transport Layer Security (mod_ssl)
A proxy module (mod_proxy)
Custom log files (mod_log_config)
A URL rewrite (mod_rewrite)
Support for filtering (mod_include and mod_ext_filter)
Virtual hosting support
Webpage compression, to minimize size over HTTP

Apache هم دارای مشکلات خاص خود است که یکی از مهمترین آن feature bloat است. بسیاری از اپلیکیشن ها قربانی این خطا می شوند ، که اساساً بدان معنی است که آنها دارای تعداد زیادی ویژگی هستند که عمدتاً بدون استفاده می مانند. تخمین زده می شود که از هر ده کاربر Apache ، 9 نفر فقط از 10٪ از ابزارهای Apache استفاده می کنند.

IIS Server

IIS ، گاهی اوقات به عنوان Microsoft IIS Server شناخته می شود که فقط در سیستم عامل ویندوز موجود است. تنها اشکال واقعی IIS این است که یک محصول مایکروسافتی است، اما این لزوما چیز بدی نیست. از سال 2010، مایکروسافت IIS شاهد پیشرفت های عظیمی بوده است که منجر به افزایش مداوم سهم بازار از 21 درصد در سال 2010 به 32 درصد در سال 2014 شده است. این رشد تنها در چهار سال 11 درصد است. بین سال های 2010 تا 2014 ، مایکروسافت پیشرفت های قابل توجهی در امنیت IIS انجام داد. در همان دوره، آپاچی شاهد کاهش 17 درصدی سهم بازار بود.
مانندApache ، IIS از web extension خارجی برای اجرای ابزارهای خاص استفاده می کند.

Application request routing
Media services
URL rewriting
FTP publishing

این ویژگی ها، از طریق extension ها، در نسخه 7.5 IIS پیاده سازی شده اند. یکی دیگر از دلایل محبوبیت IIS این است که از محصولات مایکروسافت مانند دات نت فریم ورک و اسکریپت نویسی پشتیبانی زیادی دارد. برای بسیاری که سایت های آنها به .NET یا ASPX وابسته هستند، IIS به احتمال زیاد انتخاب ترجیحی است.

نمایش دیدگاه ها (0 دیدگاه)

دیدگاه خود را ثبت کنید:

انتخاب تصویر ویرایش حذف
توجه! حداکثر حجم مجاز برای تصویر 500 کیلوبایت می باشد.


دسته بندی مطالب خوش آموز