در این مقاله آموزشی شما با وب سرور IIS و نحوه استفاده از آن آشنا خواهید شد. در این مطلب به بررسی وب سرور IIS، معماری و نحوه استفاده از آن خواهیم پرداخت.
در اولین قسمت از این سری مطالب شما را ابتدا با معماری کلی وب سرور IIS آشنا می کنیم و روش هایی که این سرور به درخواست ها پاسخ می دهد و شیوه پردازش درخواست ها را بررسی خواهیم کرد .در ادامه به معرفی ابزارهای مختلف مدیریتی این سرور خواهیم پرداخت و کمی هم در خصوص تفاوت های نسخه 7 و 7.5 وب سرور IIS با نسخه قبلی که IIS 6.0 صبحت خواهیم کرد . هدف اصلی این سری مقالات آشنایی شما دوستان با ساختار IIS 7 و IIS 7.5 است و امیدوار هستیم در انتهای این سری مقالات به این هدف برسیم.
بصورت کلی ساختار سیستم عامل ها به دو لایه تقسیم می شود ، لایه هسته یا Kernel Mode و لایه کاربر یا User Mode ، لایه کرنل یا Kernel Mode نزدیکترین لایه به سیستم عامل است و سریعترین محل برای اجرای نرم افزارها و دستورات محسوب می شود اما هر نرم افزاری که در این لایه اجرا شود به منابع سیستمی حساسی بصورت مستقیم دسترسی خواهد داشت و همین امر موجب می شود که در صورت بروز هرگونه مشکلی در این لایه برای هر نرم افزاری که در آن کار می کند کل سیستم عامل دچار مشکل می شود و معمولا در چنین مراحلی است که شما خطاهای صفحه آبی یا Blue Screen را مشاهده می کنید .
در این لایه نرم افزارهایی مثل درایورهای سیستم نصب و کار می کنند تا بتوانند در سریعترین زمان ممکن اجرا شوند . همانطور که دیدید استفاده از این لایه برای نرم افزارهای کاربردی در دو بعد قابل بررسی بود ، بعد اول سرعت اجرا و بعد دوم خطاهای احتمالی است . این لایه را در ذهن داشته باشید تا لایه بعدی را معرفی کنیم ، در لایه کاربر یا User Mode نرم افزارها با سرعت کمترو البته در محیط محدود شده و محافظت شده ای از سیستم عامل اجرا می شوند .
آنها در واقع دستورات مورد نیاز خود را ابتدا تجزیه و تحلیل کرده و در صورت امکان در همان لایه کاربر و در غیر اینصورت با اعمال محدودیت های خاص به لایه کرنل برای اجرا می فرستند . در صورت بروز هر مشکلی در این لایه ، سیستم عامل بصورت کلی دچار مشکل نشده و صرفا نرم افزار مورد نظر دچار مشکل می شود و با پردازش های دیگر سیستم کاری ندارد.
برای مثال همانطور که اشاره شد درایورهای سیستم عامل در لایه کرنل فعالیت می کنند و در صورت بروز مشکل کل سیستم دچار مشکل شده و بعضا خطاهای صفحه آبی یا همان Blue Screen صادر می شوند ، اما نرم افزارهایی مثل آفیس ورد یا Excel در لایه کاربری فعالیت می کنند و در صورت بروز هرگونه مشکل در این لایه صرفا باعث بروز خطا در همان نرم افزار خواهد شد و سیستم عامل تحت تاثیر این مشکل قرار نخواهد گرفت ، قطعا در ویندوز یا چنین خطاهایی مواجه شده اید که سیستم به حالت Not Responding قرار میگیرد و نمی تواند آن نرم افزار خاص را اجرا کند در صورتیکه کارهای دیگر سیستم به درستی انجام می شود.
خوب در بحث وب سرور تصور کنید که یکی از وب سایت هایی که در IIS وجود دارد و در لایه کرنل فعالیت می کند به مشکل بخورد ، چه اتفاقی ممکن اسات بیافتد ؟ بله تمامی وب سایت های دیگر هم دچار مشکل خواهند شد و به خاطر وجود یک باگ ضعیف در کدهای یک نرم افزار کل سیستم دچار مشکل می شود . برای حل این مشکل در وب سرور IIS و بصورت خاص از نسخه 6 آن که در ویندوز سرور 2003 معرفی شد ساختار به نام Http Listener به سیستم عامل اضافه شد . در این حالت هیچگونه درخواستی و عملیات پردازشی در لایه کرنل سیستم عامل انجام نمی شود .
در این حالت سرور ابتدا درخواست ها را در لایه کرنل و توسط سرویسی به نام Http Listener دریافت کرده و آنها را تحلیل میکند ، منظور از تحلیل این است که وب سرور IIS توانایی میزبانی بیش از چندین وب سایت را دارد و بر همین اساس درخواست هایی که از طریق وب دریافت می کند متفاوت می باشد و بایستی درخواست مورد نظر دقیقا به وب سایت مورد نظر ارجاع داده شود ، در صورت درخواست پردازش خاص یا ساده تر بگوییم وب سایت خاص ، این سرویس که در لایه کرنل فعال است درخواست ها را بصورت تفکیک شده بر اساس هر درخواست به لایه کاربر یا User Mode برای اجرا ارسال می کند و در اینجاست که بر اساس هر درخواست یک پردازش یا Process در CPU ایجاد می شود.
حال اگر برای هر یک از این درخواست ها مشکلی پیش بیاید براحتی همان درخواست را می توانید بدون ایجاد مشکل برای سایر درخواست ها از صف پردازش خارج کنید و وب سرور شما به مشکل نخواهد خورد . با این روش ضمن اینکه امنیت سیستم عامل بالا می رود امکان تفیکیک و اولویت بندی پردازش ها نیز ایجاد خواهد شد. با توجه به اینکه در این قسمت بصورت ویژه به مبحث وب سرور اشاره می کنیم توجه کنید که پس از اینکه Http Listener درخواست را به لایه User Mode انتقال داد به ازای هر درخواست یک پردازش به نام wp.exe که مخفف Worker Process است ایجاد خواهد کرد.
شما براحتی می توانید از طریق Task Manager این پردازش های ایجاد شده توسط Http Listener را مشاهده کنید . جالب اینجاست بدانید که Http Listener به دلیل اینکه می تواند وجود یا عدم وجود صفحات درخواستی و یا نوع درخواست هایی وارد می شود را برررسی کند می تواند در همان لایه کرنل تعیین کند که درخواست وارده درست یا معتبر است یا حمله به وب سرور است و در عین حال در همان لایه این درخواست های غیرمعتبر را حذف و رد می کند. توجه کنید که Http Listener به هیچ عنوان عمل پردازشی در لایه Kernel Mode انجام نمی دهد .
امروزه امنیت در وب سرورها یکی از مهمترین قسمت های زندگی هر ITMAN شده است . اگر با وب سرورهای قدیمی تر مایکروسافت کار کرده باشید حتما به خاطر دارید که در هنگام نصب این وب سرور شما می توانستید تا حدودی تعیین کنید که چه امکاناتی به همراه وب سرور بر روی آن نصب شود .
هرچه به عقب تر برگردیم این ساختار تعیین امکانات نصب برای وب سرورها کمتر می شد تا جاییکه وقتی شما می خواستید یک وب سرور را نصب کنید به ناچار مجبور بودید که کلیه امکانات را به یکباره نصب کنید و قادر به تفکیک امکانات نصب نبودید . اما چه اهمیتی دارد که شما بتوانید برای وب سرور تعیین کنید که چه امکانات یا Feature هایی داشته باشد یا نداشته باشد ؟
در دنیای امنیت اطلاعات و همچنین برنامه نویسی که حتما شما تا حدودی با این مسئله آشنایی دارید ، هر قطعه کد به تنهایی می تواند دارای یک سری باگهای امنیتی باشد که در صورت اجرا می توانند باعث بروز مشکلاتی برای وب سرور شوند و بعضا باعث بروز مشکلات امنیتی بر روی آن شوند.
اگر کمی در خصوص سیستم های مدیریت امنیت اطلاعات بدانید متوجه این موضوع می شوید که در جاهایی که یک سازمان دارای یک ریسک است که آن ریسک برای آن سازمان اصلا در حد ضربه زدن و بروز مشکل اساسی در سازمان نیست ، این ریسک منتفی یا نادیده گرفته می شود .
خوب همین بحث را در خصوص وب سرور IIS نیز داریم ، اگر قرار نیست ما بر روی سرور خود قابلیت Browse کردن دایرکتوری های سرور را بدهیم بنابراین اصلا این امکان وب سرور را نصب نمی کنیم و ریسک سوء استفاده از آن را به صفر می رسانیم .
در نسخه 7 و 7.6 از وب سرور IIS بر خلاف نسخه های قبلی تمامی موارد و امکانانی که مد نظر یک کاربر است در قالب یک ماژول یا Feature ارائه شده است ، شما می توانید براحتی تعیین کنید که به چه امکاناتی نیاز دارید و صرفا همانها را نصب کنید و بدین ترتیب از بروز مشکلات و تهدیدات ناشی از نصب بیهوده امکانات وب سرور که متاسفانه بر حسب عادت اکثر دوستان در ایران در هنگام نصب سرور همه امکانات آن را نصب می کنند ، جلوگیری خواهید کرد.
برای اینکه درک بهتری از موضوع ماژول های داشته باشید من وارد کنسول گرافیکی IIS در ویندوز سرور 2008 شده ام تا کمی بصورت تصویری با این ماژول ها آشنا شوید ، دقت کنید هنوز ما وارد بحث آموزش این کنسول نشده این و صرفا این قسمت جنبه نمایشی دارد ، در مراحل بعدی از مقالات به صورت جزء به جزء از نصب و انجام تنظیمات تک تک این موارد گذر خواهیم کرد . تصویر زیر ماژول هایی که شما در هنگام نصب IIS بصورت تمام و کمال بر روی سرور موجود می باشند را مشاهده می کنید :
اگر با IIS 6.0 کار کرده باشید قطعا به محض باز کردن کنسول IIS 7 متعجب خواهید شد ، این کنسول جدید کاملا با کنسول های قبلی وب سرور IIS متفاوت است و تقریبا می توان گفت متحول شده است . به تصاویر بالا دقت کنید ، تمامی موارد و امکاناتی که برای یک وب سرور مورد نیاز هستند بصورت مجزا در این سرور قرار گرفته اند و این یعنی در صورت عدم نیاز به هر کدام از این سرویس های آنها را غیر فعال می کنیم و در نهایت به امنیت بیشتر و کارایی بیشتر سرویس وب می انجامد .
اما امکان جالب دیگری که در این سرویس IIS 7 اضافه شده است این است که شما در هنگام نصب امکانات و Feature ها می توانید تعیین کنید که کنسولی ویژه مدیریت وب سرور های IIS 6.0 نیز به سرور اضافه شود و بدین وسیله می توانید سرورهای IIS 6.0 دیگر را از طریق همین کنسول مدیریت کنید ، در زیر تصویر مربوط به این کنسول را می توانید مشاهده کنید :
در این قسمت قصد آموزش استفاده از این ماژول ها را نداریم بلکه صرفا جهت آشنایی با محیط کاری IIS چند نکته را اشاره کردیم ، استفاده از این ابزارها را می توانید در قسمت های بعدی مقالات بصورت ریز شده مشاهده کنید ، اما بد نیست بدانید که با انتخاب هر وب سایتی که در IIS وجود دارد ماژول ها و امکانات ویژه همان وب سایت به شما نمایش داده می شود.
در تصویر زیر من بر روی صفحه پیشفرض وب سایت IIS کلیک کرده ام که همانطور که مشاهده می کنید ماژول های مرتبط در جلوی آن نمایش داده شده است ، از طرفی برای انجام تنظیمات این ماژول ها سه راه وجود دارد ، اول کلیک کردن بر روی هر کدام از ماژول ها پس از نمایش ، راست کلیک کردن بر روی هر وب سایت و مشاهده مشخصات و در آخر کاملترین مورد استفاده از منوی Action در قسمت سمت راست و بالای کنسول سرور IIS است که می توانید این موارد به تفکیک در قسمت زیر مشاهده کنید.
کنسول گرافیکی که به آن اشاره شد یکی از راه های مدیریت وب سرور IIS 7 می باشد . راه دیگر مدیریت وب سرور استفاده از قابلیت هاو اسکریپت های نوشته شده به وسیله خط فرمان PowerShell است . اگر بخواهیم از ابتدا این مسئله را بررسی کنیم بایستی کمی به عقب بر گردیم ، این مسئله بدیهی است که هر مدیر شبکه ای بخواهد برخی از کارهایی که به وی سپرده می شود را بصورت خودکار انجام دهد .
در گذشته برای انجام اینکار از زبان برنامه نویسی VBScript استفاده می شد ، اما با گذشت زمان مایکروسافت استفاده از این زبان را تا حدود زیادی منسوخ کرد و زبان جدیدی یا بهتر بگوییم Shell جدیدی به نام Powershell را ارائه کرد و به مرور این زبان را جایگزین زبان VBSCript در بحث مدیریت سرورها و سرویس ها کرد. PowerShell یک مجموعه اسکریپت از پیش طراحی شده در قالب Template دارد که با استفاده از این اسکریپت های نوشته شده ، شما می توانید بسیاری از فعالیت ها و کارهای روزمره سرویس های خود اعم از IIS را مدیریت کنید .
همانطور که اشاره شد در این قسمت صرفا به معرفی این قابلیت مدیریتی می پردازیم و در صورت امکان در ادامه این سری مقالات بصورت مفصل در خصوص استفاده از PowerShell در مدیریت IIS خواهیم پرداخت ، اما بد نیست تا اینجا که رسیده ایم کمی هم با ظاهر و کارکرد این خط فرمان قدرتمند آشنا شویم ، در ادامه می توانید مراحل ابتدایی استفاده از Powershell برای مدیریت IIS را مشاهده کنید . برای ورود به محیط Powershell کافیست آیکن آبی رنگ کتار دکمه Start را کلیک کنید.
Windows PowerShell Copyright (C) 2009 Microsoft Corporation. All rights reserved. PS C:\Users\Administrator> cd $pshome ورود به پوشه خانگی پاورشل PS C:\Windows\System32\WindowsPowerShell\v1.0> cd modules ورود به قسمت ماژول های موجود PS C:\Windows\System32\WindowsPowerShell\v1.0\modules> dir گرفتن لیست ماژول های موجود Directory: C:\Windows\System32\WindowsPowerShell\v1.0\modules Mode LastWriteTime Length Name ---- ------------- ------ ---- d---- 11/20/2010 9:45 PM ADRMS d---s 11/20/2010 9:45 PM AppLocker d---- 11/20/2010 9:45 PM BestPractices d---s 11/20/2010 9:45 PM BitsTransfer d---- 7/13/2009 10:37 PM PSDiagnostics d---- 11/20/2010 9:45 PM ServerManager d---- 11/20/2010 9:45 PM TroubleshootingPack d---- 2/4/2013 11:59 PM WebAdministration PS C:\Windows\System32\WindowsPowerShell\v1.0\modules> import-module webadministration وارد کردن اسکریپت ها PS C:\Windows\System32\WindowsPowerShell\v1.0\modules> get-psdrive نمایش درایوهای پاورشل موجود Name Used (GB) Free (GB) Provider Root CurrentLocation ---- --------- --------- -------- ---- A FileSystem A:Alias Alias C 7.71 32.19 FileSystem C:\ ...dowsPowerShell\v1.0\modules cert Certificate D 2.76 FileSystem D:Env Environment Function Function HKCU Registry HKEY_CURRENT_USER HKLM Registry HKEY_LOCAL_MACHINE IIS WebAdminis... \\ITPRO Variable Variable WSMan WSMan PS C:\Windows\System32\WindowsPowerShell\v1.0\modules> cd IIS: ورود به درایو مربوط به وب سرور PS IIS:\> dir مشاهده پوشه های موجود در وب سرور Name ---- AppPools Sites SslBindings PS IIS:\> cd sites ورود به پوشه سایت های موجود PS IIS:\sites> dir مشاهده سایت های موجود Name ID State Physical Path Bindings ---- -- ----- ------------- -------- Default Web Site 1 Started %SystemDrive%\inetpub\wwwroot http *:80: PS IIS:\sites> cd '.\Default Web Site' ورود به تنظیمات وب سایت پیشفرض PS IIS:\Sites\Default Web Site> dir مشاهده پوشه های وب سایت پیشفرض Directory: WebAdministration::\\ITPRO\Sites\Default Web Site Mode LastWriteTime Length Name ---- ------------- ------ ---- d---- 2/5/2013 12:02 AM aspnet_client -a--- 2/4/2013 11:59 PM 689 iisstart.htm -a--- 2/4/2013 11:59 PM 184946 welcome.png
خوب در این قسمت به معرفی ساختار Kernel Mode و همچنین Http Listener پرداختیم و بعد از آن با انواع کنسول های مدیریتی گرافیکی و خط فرمانی که همان PowerShell است تا حدودی آشنا شدیم و متوجه شدیم که IIS نسخه 7 دارای چه تعداد امکانات و Feature های تفکیک شده است و دلیل این تفکیک و ریز شدن ماژول ها چه می باشد .
در اینجا شما مفهوم Work Process را متوجه شدید و قاعدتا اگر در مراحل بعدی قسمت با چنین واژه ای برخورد کنید متوجه می شوید که این مفهوم به چه کار می آید و در کجا کاربرد دارد ، در قسمت بعدی به بررسی امکانات و همچنین نصب IIS در ویندوز سرور 2008 با ذکر توضیحات در خصوص هر کدام از این امکانات خواهیم پرداخت .
امیدوارم که از خواندن قسمت قبلی در خصوص IIS استفاده لازم را برده باشید ، در این قسمت برای شما نقش یا همان Role مربوط به IIS را بیشتر تشریح می کنیم و از طرفی تمامی امکاناتی که در هنگام نصب IIS از ما سئوال می شود را معرفی خواهیم کرد . با توجه به اینکه در قسمت قبلی نیز اشاره کردیم IIS یک ساختار ماژولار دارد بنابراین ما بایستی بر حسب نیاز خودمان تشخیص دهیم که برای استفاده درست از این وب سرور به چه نوع و تعداد از این ماژول ها نیاز داریم و صرفا همان هایی که مورد نیازمان هستند را نصب کنیم .
این مورد را همیشه در ذهن داشته باشیم که برخلاف زندگی که در آن هر امکاناتی که ممکن باشد را می خواهیم داشته باشیم در خصوص وب سرورها در صورتیکه نیاز به یک ویژگی نداریم نبایستی آن را نصب و راه اندازی کنیم ، چه بسا در بسیاری از موارد همین نصب بی مورد ماژول ها و امکانات بلا استفاده باعث بروز مشکلات امنیتی بسیاری در سرور ما خوهد شد . در این قسمت همانطور که گفته شد ما Role و Feature های مختلف IIS را معرفی می کنیم و مزایای هر کدام را تا حد امکان بررسی می کنیم ، پس تا انتهای قسمت با ما باشید.
برای نصب وب سرور IIS روش های متعددی وجود دارد ، اما در ویندوز سرور 2008 ساده ترین و معمول ترین روش نصب وب سرور IIS استفاده از کنسول Server Manager است . اگر قصد نصب IIS در ویندوز سون را دارید می توانید به لینک قسمت ای که در ادامه ذکر شده است در خصوص نصب و راه اندازی وب سرور IIS در ویندوز کلاینت سون مراجعه کنید . اما بیشتر بحث ما در این خصوص در مورد نصب IIS در ویندوز سرور خواهد بود .
توجه کنید که شما در ویندوز سرور 2008 می توانید توسط کنسول Server Manager به سرورهای دیگر متصل شده و Role های مورد نظر خودتان را بر روی آنها مدیریت کنید. روش دیگری هم به غیر از استفاده از کنسول Server Manager وجود دارد که در ادامه مقالات به آن اشاره ای خواهیم کرد و آن استفاده از PowerShell و دستورات خط فرمانی و اسکریپت های موجود در آن می باشد .
در اینجا فرض را بر این می گذاریم که شما IIS را در ویندوز سرور 2008 و از طریق کنسول گرافیکی می خواهید نصب و راه اندازی کنید ، در خصوص نصب و راه اندازی IIS در ویندوز سرور 2008 و محیط Server Manager قبلا قسمت ای نوشته ام که در صورت تمایل می توانید به لینک های زیر مراجعه کنید.
خوب فرض رو بر این می گذاریم که شما می خواهید IIS را نصب کنید ، در اینجا به معرفی تک تک قسمت های موجود در هنگام نصب IIS و توضیحات مربوط به آنها خواهیم پرداخت ، صفحه ای که در زیر مشاهده می کنید صفحه ای است که در هنگام ورود به کنسول Server Manager و انتخاب گزینه Add Role و در نهایت انتخاب گزینه Web Server به شما نمایش داده می شود ، می باشد . ما توضیحات خود را بر اساس تک تک موارد از بالا به پایین ارائه خواهیم کرد . دقت کنید که با انتخاب گزینه و چک خوردن آن ، امکان ذکر شده نصب شده با برداشتن تیک امکان مورد نظر حذف خواهد شد .
بعد از اینکه وارد کنسول مربوط به نصب IIS شدید بصورت کلی چهار قسمت را می توانید مشاهده کنید .قسمت اول Web Server است که به خودی خود کاری انجام نمی دهد و صرفا برای این می باشد که شما بتوانید از زیر مجموعه های آن امکانات مختص خدمات وب IIS را انتخاب کنید ، در واقع مهمترین قسمت Web Server همان زیر مجموعه های آن می باشد که در ادامه توضیح داده شده اند .
قسمت دوم Management Tools است که همانطور که از نامش پیداست ابزارهای مدیریتی سرور IIS از جمله کنسول مدیریتی ، Command های مورد نیاز و اسکریپت های مدیریت وب سرور IIS را در اختیار ما قرار می دهد . قسمت سوم FTP Server است ، شما با استفاده از نصب این سرور قابلیت انتقال فایل بین کلاینت و سرور از طریق پروتکل FTP را خواهید داشت ، این سرویس این قابلیت را به سیستم ها می دهد که با استفاده از کلاینت ها یا Browser هایی که FTP را پشتیبانی می کنند فایل ها را منتقل کنید . قسمت چهارم IIS Hostable Web Core است که در ادامه بصورت کامل این مورد را تشریح خواهیم کرد .
یکی دیگر از مواردی که باعث نمایش پوشه ها و فایل ها بصورت لیستی در وب سایت می شود ، عدم وجود فایل پیشفرض یا Default Document است . در صورتیکه نیازی به استفاده از این قابلیت ندارید و نمی خواهید فایل های موجود در وب سرور شما به این صورت نمایش داده شوند این قابلیت را در همین ابتدا نصب نکنید .
HTTP Redirection : این قابلیت به شما این اجازه را می دهد که بتوانید درخواست های کاربران را به یک مسیر مشخص هدایت کنید هر چند که کاربر آن را وارد نکرده باشد . فرض کنید که شما یک وب سایت به نام www.tosinso.com دارید و از جهتی می خواهید کلیه درخواست هایی که به وب سرور داده می شود با هر آدرسی به این آدرس URL هدایت شود ، با امکان HTTP Redirection شما می توانید به کاربر بگویید که مثلا اگر URL وارد شده به شکل www.devahndler.com بود آنرا به www.tosinso.com منتقل کند.این قابلیت در بسیاری از موارد کاربرد دارد که از آن جمله می توان به تغییر نام وب سایت ، مشکلات ناشی از Spell کردن و سخت بودن نام وب سایت و همچنین اجبار کلاینت ها برای استفاده از آدرس HTTPS به جای HTTP استفاده کرد.
WebDAV Publishing : در ساده ترین تعریفی که می توان از پروتکل WebDAV و امکانات آن داشت ، می توان گفت که WebDAV روشی برای انتقال فایل ها از کامپیوتر محلی به سرویس میزبان وب یا همان Web Hosting Provider می باشد . در واقع با استفاده از WebDAV وب سرور شما در نقش یک فایل سرور هم می تواند عمل کند و یک هارد درایو آنلاین محسوب می شود . این هارد درایو آنلاین امکان ویرایش و انتشار صفحات را براحتی در اختیار شما قرار می دهد . البته دقت کنید که هر وب سروری توانایی ارائه خدمات WebDAV را ندارد و استفاده و عدم استفاده از آن وابسته به سرویس دهنده شما می باشد .در نسخه های قبلی IIS سرور ، پروتکل WebDAV دارای مشکلات امنیتی بسیاری بود که در نسخه های جدید این مشکلات تا حدود زیادی برطرف شده اند .در حال حاضر IIS 7 و IIS 8 از جدیدترین نسخه پروتکل WebDAV استفاده می کند.
خوب در این قسمت تا حد امکان قابلیت ها و امکاناتی که وب سرور IIS در اختیار ما قرار می دهد را برای شما معرفی کردیم ، در صورت بروز هرگونه ابهام در این خصوص حتما در ادامه مطرح کنید تا در خصوص ابهام به وجود آمده توضیحات تکمیلی را ارائه کنیم. اما در قسمت بعدی در خصوص انجام تنظیمات مقدماتی ، اتصال ها یا Binding ، پوشه های مجازی یا Virtual Directories ، عملیات Logging ، انواع MIME و در نهایت در خصوص Site Config و Master Config و فایل های Webconfig صحبت خواهیم کرد. امیدوارم که مورد توجه شما قرار گرفته باشد.
در قسمت قبلی به معرفی نقش ها و امکاناتی که وب سرور IIS در اختیار ما قرار می دهد پرداختیم ، این اولین قسمت ای است که در آن شروع به کار و در واقع مدیریت مقدماتی وب سرور IIS بصورت عملی را بررسی و آموزش خواهیم داد . همانطور که در عنوان مطلب مشاهده می کنید در این قسمت شما با مفاهیمی مثل Binding یا اتصال ها ، Logging یا لاگ برداری ، Virtual Directories یا پوشه های مجازی و همچنین MIME Types که بهتر است به فارسی ترجمه نشود آشنا خواهید شد .
یکی از مهمترین مسائل و مشکلاتی که در خصوص یادگیری مفاهیمی مثل Binding و Virtual Directory ها و ... وجود دارد ، درک واقعیت مسئله است که اصلا اینها چه هستند و چه می کنند ، اما متاسفانه اگر مطلبی هم در این زمینه در جایی نوشده شده در خصوص شیوه انجام تنظیمات مربوط به اینها بوده است و نه چیستی آنها ، در ابتدای قسمت و برای اینکه درک درستی از این مفاهیم داشته باشید ابتدا یک وب سایت استاتیک ساده در IIS ایجاد می کنیم و بر اساس همان وب سایت این موارد را با هم بررسی خواهیم کرد. در ابتدای هر تمرین ابتدا شما را با مفاهیم اصلی و چیسی این امکانات آشنا خواهیم کرد و سپس بصورت تصویری به شما آموزش انجام تنظیمات آنها را ارائه خواهیم کرد.
معمولا برنامه نویس هایی که برنامه نویسی وب انجام می دهند در هنگام طراحی وب سایت های خود قبل از هر چیزی به این مسئله فکر می کنند که چه مقدار پردازش برای این نرم افزار لازم است و مسائل امنیتی مرتبط با این نرم افزار تحت وب چه هستند ، اما کمتر کسی پیش می آید که سئوالاتی مثل اینها را از خود سئوال کند :
آیا تمامی این نرم افزار تحت وب در قالب یک وب سایت بایستی سرویس دهی شوند ؟ یا بایستی به ازای ماژول های مختلف نرم افزار وب سایت های مختلفی ایجاد شود ؟ آیا نرم افزار من بر روی وب سایت پیشفرض IIS یا همان Default Web Site نصب و اجرا می شود ؟ یا یک وب سایت بصورت جداگانه ایجاد می کند ؟ آیا وب سایت من نیازی به استفاده از پروتکل امنیتی SSL دارد یا خیر ؟
معمولا برنامه نویس های عزیز ما به جای استفاده از طرح و ایده مستند شده و از پیش طراحی شده با این جمله سر و ته موضوع را به هم می رسانند : بعدا بهش فکر می کنیم !!! این جمله یعنی کار ما بصورت آزمون و خطا خواهد بود و نرم افزار در صورت نیاز به هر یک از موارد خواسته شده کون فیکون خواهد شد .
خوب شاید با خود بپرسید که این سئوالات چه ارتباطی به مسئله Binding در IIS دارند ؟ همیشه بایستی توجه کنید که شما نرم افزار تحت وب خود را برای استفاده کاربران سطح پایین ( Dummy Users ) طراحی می کنید و برای کاربرانی که قصد استفاده از این وب سایت را دارند بایستی سادگی استفاده و دسترسی به آن در اولویت قرار بگیرد .
فرض کنید که وب سایتی برای یک سازمان طراحی کرده اید که بایستی برای دسترسی بصورت https://tosinso.com/:7890 در مرورگر وارد شود . از نظر شما این آدرس ممکن است ساده به نظر برسد اما از نظر یک کاربر عادی این سخت ترین لحظه زندگی است !!! Binding برای وب سایت هایی که در IIS سرویس دهی می شوند به معنای متصل کردن یا چسباندن یک نام یا Host Header ، یک آدرس IP یا یک شماره پورت است به گونه ای که بتوانید به هر یک از وب سایت های موجود در وب سرور بصورت منحصر به فرد با یک آدرس یکتا دسترسی پیدا کنید.
هر وب سایت در وب سرور IIS بایستی دارای یک شناسه دسترسی یا به قول خودمان یک آدرس منحصر به فرد برای دسترسی توسط کاربران داشته باشد . این آدرس می تواند یک آدرس IP ، ترکیب آدرس IP و شماره پورت و یا نام یا Host Header باشد . به متصل کردن هر یک از این موارد به یک وب سایت ساخته شده در IIS به اصطلاح فنی Bindings گفته می شود . Bindings دارای قوانین مشخص و معینی است که بایستی در هنگام استفاده از آنها تبعیت کرد در غیر اینصورت دچار مشکل خواهد شد .
برای درک بهتر از قابلیت Bindings در IIS از ابتدا ما یک وب سایت ایجاد می کنیم و تمامی موارد مربوط به آن را تشریح خواهیم کرد ، برای اینکار ابتدا وارد کنسول IIS Manager شده و بر روی قسمت Sites راست کلیک کرده و Add Web Site را انتخاب کنید. با تصویری مشابه آنچه در بالا مشاهده می کنید مواجه خواهید شد. در این قسمت در کارد Site Name اسم سایت مورد نظر خود را وارد کنید.
بصورت خودکار برای این وب سایت در کادر Application Pool یک Application Pool به نام همان وب سایت ایجاد خواهد شد ، شما می توانید در همینجا برای این وب سایت یک Application Pool دیگر را با استفاده از دکمه Select مشخص کنید اما فعلا به همین حالت پیشفرض قرار دهید ، در خصوص چیستی و ماهیت Application Pool ها بعدا بصورت کامل صحبت خواهد شد.
اما در قسمت Content Directory و در ادامه در کادر Physical Path یا مسیر فیزیکی شما محل قرارگیری فایل های وب سایت خود را بر روی سیستم خود یا سیستم تحت شبکه مشخص می کنید ، بله درست متوجه شدید شما ضمن اینکه می توانید این مسیر را بصورت محلی بر روی سیستم خود مشخص کنید ، می توانید آن را بصورت یک آدرس UNC به یک پوشه به اشتراک گذاشته شده تحت شبکه متصل کنید .
دقت کنید که دو دکمه Connect As و Test Settings در صورتی معنی پیدا می کنند که شما در قسمت Physical Path یک مسیر تحت شبکه را وارد کرده باشید ، گزینه Connect As نام و نام کاربری کاربری را از شما درخواست خواهد کرد که قرار است به پوشه اشتراک گذاری شده دسترسی پیدا کند ، توجه کنید که فرقی نمی کند که شما این پوشه را بر روی سیستم خود Mount کرده باشید ، در هر صورت این مشخصات بایستی وارد شود ، با استفاده از دکمه Test Settings می توانید از صحت برقراری ارتباط مطمئن شوید .
اما در قسمت Binding چهار قسمت وجود دارد که هر یک دارای قابلیت این می باشد که وب سایت مورد نظر را از نظر آدرس دهی مشخص و آدرس یکتایی به آن اختصاص دهد . قسمت Type نوع پروتکل ارتباطی را مشخص می کند که بصورت پیشفرض پروتکل دسترسی به وب Http بوده و پورت پیشفرض آن هم 80 می باشد . همانطور که می دانید تمامی مرورگرها بصورت پیشفرض این نوع پروتکل را پشتیبانی می کنند و در صورت وارد نکردن آدرس URL بصورت https://tosinso.com/ خود مرورگرها پیشفرض را بر این می گذارند که شما از پروتکل Http استفاده می کنید .
دیگر پروتکل قابل انتخاب در این قسمت https است که پورت پیشفرض 443 دارد و در صورت نیاز شما بایستی حتما آدرس دقیق URL را بصورت https://tosinso.com/ وارد کنید ، در غیر اینصورت مرورگر نمی تواند تشخیص دهد درخواست شما دقیقا بایستی بر روی چه پروتکلی ارسال شود و بنابراین همان http را در نظر می گیرد.
در قسمت IP Address شما می توانید به یک وب سایت یک آدرس IP اختصاصی بدهید ، توجه کنید که شما می توانید بر روی یک وب سرور N عدد آدرس IP داشته باشید و برای هر کدام از وب سایت های خود یک آدرس IP اختصاصی قرار دهید ، اگر تا به حال کار وب انجام داده باشید حتما در برخی از سرویس های هاستینگ مشاهده کرده اید که به شما اختصاص آدرس IP ثابت یا Static را به عنوان یک Option یا ویژگی ارائه می دهند ، آنها در واقع در ساده ترین حالت از همین روش برای اختصاص IP به وب سایت شما استفاده می کنند.
زمانیکه شما به جای استفاده از یک آدرس IP اختصاصی از حالت All Unassigned استفاده می کنید در واقع به وب سرور می گویید که هر درخواستی برای این سرور از طرف هر آدرس IP و به هریک از آدرس های IP مستقر بر روی سرور منتقل شد آنرا با توجه به شماره پورت ، Type و در نهایت Host Header موجود به سمت وب سایت مورد نظر هدایت کن و به آدرس IP مقصد کاری نداشته باشید.
در قسمت پورت شما می توانید برای دسترسی به وب سایت خود یک آدرس پورت خاص در نظر بگیرید ، این آدرس می تواند عددی بین 1 تا 65535 باشد ، توجه داشته باشید که پورت پیشفرض برای استفاده در پروتکل http پورت شماره 80 می باشد و مرورگرها این آدرس را برای ارسال درخواست به وب سرور بصورت پیشفرض در نظر میگریند
اگر شما وب سایت خود را برای استفاده از یک پورت دیگر تنظیم می کنید بایستی به کاربران خود نیز اطلاع دهید که آدرس درخواستی خود را با توجه به شماره پورت تعیین شده در قالب سوکت وارد کنند ، سوکت یه معنای ترکیب کردن آدرس IP یا FQDN به همراه شماره پورت در جلوی آن است ، برای مثال آدرس https://tosinso.com/:7777 یک آدرس سوکت می باشد.
اما در قسمت Host Name شما می توانید یک نام برای وب سایت خود انتخاب کنید که مرسوم ترین روش برای استفاده در وب سرورهای اینترنتی است ، شما می توانید براحتی وب سایت های خود با شماره پورت 80 را با نامهای مختلف به وب سرور معرفی کنید ، برای مثال تا به حال همین مثال www.tosinso.com یک Host Name است که بایستی در قسمت Host Name وارد شود تا کاربران بتوانند با این اسم وب سایت را مشاهده کننند
در غیر اینصورت مشاهده وب سایت صرفا با آدرس IP و شماره پورت ممکن است ، دقت کنید که صرفا انجام تنظیمات برای سرور و در قسمت Host Name برای اینکار کافی نیست و شما بایستی برای استفاده درست و کامل از قابلیت Host Name تنظیماتی در سرور DNS خود نیز انجام دهید که در این مطلب نمی گنجد.
خوب در نهایت شما براحتی با استفاده از گزینه Add و اضافه کردن Binding منحصر به فرد خود می توانید صفحه وب سایت خود را در معرض دید کاربران قرار دهید ، دقت کنید که مهمترین نکته در اضافه کردن Bindings این است که ترکیبی که ایجاد می شود نبایستی با ترکیب Binding یک وب سایت دیگر مشابه باشد
برای مثال اگر شما وب سایتی بصورت https://tosinso.com/ ایجاد کرده اید می توانید وب سایت دیگری به همین نام در وب سرور ایجاد کنید و در این حالت یا بایستی آدرس وب سایت یا شماره پورت آن را تغییر دهید تا آدرس ایجاد شده یکتا باشد ، البته به این موضوع هم توجه کنید که IIS به شما پیغامی می دهد که وب سایت مورد نظر وجود دارد ، IIS وب سایت جدید را ایجاد می کند اما آن را در حالت Stop قرار می دهد.
Virtual Directory ها در واقع نام یک پوشه یا یک مسیر هستند که در IIS تعریف شده و به یک مسیر فیزیکی موجود بر روی سیستم سرور یا یک پوشه به اشترک گذاشته شده در شبکه اشاره می کند . بعد از اینکه یک Virtual Directory با یک اسم مشخص در وب سرور تعریف شد جزوی از URL وب سایت مورد نظر خواهد شد و کاربران قادر خواهند بود به راحتی با وارد کردن آدرس Virtual Directory مورد نظر در Browser خود محتویات این پوشه را مشاهده کنند.
همانطوری که فایل ها در کامپیوتر شما در قالب پوشه ها ترتیب و نظم پیدا می کنند و قابل دسترسی هستند به همان ترتیب با استفاده از Virtual Directory ها شما می توانید به محتویات یک پوشه بصورت آنلاین دسترسی پیدا کنید. شما میتوانید برای یک وب سایت چندین Virtual Directory مختلف تعریف کنید ، برای اینکه بتوانید چنین ساختاری را در IIS داشته باشید بر روی وب سایت خود راست کلیک کرده و گزینه Add Virtual Directory را انتخاب کنید ، سپس با تصویر زیر مواجه خواهید شد .
در قسمت Alias شما بایستی نامی را که کاربر بایستی در مرورگر خود وارد کند را مشخص کنید ، برای مثال اگر در تصویر بالا برای وب سایت itpro یک نام Alias به شکل itprofiles وارد شده است ، کاربر در هنگام دسترسی به این آدرس بایستی در مرورگر آدرس را به شکل www.tosinso.com/itprofiles وارد کند تا بتواند به محتویات Virtual Directory مورد نظر دسترسی پیدا کند .
در قسمت Physical Path شما مسیر مربوط به پوشه موجود بر روی سیستم خود یا پشه به اشتراک گذاشته شده در شبکه را وارد می کنید ، توجه کنید که نام پوشه در نهایت توسط Alias برای وب سرور تعیین می شود نه از طریق مسیر فیزیکی و نام فعلی پوشه موجود. گزینه های Connect As و Test Settings مشابه همان توضیحاتی است که در قسمت قبلی نیز به آن اشاره شد. برای دسترسی پیدا کردن به Virtual Directory ایجاد شده می توانید در مرورگر آدرس زیر را وارد کنید و تصویر زیر دیده خواهد شد :
معمولا برنامه نویس ها و یا کسانی که کار مدیریت وب سرور را انجام می دهند برای اینکه از صحت عملکرد نرم افزار خود و یا اشکالات بوجود آمده یا در شرف وقوع مطلع شوند از قابلیتی به نام Logging در IIS استفاده می کنند . شما می توانید در این قسمت از وب سرور تعیین کنید که می خواهید از چه فرآیند هایی لاگ برداری شود و یا این لاگ ها چه مدت در وب سرور نگهداری شود و بسیاری دیگر از تنظیمات مربوط به Logging را می توانید انجام دهید .
شما می توانید لاگ برداری را در دو سطح سایت و سرور انجام دهید ، هر جا در هر قسمت از قابلیت Log برداری به قسمتی برخوردید که به حالت Grayed Out یا غیر فعال در آمده بود شک نکنید که این حالت به دلیل حضور شما در لایه پایینتر از مجموعه سایت است .
توجه کنید که ساختار Logging یک ساختار سلسله مراتبی و موروثی است که از سرور به ارث برده می شود . اما بهتر است این قابلیت را بیشتر بصورت تصویری به شما نمایش دهیم ، پس از ورود به کنسول مدیریتی وب سرور IIS در قسمت سایت یا سرور مورد نظر آیکن Logging را بیابید و بر روی آن کلیک کنید ، چیزی شبیه به تصویر پایین را مشاهده خواهید کرد :
در قسمت One Log File Per می توانید تعیین کنید که سرور به ازای هر Site یا هر Server یک فایل لاگ ایجاد کند ، دقت کنید همانطور که اشاره کردیم در صورتیکه قسمتی از این گزینه ها را نمی توانید تغییر بدهید به دلیل این است که شما تنظیمات را بایستی در سطح بالاتر که سرور است انجام دهید . در قسمت Format شما می توانید قالبی که IIS تحت آن بایستی گزارش های خود را آماده کند را مشخص کنید .
برای مثال نمونه پیشفرض به نام W3C می باشد که قالب استاندارد پیشفرض برای IIS محسوب می شود ، شما می توانید با انتخاب قالب مورد نظر و در ادامه انتخاب Select Fields به IIS بگویید که از چه چیزهایی برای شما لاگ برداری کند ، با توجه به گستردگی موارد فیلد های لاگر برداری که چندان هم در اینجا کاربردی برای ما ندارند من صرفا برای شما لینکی قرار می دهم که تک تک این فیلد ها را توضیح داده باشد ، در پایین صفحه ای که بعد از انتخا دکمه Select Fields مشاهده خواهید کرد را می بینید .
در قسمت directory مسیری که فایل های لاگ در آن نگهداری و ایجاد می شوند را می توانید مشاهده و تغییر دهید و در ادامه Encoding را می توانید مشاهده کنید که برای اینکه بتوانید در قالب استانداردهای بین المللی در نرم افزارهای گوناگون از این فایل ها استفاده کنید در قالب UTF-8 قرار گرفته است .
اما قسمت Log File Rollover قسمتی است که برای IIS تعیین می کند که چه مقدار فضا به این لاگ فایل ها اختصاص بدهد و از جهتی چه مدت این لاگ ها را در خود نگهداری کند. تنظیمات این قسمت به وضوح مشخص می باشد .فقط یک نکته را در نظر داشته باشید ، معمولا برنامه نویس ها در برنامه های خود باگ دارند و همین باگ ممکن است باعث لاگ برداری زیاد وب سرور IIS از اتفاقات بوقوع پیوسته در وب سرور می شود
به خاطر داشته باشید اگر به لاگ برداری نیاز ندارید آن را غیر فعال کنید به خدا آخرش هم به این لاگ ها نگاه نمی کنید پس لاگ نگیرید ، من نرم افزار تحت وب ای را در یکی از سازمان های دولتی پیاده سازی کردم که پایگاه داده نرم افزار حدود 1 گیگا بایت ظرفیت داشت اما لاگ های IIS به دلیل وجود باگ در این نرم افزار در حدود 40 گیگا بایت بود !!!!
آیا تا به حال به این موضوع فکر کرده این که IIS از کجا متوجه می شود که بایستی یک فایل را در هنگام درخواست بصورت آنلاین به شما نمایش دهد یا در قالب یک فایل دانلودی در اختیار کاربران قرار دهد ؟ IIS با استفاده از قابلیتی به نام MIME Types اینکار را انجام می دهد ، در واقع MIME Types به IIS می گوید که با هر پسوند یا Extension ای که بر روی وب سرور IIS قرار می گیرد چگونه برخورد کند.
وقتی کاربری به سرور یک درخواست ارسال می کند سرور درخواست آنرا بررسی و تحلیل می کند و بر اساس پسوند فایل درخواستی کاربر ( مثلا یک فایل zip ) آن فایل را برای دانلود در اختیار کاربران قرار می دهد ، همانطور که در تصویر پایین مشاهده می کنید IIS به پسوند هایی که در قالب application به سرور معرفی شده اند
به عنوان یک فایل برای دانلود نگاه می کند نه محتوایی برای نمایش ، شما با حذف و یا اضافه کردن پسوند های مختلف به این قسمت می توانید فایل های خاص خود را با پسوند های مشخص خود به IIS در جهت ارائه به کاربر در قالب فایل دانلودی معرفی کنید . در صورتیکه IIS نداند با هر یک از پسوند های موجود در MIME چه کند سعی می کند محتوای آن را در قالب وب نمایش دهد .
در تصویر بالا شما با استفاده از گزینه Add در سمت راست و بالای تصویر می توانید پسوند های مورد نظر خود برای دانلود یا عدم دانلود را مشخص کنید ، در اینجا هر یک از پسوند هایی که با MIME Type از نوع application مشخص شده اند به عنوان یک فایل دانلودی برای IIS محسوب می شوند . برای درک بهتر موضوع پسوند csv را یکبار از این قسمت حذف کنید و سپس در مرورگر خود در خواست فایلی با همان پسوند را بدهید ، سرور به جای اینکه فایل را برای دانلود در اختیار شما قرار دهد ، آن را بصورت آنلاین به شما نمایش خواهد داد.
در این قسمت شما با قابلیت های وب سرور و مدیریت مقدماتی Binding ها و انواع مختلف آنها ، روش ها و انواع Log برداری از وب سرور ، ایجاد پوشه های مجازی یا Virtual Directory ها در وب سرور و همچنین تعیین پسوند فایل های دانلود یا MIME Type ها آشنا شدید ، البته حتما برای درک بهتر این مطالب بایستی بصورت عملی با این امکانات در محیط واقعی درگیر شوید ، در ادامه مقالات و شماره چهارم این سری قسمت شما را application pool ها ، Worker Process ها ، Recycling و تنظیمات مربوط به این امکانات وب سرور آشنا خواهیم کرد ، امیدوارم که این قسمت مورد توجه شما قرار گرفته باشد .
در این قسمت شما را با مبحث Application Pool ها و Worker Process ها آشنا می کنیم ، این قسمت چگونگی برخورد وب سرور IIS در مقابل درخواست های وب یا Web Request هایی که از طرف کلاینت ها دریافت می شود را بررسی می کند . در اینجا با یک سری از مسائل امنیتی مربوط به Application Pool ها و Worker Process ها آشنا خواهیم شد
و همچنین کمی در خصوص شیوه دسترسی وب سرور IIS به منابع خارجی یا External Resources نیز صحبت خواهیم کرد و در خصوص پایداری و سلامت ( Stability and Health ) مربوط به Application Pool ها صحبت می کنیم .اما در ابتدا بایستی شما را با مفهوم Application Pool آشنا کنیم
سپس به این مسئله خواهیم پرداخت که ارتباط بین Application Pool ها و Worker Process ها از چه طریق انجام می شود و یک ایده جالب به نام Recycling را نیز به شما معرفی خواهیم کرد ، در واقع Recycling به این فرضیه می پردازد که بسیاری از برنامه نویس ها وب ، کدهای خوبی تولید نمی کنند و همین امر باعث بالا رفتن و دچار مشکل شدن سرور خواهد شد ، شما می توانید برای وب سرور IIS تعیین کنید که با اینگونه نرم افزارهای تحت وب مشکل دار چگونه برخورد کند.
در قسمت اول از این سری مقالات اشاره کردیم که زمانیکه IIS درخواستی را از کلاینت برای وب دریافت می کند ابتدا این درخواست در Kernel Mode توسط Http Listener دریافت می شود و بر حسب نوع درخواست Http Listener درخواست را به وب سایت مورد نظر منتقل کرده و در همین لحظه یک فایل اجرایی بر روی CPU ایجاد می شود که فرآیند دسترسی به منابع وب سایت و پردازش های لازم آن را انجام می دهد
به این فایل اجرایی همانطور که اشاره شد یک Worker Process گفته می شود . تمامی این پردازش ها یا Process ها در قالب یک Application Pool مدیریت و نگهداری می شوند و در کلامی دیگر Application Pool ها حاوی Worker Process هایی هستند که توسط وب سرور ایجاد می شود ، هر Application Pool می تواند در خود یک یا بیش از یک عدد Worker Process داشته باشد.
اما برای درک بهتر واژه Application Pool چند نکته را در نظر داشته باشید . مفهوم Application Pool از وب سرور IIS نسخه 6.0 مطرح شد، Application Pool ها برای تفکیک کردن Worker Process هایی بکار می روند که از تنظیمات و منابع مشترکی برای ارائه سرویس وب استفاده می کنند . با استفاده از یک Application Pool شما می توانید یک نرم افزار کاربردی تحت وب یا یک وب سایت را در قالب یک مجموعه ایزوله شده برای بدست آوردن امنیت ، دسترسی پذیری و قابلیت اطمینان بهتر اجرا کنید.
به گونه ای که اگر وب سایت های مختلفی در یک وب سرور وجود دارد با به مشکل خوردن یک وب سایت ، وب سایت های دیگر دچار مشکل نخواهند شد زیرا از Application Pool های مختلفی استفاده می کنند. منظور از منابع در اینجا RAM و CPU سرور می باشد
شما به تنهایی می توانید یک وب سایت را با استفاده از Application Pool مربوط به آن Restart کنید بدون اینکه بخواهید کل وب سرور IIS را Restart کنید. توجه کنید که هر Application Pool می تواند بیش از یک Worker Process را در خود جای دهد که در خصوص این موضوع در ادامه توضیحاتی خواهیم داد. اما وظایف کلی Application Pool ها را می توانید به موارد زیر تقسیم بندی کنید :
به تصویر زیر که از Task Manager وب سرور بعد از ایجاد یک Worker Process گرفته شده است توجه کنید . همانطور که مشاهده می کنید بعد از ارسال درخواست وب به وب سرور این Process با نام w3wp.exe در CPU اجرا می شود ، جالب اینجاست که در جلوی همین Worker Process نام Application Pool ای که با استفاده از آن اجرا شده است نیز ذکر شده است که در اینجا ما از Application Pool پیشفرض وب سرور IIS استفاده کرده ایم . در ادامه شما را با جزئیات Application Pool ها آشنا خواهیم کرد.
برای دستیابی به Application Pool های موجود بر روی وب سرور کافیست به محض ورود به کنسول مدیریتی IIS بر روی گزینه Application Pools کلیک کرده تا تمامی Application Pool های موجود بر روی سرور را مطابق شکل زیر مشاهده کنید .
در تصویر فوق شما سه عدد Application Pool مشاهده می کنید که یکی از آنها به نام DefaultAppPool در حالت Stopped قرار دارد. توجه کنید که در صورتیکه هر یک از Application Pool های موجود در این قسمت در حالت Stopped قرار گرفته باشند ، کلیه وب سایت هایی که از این Application Pool استفاده می کنند خارج از سرویس می شوند و نمی توانند فعالیت کنند و در صورتیکه شما این وب سایت را باز کنید خطای 503 Service Unavailable را دریافت خواهید کرد
دلیل کاملا منطقی برای این موضوع وجود دارد ، هیچ فایل اجرایی برای اجرا تولید نشده است و پردازشی هم ایجاد نمی شود . برای اطمینان از این موضوع به تصویر بالا دقت کنید ، DefaultAppPool به وب سایت پیشفرض IIS که Default Web Site می باشد مرتبط شده است و Stopped است ، و ما در اینجا این وب سایت را Browse می کنیم و نتیجه تصویر پایین است .
فکر می کنم تا حدودی با مفهوم و کارکرد Application Pool ها آشنایی پیدا کردید ، در اینجا می خواهیم سه قسمت مهم از این Application Pool ها را به شما معرفی کنیم ، قسمت اول Basic Settings و قسمت بعدی Advanced Settings و در نهایت به معرفی Recycling خواهیم رفت ، برای اینکه بتوانید به این موارد دسترسی داشته باشید هم می توانید از طریق قسمت پنل سمت راست Application Pool ها و هم با راست کلیک کردن بر روی Application Pool مورد نظر خود به این قسمت ها دسترسی پیدا کنیم ، ابتدا به بررسی قسمت Basic Settings می پردازیم .
در اینجا ما Basic Settings مربوط به DefaultAppPool را باز کرده ایم ، در قسمت .NET Framework Version شما می توانید تعیین کنید که وب سایت شما از چه نسخه ای از .NET Framework استفاده کند ، در صورتیکه وب سایت شما استاتیک است و کد اجرایی در آن وجود ندارد شما می توانید از این قسمت گزینه No Managed Code را انتخاب کنید.
در قسمت Managed Pipeline mode شما شما دو گزینه دارید که به نام Classic Mode و Integrated Mode مشخص می باشند ، در اینجا شما به IIS می گویید که با کد اجرایی که در وب سایت وجود دارد به چه شکل برخورد کند ، برای درک بهتر موضوع هر دوی این گزینه ها را با هم بررسی می کنیم :
این مد اجرایی مربوط به IIS نسخه 6 و قبل تر از آن بود که در آنجا IIS برای اجرای کدها صرفا از ISAPI Extensions و ISAPI Filters بصورت مستقیم استفاده می کرد . در واقع اگر شما نرم افزاری را با استفاده از فناوری ASP.NET نوشته بودید در اینجا IIS با کدهای ASP.NET صرفا به عنوان یک Extension از ISAPI به نام aspnetisapi.dll و یک ISAPI Filter به نام aspnetfilter.dll برخورد می کرد.
در اینحالت در واقع IIS به کدهای ASP.NET به عنوان یک Plug-in برای ISAPI نگاه می کند و با احتیاط و در اصطلاح در حالت جعبه سیاه یا Black Box با این کد برخورد می کند ، در نتیجه در اینجا کدهای ASP.NET تفاوت چندانی با کدهای PHP و زبان های مشابه برای IIS ندارند ، این مد معمولا برای برنامه های قدیمی استفاده می شود که ترجیحا هیچوقت از آن استفاده نکنید. پیشنهاد می کنم در صورتیکه نرم افزار تحت وبی دارید که قدیمی است و نیاز به این حالت دارد در یک ماشین مجازی ویندوز سرور 2000 را نصب کنید و بر روی آن سرویس را ارائه دهید و امنیت IIS اصلی خود را با اینکار به خطر نیندازید.
بر خلاق حالت Classic حالت Integrated که در وب سرور IIS نسخه 7 معرفی شد بسیار بسیار با ASP.NET هماهنگ و مخلوط شده است . در این حالت ASP.NET می تواند تمامی درخواست ها را مشاهده و آنها را تغییر و دستکاری کند. در حالت Integrated Mode دیگر ASP.NET به عنوان یک Plug-in خارجی در IIS نیست
بلکه جزئی از خود وب سرور IIS محسوب می شود. در این حالت ماژول های HttpModules مربوط به ASP.NET تقریبا قدرتی شبیه یا معادل ISAPI Filter ها و همچنین HttpHandlers های ASP.NET قدرتی معادل قدرت ISAPI Extension ها را پیدا کرده اند. توجه کنید که در این حالت ASP.NET جزوی از IIS محسوب می شود .
در ادامه بر روی گزینه Advanced Settings کلیک کرده و تصویری مشابه آنچه در پایین مشاهده می کنید را خواهید دید ، در اینجا ما بیشتر بصورت کلی موارد موجود را توضیح خواهیم داد و بعضا مواردی که اهمین چندانی در این مسئله ندارند را توضیح نخواهیم داد ، قسمت Advanced Settings به 6 قسمت اصلی General ، CPU ، Process Model ، Process Orphaning ، Rapid-Fail Protection و Recycling طبقه بندی می شود که در ادامه با مهمترین تنظیماتی که در هر یک از این قسمت ها می توانید مشاهده کنید آشنا خواهید شد.
در قسمت Regular Time Interval شما به IIS می گویید که در طی مدت زمان 1740 دقیقه بعد از ایجاد شدن یک Worker Process در هر صورت به ادامه کار آن خاتمه دهد . شما معمولا زمانی از این گزینه استفاده می کند که یک نرم افزار کاربردی تحت وب دارید که مشکلات زیادی را بعد از اجرا شدن در مدت زمان طولانی ایجاد می کند.
بر اساس مواردی که در خصوص این نرم افزار می دانید شما می توانید تعیین کنید که کلیه Worker Process های این Application Pool طی این مدت زمان از بین رفته و مجددا ایجاد شوند . با اینکار از به مشکل خوردن نرم افزار خود قبل از بروز مشکل جلوگیری کرده اید.
در قسمت Fixed Number Of Requests شما به IIS می گویید که در صورتیکه درخواست های ارسالی به این Worker Process بیش از اندازه تعیین شده بود ، سایر درخواست ها را Recycle کند ، معمولا در مواردی از این قسمت استفاده می کنید که می دانید نرم افزار تحت وب شما با دریافت مثلا 1000 درخواست شروع به بروز مشکل می کند و با اینکار می توانید از این مشکلات جلوگیری کنید ، برای انجام اینگونه تنظیمات شما بایستی نرم افزار خود را به خوبی شناخته باشید. سایر موارد هم از عنوانشان کاملا پیداست که چه نوع کارایی در سرور IIS و ساختار Recycling دارند.
در این قسمت شما با مفهوم Application Pool ها و Worker Process ها و چگونگی ارتباط اینها با یکدیگر آشنا شدید و از طرفی با تظیمات مختلفی که برای هر یک وجود دارند آشنا شدید. در نهایت با معرفی قابلیت بسیار جالب Recycling جهت مدیریت بهتر خطاهای نرم افزاری بر روی سرور آشنا شدید . در قسمت بعدی شما را با مواردی از قبیل ISAPI Extension و ISAPI Filters و تفاوت بین این دو آشنا خواهیم کرد و از طرفی با CGI و Fast CGI و ویژگیهای آنها در وب سرور آشنا خواهیم کرد. امیدوارم که مورد توجه شما قرار گرفته باشد.
در این قسمت برای شما روش های توسعه یا Extend کردن وب سرور IIS با استفاده از Extension های آن برای بالا بردن کارایی های آن را توضیح خواهیم داد. خوب برای اینکه کارایی های IIS را توسعه دهیم روش های متعددی وجود دارد که از آن جمله می توان به استفاده از ISAPI Extension ها ، ISAPI Filter ها و همچنین CGI و همچنین ASP و PHP اشاره کرد. در ابتدای این قسمت ابتدا به بررسی ماهیت Extension و منظور از بکار بردن واژه Extension برای IIS اشاره می کنیم و سپس به معرفی ISAPI Extension و ISAPI Filter می رسیم .
در این قسمت به تفاوت های بین Filter ها و Extension ها را توضیح خواهیم داد . در نهایت کمی در خصوص CGI و سایر Extension های موجود صحبت خواهیم کرد و بصورت ویژه در خصوص ASP.NET و PHP توضیحاتی را ارائه می دهیم . در همینجا متذکر می شوم که این قسمت برای معرفی این قابلیت ها می باشد و در آن چیزی در خصوص شیوه برنامه نویسی و کد نویسی برای Extension ها اشاره نشده است ، صرفا هدف معرفی ماهیت این موجودیت ها در IIS می باشد .
در اینجا شاید برای شما هم این سئوال پیش بیاید که اصلا Extension چیست و در IIS به چه معناست ؟ جالب اینجاست که با اینکه چند وقتی در اینترنت و چندین کتاب مختلف در خصوص مفهوم Extension جستجوهایی انجام دادم اما در هیچکدام تعریف درستی از Extension ارائه داده نشده بود
اما در نهایت به یک تعریف و مثال برای باز کردن مفهوم Extension ها در IIS رسیدم ، Extension ها ابزارهای جانبی هستند که به وب سرور IIS این امکان را می دهند که قابلیت هایی بیش از آنچه که بصورت پیشفرض برایش تعریف شده داشته باشد .
این مثال را می توان به سیستم عامل ویندوز ربط داد ، شما زمانیکه سیستم عامل ویندوز را خریداری می کنید ( البته نه از سوپر مارکت بلکه از نمایندگی مایکروسافت ) ابزارهایی که بر روی آن وجود دارند یک سری امکانات پیشفرض را به شما ارائه می دهند
برای مثال ابزار WordPad برای تایپ مطالب ، ابزار Paint برای کشیدن نقاشی یا طرح و .... در بسیاری اوقات این ابزارها کار شما را راه می اندازند و شما نیازی به ابزار جانبی نخواهید داشت ، اما برخی اوقات نیازهای شما فراتر از آن چیزی است که ویندوز در اختیار شما قرار می دهد.
بنابراین مجبور می شوید که یک نرم افزار تخصصی را در این زمینه خریداری کنید که البته با سیسنم عامل ویندوز شما هماهنگی دارد ، مثلا به جای استفاده از WordPad از Office Word استفاده می کنید. این دقیقا همان چیزی است که در خصوص Extension ها در IIS وجود دارد
شما برای اینکه بتوانید از قابلیت های پیشرفته IIS استفاده کنید از Extension هایی که برای اینکار ساخته شده اند استفاده می کنید ، البته برخی از این Extension ها در خود IIS بصورت پیشفرض موجود هستند و برخی دیگر بایستی بر روی آن نصب شده و یا برای آن کدنویسی شوند. Extension ها را می توان به نوعی ماژول های IIS نیز عنوان کرد ، شما اگر بخواهید به قابلیت های IIS چیزی اضافه کنید ، برای IIS یک Extension جدید می نویسید.
در پاراگراف قبلی شما مفهوم یک Extension برای IIS را متوجه شدید ، اما قبل از اینکه برای شما ISAPI Extension را تشریح کنیم بهتر است بدانیم که ISAPI چیست ؟ کلمه ISAPI مخفف شده کلمه Internet Server Application Programming Interface است و در واقع یک نوع API است که به برنامه نویس ها اجازه توسعه و گسترش امکانات و قابلیت های موجود در وب سرور IIS را می دهد.
ISAPI بصورت ویژه برای کارکردن و کاربرد در IIS طراحی شده است اما صرفا به این وب سرور محدود نمی شود و وب سرورهای دیگر نظیر Apache نیز برای اینکه بتوانند از نرم افزارهای کاربردی تحت وب نوشته شده به زبان ASP.NET پشتیبانی کنند از یک ماژول ISAPI استفاده می کنند.
وب سرور مایکروسافت یا همان IIS از مجموعه ای از زیر برنامه ها یا Sub-Application ها تشکیل شده است که بسیار بسیار قابل تنظیم و تغییر هستند. ASP.NET یکی از همین قسمت های IIS محسوب می شود که به یک برنامه نویس این اجازه را می دهد که بتواند نرم افزارهای کاربردی تحت وب یا وب سایت های خود را با زبان برنامه نویسی مورد علاقه خود ( VB.NET,C#,F# ) که به وسیله تکنولوژی Microsoft .NET پشتیبانی می شود بنویسند.
اما این زبان های برنامه نویسی ، زبان های سطح بالا هستند . ISAPI یک سیستم برنامه نویسی بسیار سطح پایین تر از اینها می باشد که به برنامه نویس امکان کدنویسی کدهایی با کارایی و سرعت اجرا بالاتر و البته سادگی کمتر را می دهد. نرم افزارهایی که برای توسعه یا Extend کردن IIS مورد استفاده قرار میگیرند و در واقع به ISAPI Extension معروف هستند با زبان هایی مانند C و یا C++ نوشته می شوند.
ISAPI از دو جزء تشکیل شده است ، Extensions و Filters . اینها تنها مواردی هستند که می توان یا استفاده از ISAPI Programming آنها را توسعه و برایشان کد نویسی کرد. هر یک از این دو مورد بایستی ابتدا در قالب یک فایل DLL برای ویندوز کامپایل شده و در وب سرور IIS ثبت یا Register شوند تا بتوان از آنها در IIS استفاده کرد.ISAPI Application ها را می توان با استفاده از هر زبان برنامه نویسی که بتوان از آن خروجی استاندارد توایع C را گرفت .
می توان برنامه نویسی کرد که در اینجا معمولا به زبانهای C و C++ و Delphi نوشته می شوند. یک سری کتابخانه یا Library در زبان های برنامه نویسی وجود دارند که امکانات ویژه ای برای برنامه نویس برای ISAPI ها قراهم کرده اند که از آن جمله می توان به Intraweb در Delphi اشاره کرد. باز هم تاکید میکنم که بحث ما در این قسمت برنامه نویسی برای ISAPI ها نیست بلکه صرفا می خواهیم دیدگاهی نسبت به این Extension در IIS داشته باشید.
ISAPI Extensionها در واقع نرم افزارهایی هستند که بر روی IIS قرار دارند ، آنها به تمام فعالیت ها و کارکردها و امکاناتی که توسط IIS ارائه می شوند دسترسی کامل دارند . ISAPI Extension ها در قالب فایل های DLL بر روی IIS لود می شوند و در نهایت توسط خود وب سرور IIS کنترلر می شوند.
کلاینت ها همانطور که به یک صفحه وب استاتیک HTML دسترسی پیدا می کنند می توانند به ISAPI Extension ها نیز دسترسی پیدا کنند. ISAPI Extension ها می توانند در قالب مدیریت کردن پسوند یک فایل در وب سرور ، یک پوشه در وب سرور و یا حتی یک سایت کامل در وب سرور بکارگیری شوند . ASP ، ASP.NET ، ColdFusion ، Perl ISAPI و PHP از نمونه ISAPI Extension های شناخته شده ای هستند که در IIS پشتیبانی می شوند.
ISAPI Filter ها برای تغییر دادن و بالابردن کارایی فعالیت ها و سرویس های IIS استفاده می شوند. همانطور که از نام این نوع Extension مشخص است برای Filter کردن درخواست هایی که به وب سرور ارسال می شوند استفاده می شوند . آنها همیشه بر روی وب سرور IIS فعال هستند و تمامی درخواست ها را با توجه به قوانینی که برای آنها تعیین شده است Filter می کنند مگر اینکه درخواست مورد نظر نیازمند فرآیند پردازشی خاصی باشد.
Filter ها به گونه ای برنامه نویسی می شوند که می توانند هم ترافیک ورودی و هم ترافیک خروجی را آزمایش و تغییر دهند. Filter ها در قالب فایل های DLL به IIS معرفی و در آن ثبت می شوند و IIS می تواند آنها در در دو سطح Site و Server اعمال کند .
به سطح Server در اصطلاح Global Level هم گفته می شود و هر چیزی که در این سطح اعمال شود بر روی کلیه سایت های موجود بر روی سرور اعمال خواهد شد. Filter ها زمانی شروع به کار می کنند که یک Worker Process ایجاد شود و در همین لحظه شروع به گوش دادن به درخواست هایی که برای سایت ای که بر روی آن نصب شده است می کند. وظایف معمولی که توسط ISAPI Filter ها انجام می شود به شرح زیر است :
خوب برای اینکه ساختار کارکرد ایندو را به خوبی درک کنیم ابتدا به بررسی تفاوت بین ایندو می پردازیم . خوب در اولین مرحله این فرآیند یک کلاینت به وب سرور یک درخواست وب تحت شبکه ارسال می کند و این درخواست توسط Kernel Mode Listener یا همان Http Listener دریافت می شود.
در اینجا Kernel Mode Listener بررسی می کند که درخواست دریافت شده اجازه استفاده از منابع کدامیک از وب سایت های موجود در IIS را دارد ، سپس بررسی می کند که در این وب سایت از کدامیک از Application pool های موجود و همچنین worker Process های فعال استفاده می شود و در نهایت درخواست رسیده از طرف کلاینت را در درون صف پردازشی Worker Process یا Process Queue قرار می دهد.
خوب در این مرحله بعد از اینکه نوبت به پردازش این درخواست رسید ، Worker Process مورد نظر درخواست را دریافت کرده و در اینجاست که ISAPI Filter مربوطه به این درخواست در قالب یک فایل اجرایی شروع به کار می کند . خوب همانطور که اشاره شد Filter ها در IIS می توانند درخواست ها را دریافت و آنها را تغییر دهند
برای مثال آنها می توانند چهره URL ها را عوض کنند و یا در برخی اوقات می توانند اطلاعات مربوط به Cookie های موجود در درخواست ها را تحلیل کرده و اطلاعات مورد نظر خود را از آن دریافت کنند. توجه کنید که در این مرحله هیچگونه پردازشی بر روی درخواست انجام نشده است و در واقع این یک مرحله قبل از انجام پردازش محسوب می شود . در واقع در اینجا filter ها یک مرور اولیه بر روی درخواست ها انجام می دهند.
خوب در اینجا توجه کنید که اگر درخواست کلاینت یک درخواست صفحه وب استاتیک باشد هیچگونه نیازی به انجام پردازش نیست و IIS می داند که درخواست را بایستی به کدامیک از وب سایت های موجود ارسال کند. اما اگر درخواست کلاینت برای وب سایت های داینامیک بود که با استفاده از زبان های PHP یا ASP نوشته شده اند و دارای Managed Code باشند ، در اینجاست که درخواست ها نیاز به پردازش دارند و درخواست به Extension ها ارسال می شود تا فرآیند پردازشی آنها انجام شود. خوب در اینجا فرض کنید که در URL آدرس دارای پسوند PHP می باشد.
در اینجا بعد از انجام عملیات اولیه توسط Filter ها درخواست به Extension ای که مربوط به پردازش پسوند های PHP است ارسال می شود و این Extension با توجه به دستوراتی که به آن داده اند پردازش را بایستی بر روی این درخواست انجام دهد .
بعد از اینکه فرآیند پردازشی توسط Extension انجام شد ، درخواست مجددا به سمت IIS ارسال می شود و IIS نیز درخواست کلاینت را پاسخگویی می کند.ممکن است در یک فرآیند درخواست چندین Extension همزمان فراخوانی شوند و این کاملا به نوع فایلی که توسط کلاینت درخواست شده است بستگی دارد.
برای مثال ممکن است در یک درخواست یک صفحه ASP.NET فراخوانی شود که نیاز به Compression و همچنین لاگ برداری دارد ، در این زمان سه Extension همزمان برای انجام این فرآیند فراخوانی می شوند ، جالب اینجاست که شما می توانید ترتیب اجرای این Extensions ها را برای IIS مشخص کنید ، این مورد برای Filter ها نیز صادق می باشد. نکته مهمی که بایستی در نظر داشته باشید این است که همیشه Filter ها با زبان ISAPI نوشته می شوند اما Extension ها می توانند به زبان های مختلفی از جمله CGI ، ISAPI یا Fast CGI نوشته شوند.
CGI مخفف کلمه Common Gateway Interface است و یک استاندارد برای ایجاد نرم افزارهای تحت وب در قالب فایل های اجرایی می باشد. فایل هایی که با استفاده از این استاندارد تولید می شوند به CGI Scripts یا ساده تر بگوییم CGI ها معروف هستند که معمولا با یک زبان اسکریپت نویسی نوشته می شوند.
وب سرورهایی که از CGI ها پشتیبانی می کنند می توانند URL ها را به گونه ای ترجمه کنند که در نهایت درخواست ها به یک اسکریپت CGI اجرایی ختم شود. اگر دقت کرده باشید در ریشه پوشه های وب سروهای لینوکسی پوشه ای به نام cgi-bin وجود دارد .
تمامی فایل های اجرایی که در قالب CGI هستند برای مسائل امنیتی در این پوشه قرار می گیرند . همانطور که اسکریپت های اجرایی می توانند کارها را سریعتر انجام دهند به همان اندازه نیز می توانند خطرناک باشند ، تصور کنید که با استفاد از همین دستورات اجرایی CGI یک اسکریپت مخرب در وب سرور فراخوانی و اجرا شود . CGI به همین دلایل و همچنین بوجود آمدن زبان های برنامه نویسی وب جدید و امنیت بیشتر این زبان ها کم کم از استفاده افتاد و هم اکنون استفاده چندانی از این تکنولوژی در وب سرورها نمی شود .
هر چند که با وجود Extension های مربوط به CGI در وب سرور IIS این قابلیت وجود دارد که شما بتوانید از این اسکریپت ها استفاده کنید . اما نسل بعدی CGI به نام Fast CGI می باشد که این Extension که برای IIS هم وجود دارد همانند اسمش سریعتر از CGI های معمولی اجرا می شوند و قطعا بار کاری کمتری را بر روی وب سرور قرار می دهد .
تا اینجا در خصوص تئوری های مباحثی همچون Extension ها ، ISAPI ، Filter ، CGI و ... صحبت کردیم ، اما این Extension ها و Filter ها در کجای وب سرور IIS قرار دارند و ما چگونه می توانیم به آنها دسترسی داشته و آنها را تغییر بدهیم ؟ همانطور که اشاره کردیم در این قسمت صرفا به موجودیت این موارد اشاره می کنیم
و انجام هر گونه تغییرات اساسی در این خصوص نیازمند دانش فنی برنامه نویسی در این حیطه می باشد ، بنابراین صرفا به نمایش محل انجام تنظیمات آنها کفایت می کنیم . در تصویر پایین شما می توانید قسمت هایی همچون Modules ، ISAPI Filters ، ISAPI and CGI Restrictions ، CGI ، Handler Mappings ، Fast CGI Settings و ASP در کنسول وب سرور IIS مشاهده کنید .
در این قسمت به بررسی مفاهیمی مثل ISAPI ، Extension ، Filter ، CGI ، Fast CGI و ... پرداختیم و کاملا با مفهوم آنها آشنایی پیدا کردیم ، در خصوص آموزش های فنی در این مبحث همانطور که اشاره شد ارتباط چندانی به بحث مدیریت وب سرور IIS ندارد و کاملا یک مبحث برنامه نویسی می باشد و به همین دلیل صرفا به محل قرار گیری آنها در IIS اشاره کردیم . در ادامه این سری مقالات با مفاهیم راه اندازی یک فایل سرور FTP آشنا خواهیم شد و به شما آموزش می دهیم که چگونه یک FTP Server بر روی وب سرور IIS راه اندازی کنید
در ادامه مقالات مجموعه آموزش وب سرور IIS امروز نوبت به نصب و راه اندازی سرویس FTP و انجام تنظیمات مربوط به آن رسیده است . به دلیل گسترده بودن مبحث FTP سرور این قسمت را به دو قسمت راه اندازی و انجام تنظیمات تقسیم می کنیم ، در ابتدا با ماهیت اصلی سرویس FTP آشنا خواهیم شد و شما با نوع کاربرد و همچنین مفاهیم امنیتی مربوط به FTP آشنا خواهید شد .
سپس به بررسی انواع نسخه های FTP موجود بر روی سیستم عامل های کاربردی روز می پردازیم و در ادامه به شما شیوه نصب سرویس FTP و معرفی قسمت های مختلف آن را نمایش خواهیم داد . در این دو قسمت شما را با مدیریت مقدماتی FTP سرور از جمله Basic Setting ، Bindings ، Virtual Directories ، Logging ، Request Filters ، Directory Browsing و در نهایت User Isolation آشنا خواهیم کرد.
پروتکل انتقال فایل یا File Transfer Protocol که بیشتر آنرا به نام FTP می شناسیم یک پروتکل استاندارد شبکه است که برای انتقال فایل ها از یک هاست به هاست دیگر توسط شبکه هایی که مبتنی بر پروتکل TCP کار می کنند مانند اینترنت ، بکار می رود . FTP دارای یک معماری کلاینت – سرور یا client-server است و از دو ارتباط یکی برای کنترل و دیگری برای داده ها بین کلاینت و سرور استفاده می کند. کاربرانی که از پروتکل FTP استفاده می کنند چندین روش برای احراز هویت دارند .
ابتدا اینکه یک نام کاربری و رمز عبور را در قالب یک فرم وارد سرور کنند که این رمز عبور معمولا بصورت رمزنگاری نشده و Clear Text رد و بدل می شود ، و روش دوم استفاده از معماری Anonymous Authentication یا احراز هویت بدون نام کاربری و رمز عبور است که معمولا در شرایطی استفاده می شود که سرور نیز به شما اجازه استفاده از آن را بدهد. برای اینکه بتوانیم ارتباطی امن بین کلاینت و سرور برقرار کنیم و در واقع نام کاربری و رمز عبور و همچنین محتویات بسته اطلاعاتی خود را رمزنگاری کنیم .
FTP به شما اجازه استفاده همزمان از پروتکل های رمزنگاری SSL/TLS را می دهد. در برخی اوقات از پروتکل SSH که مخفف کلمه Secure Shell می باشد نیز استفاده می شود که با SSL ساختار متفاوتی دارد . هرگاه ارتباطی از نوع FTP با پروتکل SSL رمزنگاری شود به نام FTPS و هرگاه با SSH امن و رمزنگاری شود به SFTP گفته می شود.
ما زمانی از یک FTP سرور استفاده می کنیم که بخواهیم به کاربران خود این اجازه را بدهیم که بتوانند فایل های خود را از طریق سایت انتقال دهند . چه سایت شما در یک شبکی اینترانت محلی و یا در شبکه اینترنت باشد شیوه پیاده سازی و قرار دادن فایل ها و برداشتن آنها توسط سرور FTP تفاونی ندارد و ساختار کاری یکسان است .
در یک ساختار ساده FTP سرور شما فایل ها را در قالب پوشه در FTP سرور قرار می دهید و کاربران می توانند با برقراری یک ارتباط FTP با استفاده از نرم افزارهای FTP Client و یا یک مرورگر FTP-Enabled آنها را بین خود و سرور انتقال دهند. در این قسمت شما با راه اندازی یک FTP سرور ساده آشنا خواهید شد و در انتها می توانید برای سازمان یا شخص خود یک FTP سرور شخصی ایجاد کنید.
در واقع سرویس FTP به نوعی یک Extension برای IIS محسوب می شود . در IIS نسخه 7 شما دو نوع FTP سرور دارید . نسخه 7 سرور FTP در ویندوز ویستا و ویندوز سرور 2008 موجود است و نسخه 7.5 سرور FTP در ویندوز سرور 2008 نسخه R2 موجود است .همچنین شما می توانید نسخه قابل دانلود و نصب این نسخه از FTP سرور را از سایت مایکروسافت دانلود کرده و بر روی وب سرور خود نصب کنید.
توجه کنید که FTP سروری که در ویندوز ویستا و ویندوز سرور 2008 استفاده می شود همان FTP سروری است که در سرویس IIS نسخه 6 مورد استفاده قرار می گرفته است و تغییرات چندانی در نسخه جدیدتر IIS بر روی آن انجام نشده است .
دقیقا به همین دلیل است که زمانیکه شما در ویندوز اقدام به نصب FTP سرور در IIS نسخه 7 می کنید بایستی بصورت همزمان IIS Manager 6.0 و همچنین Compatibility Tools را نیز نصب کنید تا بتوان از آنها در ویندوز ویستا و ویندوز سرور 2008 استفاده کرد. FTP نسخه 7.5 همانطوری که اشاره شد در ویندوز سون و ویندوز سرور 2008 نسخه R2 موجود است ، این قسمت مربوط به نصب سرویس FTP بر روی ویندوز سرور 2008 است که کمی با ویندوز سرور 2008 نسخه R2 متفاوت است . برای نصب FTP سرور بر روی ویندوز سرور 2008 از طریق زیر اقدام کنید :
1.از طریق منوی استارت بر روی Administrative Tools کلیک کرده و Server Manager را باز کنید.
2.در صفحه Server Manager از قسمت Roles Summary بر روی Web Server ) IIS) کلیک کنید.
3.در قسمت Web Server ) IIS) بر روی Add Role Services کلیک کنید.
4.در قسمت Role Services گزینه FTP Server را انتخاب کنید ، با اینکار FTP Service و FTP Extensibility نصب خواهد شد.
5.بر روی Next کلیک کنید و در نهایت بر روی گزینه Install کلیک کنید.
خوب تا اینجا FTP سرور ما نصب شده است ، با توجه به اینکه FTP بر روی IIS نسخه 7 بصورت پیشفرض نصب نشده است ، در IIS نسخه 7.5 این سرویس بصورت پیشفرض start است ، این سرویس بصورت پیشفرض بعد از نصب سرویس خود را بر روی IIS فعال نخواهد کرد. به همین دلیل شما بایستی بعد از اینکه سرویس FTP را بر روی این سرور نصب کردید ، سرویس آنرا نیز Start کنید. شما همچنین بایستی مطمئن باشید که سرویس FTP در حالت Stopped یا Paused نباشد تا بتواند به درستی کار کند ، برای اینکه این سرویس را در ویندوز سرور 2008 Start کنید از طریق زیر عمل کنید :
1.از طریق منوی استارت به قسمت Administrative Tools و سپس به قسمت Server Manager بروید.
2.در صفحه Server Manager و از قسمت Roles Summary بر روی Web Server) IIS) کلیک کنید.
3.در قسمت Web Server ) IIS) قسمت system services را باز کنید و سرویس Microsoft FTP Service را start کنید.
بر خلاف ساختار وب سرور که بعد از نصب IIS یک وب سایت پیشفرض در IIS ایجاد می کند ، شما بعد از نصب سرویس FTP بر روی IIS هیچ سایت FTP پیشفرضی را مشاهده نخواهید کرد و بایستی از ابتدا آن را ایجاد کنید . در اینجا شما را با ایجاد یک سایت FTP ساده با استفاده از ویزارد اولیه ایجاد سایت FTP آشنا می کنیم . بعد از اینکه این سایت به درستی ایجاد شد در قسمت های بعدی به بررسی دقیقتر ساختار FTP و اجزای آن خواهیم پرداخت ، برای ایجاد یک سایت FTP ساده مراحل زیر را دنبال کنید :
1.وارد کنسول مدیریتی وب سرور IIS شوید.
2.با باز کردن قسمت Connections قسمت Sites را انتخاب کنید.
3.از قسمت Actions گزینه Add FTP Site را انتخاب کنید و یا بر روی قسمت Sites راست کلیک کرده و Add FTP Site را بزنید، با اینکار ویزارد ایجاد FTP سایت ظاهر خواهد شد.
4.در قسمت FTP Site Name نام سایت FTP را وارد کنید ، توجه کنید که این قسمت بخشی از همان Binding برای FTP می باشد و تفاوت آن با Binding ای که برای وب سایت ها وجود دارد در این است که تنها پروتکلی که در اینجا می توانید استفاده کنید FTP است.
5.در قسمت Physical Path محل قرارگیری سایتی که قرار است فایل های FTP شما در آنجا قرار بگیرد را نشان دهید.
6.بر روی Next کلیک کنید.
7.آدرس IP که می خواهید برای FTP سایت خود در نظر بگیرید را مشخص کنید.
8.گزینه No SSL را انتخاب کنید.
9.بر روی Next کلیک کنید.
10.گزینه Basic Authentication را انتخاب کنید.
11.از منوی بازشوی Allow Access To گزینه All Users را انتخاب کنید.
12.از قسمت Permissions گزینه Read و Write را انتخاب کنید.
13.بر روی Finish کلیک کنید.
تا اینجا شما یک FTP سرور را نصب کردید و توانستید یک FTP سایت نیز به آن اضافه کنید ، برای استفاده از این سایت صرفا کافیست در نرم افزار FTP Client خود که می تواند مرورگر وب شما باشد آدرس سایت را در قالب آدرس FTP به شکل ftp:\\ftp.tosinso.com وارد کنید تا از شما نام کاربری و رمز عبور مربوط به کاربران معتبر در سرور سئوال شود و برای شما FTP سرور آماده سرویس دهی شود .
توجه کنید که در همینجا بایستی به افرادی که می خواهید دسترسی بدهید ، در پوشه ای که در قسمت Physical Path معرفی شد بایستی دسترسی های مجاز NTFS Permission را نیز بدهید تا بتوانند به راحتی از این سرور استفاده کنند . بدیهی است که این مقدماتی برای راه اندازی FTP سرور بود و اگر می خواهید جزئیاتی که در نصب و راه اندازی یک FTP سرور و قابلیت های آن وجود دارد را مشاهده کنید به سراغ قسمت بعدی بروید ، در ادامه شما با تک تک تنظیماتی که می توانید برای یک FTP سرور انجام دهید آشنا خواهید شد هرچند تا همینجا شما توانسته اید FTP سایت خود را آماده سرویس دهی کنید.
همانطور که در قسمت قبلی هم گفتیم ابتدا FTP سرور را راه اندازی می کنیم و سپس به بررسی قابلیت ها و امکانات آن می پردازیم ، در این قسمت فرض را بر این گرفته ایم که شما یک FTP سایت را مانند همان چیزی که در قسمت قبلی مطالعه کردید راه اندازی کرده اید و الان می خواهید تنظیمات مربوط به آن را در سرور یا سایت FTP انجام دهید
تنظیمات متعددی برای FTP وجود دارد که در اینجا ما به بررسی تنظیمات مربوط به Authentication یا احراز هویت در FTP سرور ، Authorization یا تعیین حدود عملکرد کاربران در FTP سرور ، ایزوله سازی کاربران یا User Isolation در FTP سرور ، تعیین پیام دلخواه ورود به FTP ، تنظیمات Directory Browsing در FTP ، تنظیمات Firewall و در نهایت تنظیمات امنیتی SSL Setting می پردازیم.
احراز هویت اولین مرحله ای است که درخواست کاربر با توجه به نام کاربری و رمز عبوری که وارد کرده است بایستی تایید و پردازش شود ، احراز هویت در حقیقت هویت کاربری که به سرور متصل می شود را مشخص می کند . با توجه به مراحلی که در قسمت قبل انجام دادید ، در حال حاضر شما یک FTP سایت آماده به فعالیت دارید . اما توجه کنید که بسیاری از تنظیمات مربوط به FTP هنوز انجام نشده است و هدف اصلی این قسمت نیز باز کردن این تنظیمات است.
اگر قسمت های قبلی را مشاهده کرده باشید حتما می دانید که تنظیمات در وب سرور IIS در دو سطح سرور و سایت انجام می شوند و در اینجا نیز همین مصداق حاکم است . حتی اگر شما FTP را نصب نکرده باشید ، تنظیمات مربوط به آن در قسمت Site وجود دارند . قطعا این موضوع را می دانید که تنظیمات سرور بر روی تنظیمات سایت جایگزین می شوند و بنابراین برای تشریح بیشتر FTP ما تنظیمات خود را در قسمت Site انجام می دهیم .
در ابتدا به بررسی تنظیمات مربوط به احراز هویت یا Authentication در FTP می پردازیم . IIS برای سرویس FTP از دو نوع سرویس احراز هویت پشتیبانی می کند که به ترتیب Anonymous FTP authentication و Basic FTP Authentication نام دارد . این ساختار احراز هویت نسبت به مدل مشابه برای وب سایت ها ساده تر است.
اگر برای امن کردن منابع اطلاعاتی خود از روش احراز هویت Anonymous FTP Authentication استفاده می کنید بایستی توجه کنید که تمامی درخواست هایی که برای دسترسی به منبع مورد نظر به سرور ارسال می شود بلافاصله تایید می شود ، بدون اینکه سرور به کاربر درخواست وارد کردن نام کاربری یا رمز عبور را بدهد. اما توجه کنید که حتی در Anonymous Authentication نیز شما در واقع دارای یک نام کاربری و رمز عبور هستید .
برای Anonymous Authentication سرور IIS بصورت خودکار یک کاربر به نام IUSER_computername در سرور ایجاد می کند که در قسمت computername در واقع سرور نام این کاربر را بر اساس نام سروری که بر روی آن نصب شده است نامگذاری می کند ، به محض درخواست از سرور در قالب Anonymous Authentication این سرور است که بصورت خودکار نام کاربری و رمز عبور کاربر IUSER را برای ورود به سرور انتخاب می کند . اگر شما هر دو سیستم احراز هویت Anonymous Authentication و Basic Authentication را در FTP فعال کنید ، وب سرور IIS ابتدا تلاش می کند که توسط سیستم Anonymous کاربر را احراز هویت کند. برای فعال سازی روش احراز هویت Anonymous به شکل زیر عمل کنید :
اگر برای امن کردن منابع اطلاعاتی خود از FTP Basic Authentication استفاده کنید ، به محض ارسال درخواست کاربر برای دسترسی به منابع ، از وی یک نام کاربری و رمز عبور معتبر در سیستم عامل سرور ویندوز سئوال خواهد شد . در صورتیکه نام کاربری وارد شده صحیح نباشد سرور یک پیام خطا صادر خواهد کرد.
توجه کنید که FTP Basic Authentication با اینکه از کاربر در خصوص نام کاربری و رمز عبور درخواست می کند اما این نام کاربری و رمز عبور را بصورت رمزنگاری نشده یا به اصطلاح Plain Text رد و بدل می کند بنابراین بسادگی قابل شنود کردن در شبکه می باشد و همین دلیل باعث ضعیف بودن این سیستم احراز هویت می باشد هر چند که از anonymous امنیت بهتری دارد. برای فعال سازی Basic FTP Authentication به روش زیر عمل کنید :
عملیات Authorization پس از عملیات Authentication انجام می شود و در واقع قوانین استفاده از منابع اطلاعاتی را مشخص می کند . شما با استفاده از FTP Authorization Rules می توانید در قالب ارائه امکان Allow یا Deny منابع دسترسی یافته توسط کاربران خود را کنترل کنید .
این Rule ها از همان قوانین Rule های فایروال تبعیت می کنند ، هر کدام از Rule ها که در لیست بالاتر از همه قرار داشته باشد نسبت به سایر Rule ها دارای سطح اولویت بالاتری است و همچنین Rule ای که نمایانگر عمل Deny باشد قطعا بر Rule های Allow برتری و اولویت دارد.
همچنین شما با استفاده از صفحه Authorization می توانید اطلاعات مربوط به Rule ها اعم از Mode ، Users ، Roles و همچنین Permission های آنها را مشاهده کنید . برای اینکه درک بهتری از موضوع Rule ها داشته باشید می توانید با یک مثال جلو برویم
فرض کنید من به عنوان مدیر یک FTP سرور می خواهم به تمامی کاربران حاضر در شرکت به غیر از کاربر UNITY دسترسی به سرور FTP و منابع موجود در آن را بدهم ، برای اینکار ابتدا به همه اعضای گروه Domain Users دسترسی Allow با Permission فرضی Read و Write می دهیم و این اولین Rule من خواهد بود .
از طرفی دیگر برای کاربر UNITY یک Rule دیگر به شکل Deny با Permission فرضی Read و Write ایجاد می کنم . با اینکار همگی کاربران به غیر از کاربر UNITY قادر به دسترسی به اطلاعات موجود در FTP سرور خواهد بود. شما در صفحه باز شده در IIS Manager به قسمت های مختلفی بر می خورید که در قسمت Actions قرار دارند . برای اینکه درک بهتری از این اصطلاحات و کاری که انجام می دهند داشته باشید در ادامه کلیه این قسمت ها را برای شما تشریح خواهم کرد.
برای اینکه FTP سرور شما به درستی کار کند شما بایستی Rule مورد نظر خود را به ترتیب زیر ایجاد کنید :
یکی از مواردی که در همه قسمت های IIS مشاهده می کنید به ویژه قسمت Authentication و Authorization انتخاب کاربران یا گروه هایی است که می خواهیم برای آنها سطوح دسترسی یا هر کار دیگری را انجام دهیم ، اما با توجه به اینکه شیوه اضافه کردن کاربران در IIS تا حدود زیادی با شیوه اضافه کردن کاربران در ویندوز متفاوت است ممکن است کمی در خصوص انتخاب نوع کاربر اشتباه کنیم ، برای اینکه اینگونه ابهامات پیش نیاید می توانید از قسمت زیر که کلیه این اصطلاحات در آن توضیح داده شدند استفاده کنید :
بصورت پیشفرض زمانیکه یک کاربر وارد یک FTP سایت می شود ، می تواند محتویات ریشه و تمامی کاربرای که در FTP سایت دارای پوشه مخصوص به خود هستند را مشاهده کند .
با استفاده از قابلیت FTP User Isolation یا ایزوله کردن کاربران شما می توانید کاری کنید که کاربر به محض اینکه نام کاربری و رمز عبور خود را وارد کرد صرفا بتواند پوشه تعیین شده با نام کاربری خود را مشاهده کند و پوشه های سایر کاربران را مشاهده نکند .
این راهکار را بیشتر ISP ها برای اینکه کاربران بتوانند فایل های خود را در آن آپلود کنند استفاده می کردند تا از دسترسی و مشاهده پوشه سایر کاربران توسط یک کاربر جلوگیری کنند. همانطور که اشاره شد با استفاده از این روش کاربر با توجه به نام کاربری وارد کرده در کادر ورود نام کاربری و رمز عبور ، صرفا به پوشه به نام کاربری خود هدایت خواهد شد. در ادامه مواردی که می توانید در این قسمت تنظیم کنید را بصورت خلاصه توضیح می دهیم :
شاید بخواهید برای کاربرانی که با موفقیت به سایت FTP شما وارد می شوند یک پیام دلخواه نمایش بدهید . با استفاده از این گزینه شما می توانید به محض وارد شدن موفقیت آمیز کاربران به سایت FTP برای آنها یک پیام دلخواه را نمایش دهید .
این پیام شامل عنوان ، پیام خوش آمد و پیام خروج می شود ، در ادامه می توانید جزئیان مربوط به این قسمت را مشاهده کنید :
بر خلاف وب سایت ها که می توانند بدون استفاده از Directory Browsing به فعالیت خود ادامه دهند ، ساختار اصلی کارکرد FTP بر اساس Directory Browsing می باشد و در واقع به همین دلیل است که به FTP سرور می توان فایل سرور نیز گفت .
با اسفاده از تنظیماتی که در این قسمت قرار دارند شما می توانید به FTP سرور بگویید که محتویات خود را به شکل یا شماتیکی و با چه ساختاری به نمایش بگذارد ، زمانیکه شما directory browsing را تنظیم می کنید ، تمامی پوشه های موجود در آن FTP سایت این ساختار را به ارث خواهند برد . در ادامه تنظیماتی را که شما در این قسمت می توانید انجام دهید را مشاهده می کنید :
شما زمانی از قابلیت FTP Firewall Support استفاده می کنید که می خواهید تنظیمات مربوط به ارتباطات Passive که از طرف FTP Client ها به سمت FTP سرور در زمانیکه FTP سرور در پشت یک فایروال قرار دارد ارسال می شود را تغییر دهید.
توجه کنید که بعد از انجام این تنظیمات شما صرفا رفتارهای FTP سرور را کنترل کرده اید و در نهایت بایستی تنظیمات مربوط به فایروال برای اینکه از خود ارتباطات FTP را عبور دهد را بایستی بصورت جداگانه انجام دهید . در ادامه شما مواردی را که می توانید در این صفحه انجام دهید را مشاهده می کنید :
با استفاده از این قابلیت شما می توانید برای یک یا یک سری از آدرس های IP مشخص محدودیت دسترسی برای استفاده از منابع سرور را ایجاد کنید ، این محدودیت های دسترسی می تواند به غیر از آدرس IP به وسیله نام دامین هم ایجاد شود .
قبل از اینکه شما بتوانید محدودیت های دسترسی به وسیله نام دامین را ایجاد کنید ابتدا بایستی از طریق گزینه Edit این امکان را فعال کنید. در ادامه تمامی مواردی را که می توانید در این قسمت تنظیم کنید را مشاهده خواهید کرد.
همانطور که در ابتدای قسمت قبلی اشاره شد ، FTP بصورت پیشفرض یک پروتکل ناایمن است و اطلاعات را رمز نگاری نمی کند ، در همان قسمت نیز عنوان کردیم که ما می توانیم با استفاده از پروتکل SSL یا Secure Socket Layer این اطلاعات را رمزنگاری کنیم .
با استفاده از تنظیماتی که در این قسمت مشاهده می کنید شما می توانید هم کانال کنترل و هم کانال داده های FTP را رمز نگاری کنید و مطمئن باشید که اطلاعاتی که بین سرور و کلاینت رد و بدل می شود بصورت رمزنگاری شده منتقل می شود . مواردی را که می توانید در اینجا انجام دهید چه در محیط شبکه عمومی اینترنت و چه در شبکه داخلی قابل استفاده می باشد . تنظیماتی که در این صفحه مشاهده می کنید به شکل زیر می باشند :
در این دو قسمت به بررسی ماهیت پروتکل FTP و موارد استفاده آن اشاره کردیم ، در قسمت اولی به شیوه نصب سرور FTP و همچنین راه اندازی یک FTP سایت ساده اقدام کردیم و شما با راه اندازی یک سرور FTP در محیط کار عملی آشنا شدید ، اما در این قسمت به بررسی تنظیمات و ساختار مدیریت درست یک FTP سرور و امکاناتی که این سرور در اختیار ما قرار می دهد آشنا شدیم ، امیدوارم که مورد توجه شما دوستان قرار گرفته باشد
بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات
محمد نصیری هستم ، بنیانگذار انجمن تخصصی فناوری اطلاعات ایران و مجموعه توسینسو ، هکر قانونمند و کارشناس امنیت سایبری ، سابقه همکاری با بیش از 80 سازمان دولتی ، خصوصی ، نظامی و انتظامی در قالب مشاور ، مدرس و مدیر و ناظر پروژه ، مدرس دوره های تخصص شبکه ، امنیت ، هک و نفوذ ، در حال حاضر در ایران دیگه رسما فعالیتی غیر از مشاوره انجام نمیدم ، عاشق آموزش و تدریس هستم و به همین دلیل دوره های آموزشی که ضبط می کنم در دنیا بی نظیر هستند.
زمان پاسخ گویی روز های شنبه الی چهارشنبه ساعت 9 الی 18
فقط به موضوعات مربوط به محصولات آموزشی و فروش پاسخ داده می شود