یکشنبه, ۹ اردیبهشت, ۱۴۰۳ / 28 April, 2024
مجله ویستا

یا Apache، یک انتخاب


یا Apache، یک انتخاب
از زمان ارایه سیستم‌عامل شبکه‌ای ویندوز ۰.۴NT، وب سرورIIS یکی از اجزای سیستم‌عامل‌های سرور مایکروسافت بوده که نصب یا عدم نصب آن از طرف کاربر به صورت دلخواه و به راحتی در هر زمانی قابل انجام بوده است. به عنوان مثال ویندوز ۰.۴ NT همراه ۴IIS ، ویندوز ۲۰۰۰ همراه ۵ IIS و ویندوز XP به همراه ۱.۵ IIS به بازار ارایه شدند. تا قبل از ویندوز ۲۰۰۳، کلیه ویرایش‌ها و نسخه‌های مختلف IIS بسیار مشابه هم بودند و می‌شد آن‌ها را جزء یک خانواده به حساب آورد، اما پس از آن و با به میان آمدن ویندوز ۲۰۰۳، که نسخه ششم IIS را به همراه خود داشت، قضیه کاملاً متفاوت شد. در این نسخه که می‌توان آن را یک بازنویسی کامل از وب سرور قدیمی دانست، بسیاری از مدل‌های اجرای کد، تسهیلات مربوط به مدیریت و سرعت و کارایی آن، دچار تغییرات و بهبودهای قابل ملاحظه‌ای شده‌است. از طرف دیگرآپاچی با سابقه‌ای بیشتر که براساس کدینگ http کار می‌کرد، همواره به عنوان سمبل وب سرورهای دنیای یونیکس مطرح بود. نسخه۱.۳ x آپاچی که تا سال ۲۰۰۲ مورد استفاده قرار می‌گرفت، با استفاده از ترفندهای تکنیکی خاصی برروی سایر سیستم‌عامل‌ها و حتی ویندوز هم قابل نصب و اجرا بود. اما با پیدایش آپاچی نسخه ۲، همین معادلات هم دچار تحولی بزرگ گردید. این نسخه که دارای محیطی کاملاً تغییر یافته بوده و توابع درون آن با ظرافت هر چه تمام‌تر استقلال خود را از سیستم‌عامل تثبیت کرده بودند، توانست بر روی کلیه سیستم‌عامل‌های ویندوز، یونیکس، لینوکس، مکOSX و حتی سیستم‌عامل‌های دیگری چونVMS و Be OS نصب و اجرا شود.
مقایسه
در مقام مقایسه IIS و آپاچی می‌توان گفت که هر کدام دارای مزایا و معایبی نسبت به یکدیگر هستند. IIS فقط برای اجرا در ویندوز ساخته شده ‌است به‌خصوص نسخه ششم آن فقط در ویندوز ۲۰۰۳ قابل‌اجرا می‌باشد. اگر چه بسیاری از کارشناسان، این مسئله را نوعی نقطه‌ضعف در ساختار IIS می‌دانند، برخی دیگر هماهنگی بسیار دقیق میان آن و ویندوز ۲۰۰۳ و سرویس‌های دیگر سیستم‌عامل را که باعث آسان‌تر بودن مدیریت IIS شده است، از نقاط برتری آن به حساب می‌آورند. به‌خصوص در نسخه ششم جدا شدن ماژول مخصوص دریافت درخواست‌ها(Request) از ماژول ویژه پردازش آن‌ها، سهم به‌سزایی در افزایش کارایی آن داشته است. در این روش ماژول Listener که در کرنل مستقر شده است (Http.sys)، درخواست‌های ارسالی از طرف کلاینت‌ها را دریافت‌‌‌کرده و آن‌ها را به ترتیب در داخل یک یا چند صف درخواست قرار می‌دهد. سپس IIS به این درخواست‌ها با اختصاص حداقل یک پروسه کاری (Worker Process) به هر درخواست، پاسخ می‌دهد. این ویژگی باعث می‌شود حتی زمانی که IIS به شدت مشغول پاسخ‌دهی به درخواست‌های قبلی است، ماژول جداگانه‌ای که در کرنل مستقر است، بتوانند درخواست‌های جدید را دریافت کرده و حداقل آن‌ها را در انتظار پاسخ قرار دهند. همچنین با این وضعیت، سیستم‌عامل می‌تواند کنترل بهتری را در اختصاص پروسه‌های لازم به IIS جهت پردازش درخواست‌ها انجام دهد. در آپاچی هم جریان تا حدودی مشابه همین روال است. در این جا تعدادی ماژول با قابلیت انجام چند پردازش در واحد زمان (Multi Processing module) وظیفه دریافت و پاسخ به درخواست‌ها را برعهده دارند. این ماژول‌ها که با استفاده از تکنولوژی APR یا Apache Portable Runtime برروی بسیاری از سیستم‌عامل‌هایی که از کدهای کامپایل شده زبان C پشتیبانی می‌کنند، قابل اجرا هستند، با استفاده از امکانات و قابلیت‌هایMultithreading همان سیستم‌عامل میزبان به سرعت و به صورت همزمان درخواست‌های رسیده از طرف کلاینت‌ها را دریافت و پردازش می‌کنند.
امنیت
یکی از مزایای، IIS ارتباط تنگاتنگ موجود بین آن و سیستم‌عامل است. این عامل سبب می‌شود تا IIS با توجه به این‌که سیستم‌عامل بسیاری از موارد امنیتی را قبل از رسیدن درخواست به وب سرور مورد بررسی قرار می‌دهد و هویت کاربران متصل را ارزیابی (Authentication) می‌کند، با اطمینان بیشتری به کار خود ادامه دهد. ضمن این‌که مدیر سیستم هم به دلیل اشتراک روشی که در تأمین امنیت بین سیستم‌عامل و وب سرور وجود دارد، مجبور به دوباره کاری نمی‌شود. به عنوان مثال اگر شما در اکتیودایرکتوری ویندوز ۲۰۰۳ دسترسی به یک یا چند فایل خاص را برای یک گروه از کاربران مجاز و برای گروهی دیگر غیرمجاز تعریف کرده باشید، این کاربران از هر روشی که بخواهند به آن فایل‌ها دسترسی پیدا کنند (حتی از طریق وب سرور) باید تابع قواعد تنظیم شده در اکتیودایرکتوری باشند و این قوانین در IIS نیز حکمفرما است.
در مورد آپاچی نسخه دوم، مسئله به این سادگی و روانی نیست و قاعدتاً مدیریت امنیت در مورد آن پیچیده‌تر و وقت‌گیرتر از IIS است. البته اکنون ماژول‌ها و آداپتورهای جدیدی در آپاچی تعبیه شده که امکان ارتباط بین آن و اکتیودایرکتوری ویندوز یا Password یونیکس را به‌وجود می‌آورد، اما باز هم می‌توان گفت که اصولاً با وجود این ارتباط هم در آپاچی، سیستم‌عامل و وب سرور هر کدام ساز خود را می‌زنند و آپاچی چندان از قواعد امنیتی تعریف شده در سیستم‌عامل تبعیت نمی‌کند. البته بسیاری از طرفداران آپاچی این مسئله را نوعی نقطه قوت آپاچی دانسته و با ذکر این نکته که اولاً هر درخواست از طرف خارج باید از دو سد محکم سیستم‌عامل و وب سرور عبور کند و ثانیاً حفره‌های امنیتی در سیستم‌عامل‌های یونیکس و آپاچی بسیار کمتر از ویندوز و IIS است، استفاده از آپاچی را از لحاظ امنیتی دارای ریسک کمتری نسبت به IIS می‌دانند.
از لحاظ پروتکل‌های امنیتی، هر دو وب سرور کلیه پروتکل‌ها از جمله SSL ،IPsec و مکانیسم‌های هویت‌سنجی Basic Digest LDAP را پشتیبانی می‌کنند.كارایی
مقایسه كارایی آپاچی و IIS همواره از مشكل‌ترین بحث‌های تكنیكی دنیای وب سرورها بوده است؛ چرا كه این نوع مقایسه مستلزم به‌وجود آوردن شرایط یكسان آزمایش به صورت منصفانه‌ برای دو طرف رقابت است كه دست یافتن به این شرایط، كاری آسان و صددرصد قابل انجام نمی‌باشد. شاید به تصور خیلی‌ها می‌توان زمان دریافت، پردازش و پاسخ هر دو وب سرور به یك صفحه CGI یا JSP (كه مورد پشتیبانی هر است) را برروی یك سرور با مشخصات سخت‌افزاری یكسان به معرض آزمون گذاشت، اما این هم به نمی‌تواند تنهایی پاسخگوی معمای كارایی باشد. چرا كه اولاً شاید هر دو وب سرور ادعای بهترین كارایی خود در تكنولوژی مشتركی مثل JSP را نداشته باشند. مثلاً شاید مایكروسافت ASP.NET را كه فعلا در آپاچی پشتیبانی نمی‌شود، بهترین عرصه برای نمودار‌شدن كارایی IIS بداند. ثانیاًٌ نباید فراموش كرد كه آپاچی، یك وب سرور چند سكویی می‌باشد و این باعث می‌شود تا صورت مسئله كمی پیچیده‌تر شود و كسانی كه می‌خواهند به داوری مسابقه كارایی این دو وب سرور بنشینند را با سؤالی جدیدتر روبرو كند و آن هم این است كه IIS ویندوز را با آپاچی كدام سیستم‌عامل مقایسه كنیم ؟ آیا اصولاً آپاچی ادعایی بر ارایه بهترین كیفیت و كارایی خود برروی سیستم‌عامل مشترك ویندوز را دارد یا این‌كه كماكان به سرعت خود برروی سیستم‌عامل‌های یونیكس و لینوكس می‌بالد؟
در IIS ۶ وجود مدل‌های متعدد پردازشی كه ویژه كار در محیط‌های چند پردازنده‌ای در نظر گرفته شده‌اند، سرعت اجرای برنامه‌های ASP و یا ISAPI را تا حد بسیار مطلوبی بالا برده‌اند. همچنین درایور HTTP.sys در این نسخه قادر است به صورت مستقیم به اطلاعات موجود در cache (چه هارددیسك و چه حافظه اصلی) دسترسی پیدا كند بدون آن‌كه نیازمند وجود واسطه‌ای مثل پروسه‌های كاری برای انجام این كار باشد. IIS همچنین قادر است صفحاتی را كه توسط عناصر دینامیك وب به صورت RunTime ساخته می‌شوند را در cache ذخیره كند تا در صورتی كه كلاینت‌ بعدی هم بخواهد همین صفحه را تولید كند، به جای ساختن دوباره آن، از محل cache اطلاعات را بدون پردازش خاصی به سمت كلاینت مذكور بفرستد.
در آپاچی نیز اوضاع به همین گونه است. ماژول‌های modperl وmodphp با استفاده از همان مكانیسم cache سرعت تولید صفحات دینامیك را همانند صفحات استاتیك به حداكثر خود می‌رسانند. همچنین دقیقاً مشابه فیلترهای ASP و ISAPI در IIS، در این جا هم ماژول‌های Perl و PHP مستقیماً درخواست‌های كلاینت‌ها را مورد بررسی قرار داده و پاسخ لازم را ارسال می‌كنند و بدین وسیله از ارجاع درخواست‌ها به محیط خارج آپاچی و كند شدن روند پاسخ جلوگیری می‌كنند.
مدیریت
در مورد مدیریت وب سرور، اختلافاتی بین دو وب سرور مذكور وجود دارد. آپاچی در نسخه‌های اولیه خود، وب سروری كاملا TextBased به نظر می‌‌رسید كه صرفاً با دستكاری مستقیم در فایل‌های پیكربندی، تنظیم وب سرور و یا با استفاده از دستورات خط فرمان مدیریت آن امكان‌پذیر بود. اما اكنون بسیاری از واسط كاربرهای گرافیكی مثل Comanche قادرند یك محیط گرافیكی كاربرپسند و در واقع یك لایه بیرونی برای كار با آپاچی فراهم كنند. در این زمینه لیستی از واسط كاربرهای گرافیكی تهیه شده در سایت آپاچی به نشانی http://gui.apache.org موجود و قابل داونلود است. البته بسیاری از كاربران وجود مدیریت و تنظیمات Text Based را برای آپاچی یك مزیت عنوان می‌كنند. به عقیده این افراد، با این نوع پیكربندی آپاچی می‌توان به سادگی و صرفاً با كپی كردن چند فایل از كامپیوتری به كامپیوتر دیگر همه تنظیمات یك سرور آپاچی را به سرور دیگر منتقل و از صرف وقت برای تنظیم دستی آن خلا‌ص شد. این مسئله برای وب سروری مثل IIS كه تنظیمات خود را در قالب فایل‌های باینری نگهداری می‌كند، قابل انجام نیست. البته در IIS ۶ تنظیمات وب سرور در قالب فایل‌های XML قابل دسترسی است. و بدین‌وسیله و با روش Import و Export می‌توان تنظیمات یك وب‌‌سرور را به دیگری منتقل كرد. همچنین اینكه علاوه بر این كار، IIS ۶ امكان مدیریت راه‌دور را از طریق دستورات خط فرمان و اجرای آن با پروتكل Telnet را مشابه آپاچی به كاربران خود داده است. در ضمن هر دو وب سرور، امكان مدیریت از طریق وب را به كاربران داده‌اند. IIS از طریق Web Based Administration و آپاچی با استفاده از ابزاری به نام Webmin این تسهیلات را مهیا كرده‌اند.
قابلیت اطمینان
IIS ۶ با جدا كردن حافظه و محل اجرای برنامه‌های وب از یكدیگر، باعث شده است در صورت بروز یك مشكل در هر یك از برنامه‌های در حال اجرا، این مشكل به سایر برنامه‌ها و پردازش‌های در حال اجرا سرایت نكند. در آپاچی نسخه دوم این عمل تا حدودی قابل انجام است. بدین‌معنی كه اصولاً آپاچی با مكانیسم‌های تشخیص و ترمیم خطا، از سرایت مشكل به قسمت‌ها و پردازش‌های دیگر جلوگیری می‌كند، اما به طور كلی نمی‌تواند همانند IIS عمل جداسازی برنامه‌ها از یكدیگر را انجام دهد و در برخی موارد، بروز یك مشكل در یكی از پردازش‌ها، مدیر وب را ناچار به راه‌اندازی مجدد (Restart) وب سرور می‌كند.
نكته دوم در این مقایسه هم به نفع IIS تمام می‌شود. بدین صورت كه در نسخه ششم آن امكان پیكربندی مجدد سیستم حتی در زمان اجرای پردازش‌ها و بدون‌نیاز به راه‌اندازی مجدد وب‌سرور امكان‌پذیر است. این امكان كه به آن Live Configuration گفته می‌شود، سبب می‌شود مدیر سیستم بتواند بدون آن‌كه وب سرور و در نتیجه بسیاری از پردازش‌های در حال اجرا و درخواست‌های در حال پاسخگیری را متوقف كند، تنظیمات IIS را تغییر دهد و وب‌ سرور را Refresh كند. در صورتی كه در آپاچی نسخه دوم، این عمل بدون بوت كردن مجدد وب سرور میسر نیست.
Apache ۲.۱ Alpha
در نسخه ۱/۲ آپاچی كه نسخه ابتدایی آلفای آن اكنون قابل دریافت و نصب است، وعده‌های بسیاری برای افزایش كارایی یا پوشاندن نقاط ضعف نسخه‌های قبلی داده شده‌است. بسیاری از ماژول‌های مربوط به chaching Authn/Authz مورد بازبینی قرار گرفته و نسبت به نسخه‌های سابقشان از كارایی بهتری برخوردارند. پروتكل http در این نسخه قادر است فایل‌ها یا درخواست‌های با بیش از دو گیگابایت را دریافت و پردازش كند. مكانیسم smart Filtering در آپاچی ۱/۲ از یك شیوه جدید فیلترگذاری پویا برخوردار است كه باعث می‌شود تا هر فیلتر براساس نوع درخواست یا پاسخی كه قرار است كنترل شود، فعال یا غیرفعال عمل كند. همچنین در این نسخه ماژول جدیدی برای ثبت كردن خطاهایی كه در ارتباط با كلاینت‌ها رخ می‌دهد، تعبیه شده است. مدیریت حافظه stack برای پردازش‌های در حال اجرا تغییریافته و اكنون آپاچی قادر است براساس سكویی كه برروی آن در حال اجرا است، میزان این حافظه را افزایش دهد. از لحاظ امنیتی به غیر از تغییرات ایجاد شده در ماژول‌های مربوط به هویت‌سنجی كه بیشتر باعث افزایش سرعت فرآیندهای مربوط به آن‌ها شده است، ماژول modssl نیز اكنون با پشتیبانی از RFC۷۱۸۲، قادر‌است به جای برقراری ارتباط به روش متنی (chear text)، از روش كدگذاری TLS برای این كار استفاده كند.

مهیار داعی‌الحق
منبع : ماهنامه شبکه


همچنین مشاهده کنید