وب سرور آپاچی Apache چیست؟

Apache دارای امکانات ویژه می باشد که متداول ترین استفاده از ویژگی های این برنامه .htaccess است که طراحان حرفه ای در محیط لینوکس از آن بهره می گیرند . برای نمونه زمانی که بخواهند اولین صفحه در سایت بخصوصی باشد با یک دستور در آن پرونده این امر ممکن می گردد و یا زمانی که صاحب سایت مایل نیست که فایلهای موجود در سرور وی توسط دیگران دزدیده شود و بخواهد که مانع از پیوند مستقیم آنها شود Apache کمک می کند تا به خواستشان برسند . زمانی که برنامه نویس بخواهد که محل واقعی صفحات دیده نشود نیز این برنامه مورد استفاده قرار می گیرد .

تاریخچه وب سرور Apache

Apache Web Server بیشترین استفاده را روی اینترنت دارد بیشتر از ۵۰ درصد از وب سایتهای موجود از  Apache استفاده میکنند. این محصول توسط گروهی عرضه می شود که به Apache Group موسوم اند و این گروه پروژه Apache Http Server Project را اداره می کنند این گروه سخت درکارند تا با ارائه محصولاتی با Configuration بالا وانعطاف پذیری خوب عرضه نمایند.

اولین ورژن Apache درApril سال ۱۹۹۵ که ورژن ۰٫۶٫۲ است خارج شد و آخرین ورژن موجود ۲٫۴٫۲۳ است. تا قبل از آپاچی یک وب سرور وجود داشت بنام NCSA Httpd 1.3 که در واقع اولین ورژن آپاچی از این وب سرو نشات گرفته است و در واقع پایه و اساس آپاچی بود ولی آپاچی به سرعت رشد کرد ودرmay-june سال ۱۹۹۵ گروه آپاچی ورژن ۰٫۷ را تولید کردند اما بعد از مدتی گروه اپاچی متوجه شد که این وب سرور  نیاز به معماری جدید دارد و با یک معماری جدید محصول بعدی وارد بازار شد درسال ۱۹۹۵ (Auguest) این محصول ورژن ۰٫۸٫۸ آپاچی بود.

ورژن جدید با معماری جدید شامل ساختارهای ماژولار و همچنین بسط توابع API وهمچنین یک سری خصوصیات سیستم عامل از قبیل POOL-based memory  allocatcon و new forking process model بود و این معماری جدید گسترش یافت تا به آخرین ورژن ان یعنی ۲٫۴٫۲۳ رسید، البته با ورود این وب سرور جدید وب سرور قدیمی Ncsa http4 بازنشسته شد و این نسل جدید شروع به کار کرد.

معماری و کارایی وب سرور Apache

بسته نرم افزاریApache از نظر معماری وکاربرد به چهارلایه زیر تقسیم شده است مطابق با شکل زیر:

operating system

اساس functionolity درشکل فوق به وسیله سیستم عامل در لایه زیرین تهیه می شود، برای apache سیستم عامل مربوطه ورژن های گوناگون unix است اما سیستم عامل دیگر نیز می توانند پاسخ قرار گیرند، سیستم عامل هایی از قبیل macos.win32.os/2 وحتی posix که سیستم عامل ماشین های main frame است .

Apache kernel ,core module, kernel libravies

لایه ۲ که هسته اصلی و شامل کرنل و ماژول های مربوط به آن  و یک سری librariey  استاندارد است، این لایه به همراه ماژول های مربوطه در عمل Http Server یعنی مبادله اطلاعاتی میان Browser و Server مورد استفاده قرار می گیرد. این لایه همچنین دارای توابع API و کدهای قابل استفاده مجدد (REUSABLE) برای لایه های بالایی است.

Apache Modules

این لایه در واقع لایه ای است که Apache Webserver را در میان وب سرورهای دیگر متمایز کرده است و در واقع در این لایه قسمت User-visible Functionality شگفت انگیز و تحسین بر انگیز است و ماژول های موجود آنقدر دارای Functionlity بالاهستند که  برای سرویس دادن استفاده میشود و این نشان دهنده مستقل بودن و وابسته نبودن ماژولها نسبت به یکدیگر است.

در واقع ماژول هایی که مورد استفاده وب سرورهای دیگر است. وب سرورهای دیگر بدون دسترسی به لایه ۱ و ۲ می توانند مستقیم از ماژول های لایه ۳ و ۴ استفاده کنند.

Third-party libraries

در لایه ۳ ممکن است بعضی از ماژول ها به تنهایی کارآیی نداشته باشند و برای به کار بردن آنها نیاز به library های خارجی است مانند mod-perl و mod-ssl، مثلا برای استفاده از mod-perl به یک سری library های زبان perl نیاز داریم. از آنجاکه لایه های ۴ و ۳ و ماژول های مربوطه مستقل از لایه ۲ هستند و به صورت loosely coupled با لایه ۲ هستند و در واقع ارتباط استاتیکی با لایه ۲ ندارند و در حقیقت ارتباط آنها با این لایه به صورت پویا یا dynamic است و این ارتباط به وسیله  Dynamic Shared Objectفراهم می شود.

این ویژگی و ساختار دارای انعطاف پذیری بالا است، یک نمونه انعطاف پذیری این است که بجای اینکه این ارتباط (ارتباط بین ۴و۳ با ۲) در موقع نصب کردن آپاچی به صورت استاتیکی بر قرار شود، این ارتباط در واقع STARTUPTIME  لایه ای ۴ و ۳ برقرار می شود یعنی هر موقع لایه ۳  می خواهند با لایه ۲ ارتباط برقرار کنند همان موقع پیوند توسط DSO برقرار می شود لذا پیوند دائمی و ایستا نیست. در واقع DSO یکی از ویژگی های متمایز آپاچی نسبت به سایر وب سرورها می باشد.

Apache kernel functionlity

هسته آپاچی که در لایه ۲  واقع است دارای دو هدف است:

۱- تهیه Basic HTTP server functionality (برای مبادله اطلاعاتی بین سرور و مرورگر)

۲- تهیه ماژول های API و توابع مورد نیاز

کرنل در قسمت ۱ وظایف زیر را انجام میدهد:

۱- یک سری وظایف سیستم عاملی از قبیل:

الف – Memory Segment و… که در واقع Resource Handling می شود.

ب – نگهداری Pre-Forked Process Model

۲- سرکشی بهSocket  هایTCP/IP

۳- کنترل ورود HTTP Request به وسیله پروسس های مربوطه

۴- مدیریت HTTP Protocol به منظور رسیدگی به در خواست HTTP Request

۵- تهیه Read/Write Buffer

و همچنین توابع اضافی مثل url، mime ,header passing و dsoloading.

API ماژول هایی هستند که مورد استفاده لایه سوم هستند و در هسته آپاچی به وجود می آیند، البته این به آن معنا نیست که لایه سوم وابسته به این ماژول ها (ماژول های API) است. API شامل لیست توابعی هستند که در داخل ماژول های لایه سوم وجود دارد.

وقتی که هسته یک درخواست HTTP REQUEST دریافت می کند برای انتشار این درخواست بین ماژول های مختلف از API استفاده می کند چرا که API مشخص می کند که هر تابع مربوط به چه ماژولی است و هر ماژول چه توابعی دارد و هر درخواست پیغام به کدام ماژول باید برود البته API فقط لیست توابع موجود درماژول ها نیست بلکه دارای توابعی هست که به طور عمومی قابل استفاده ماژول های لایه سوم است. این توابع با (ap-xxx) شروع می شود هر  HTTP REQUESTبه ده شاخه مجزا تقسیم می شود و هر ماژول اجرای یکی از شاخه ها را بر عهده می گیرد و در مواقع لازم نیز از توابع (ap-xxx) استفاده می کند.

توضیحات مربوط به ماژول های به وب سرور Apache

ماژول های مربوط به هسته:

۱- Core – Modules

http-core

یک ماژول پایه برای وب سرور Apache است که کارآیی هسته آپاچی از این ماژول نشات می گیرد این ماژول به عنوان یک ماژول API نیز به کار برده می شود.

ولی سه ویژگی مهم دارد :

الف) همانند ماژول های دیگر نامش از کلمه mod-xxx شروع نمیشود بلکه همانطور که مشاهده می شود از http-xxx شروع شده است.

ب) درست است که به عنوان یک ماژول API کاربرد دارد اما هیچ اتصال API به لایه سوم ندارد و همه لینک های این ماژول در لایه ۲ یعنی در هسته آپاچی است و لینک و اتصالی به بیرون از  هسته ندارد.

پ) این ماژول یک ماژول اجباری است و هرگز از روی سیستم پاک نمی شود. این ماژول در مسیر مشخص (SN/MAIN / http  -core c) واقع است و به صورت پیش فرض فعال است.

mod –so

این ماژول در لایه دوم واقع است و در واقع جزو  Core Modulesها است این ماژول اشیاء DSO را تولید می کند و همانطور که قبلا داده شده است این اشیاء برای پیوند بین لایه سوم و دوم مورد استفاده قرار می گیرد در واقع این ماژول نقش حیاتی برای ماژول های این دولایه دارد این ماژول درحالت عادی غیرفعال است این ماژول در مسیر SRC/MODULES/STANDARD/MOD –SO.C واقع است.

۲- URL  Mapping  –ماژول های مربوط به URL

mod – alias

ماژول mod -alias در روزهای اولی که apache به وجود آمد برای Translation و Redirection یک URL مورد استفاده قرار می گرفت، این روش محدودیت هایی داشت اما فهمیدن مکانیسم این ماژول ساده بود.

این روش به وسیله MAPPING کردن URL به Directory path عمل Translation انجام می شود و پس از ترجمه عمل Redirection انجام می شود.

این ماژول در  .src/modules /standards/mod-alias .c قرار گرفته و در حالت عادی غیرفعال است.

mod-rewrite

این ماژول هم روش دیگری برای Translation و  Redirection(ترجمه و مسیریابی) URL است ولی این روش درورژن های بعدی Apache به کار گرفته شد.

در این روش از الگوریتم پیچیده تری استفاده شده است و در واقع این ماژول هم یکی از وجوه تمایز Apache نسبت به سایر وب سرورها است و جزء نقاط قوت آن می باشد.

این ماژول درsrc/modules/standards/mod-rewrite.c قرار دارد و در حالت عادی غیرفعال است.

mod-speling

این ماژول برای تصحیح و کاهش خطا در URL مورد استفاده قرار می گیرد در واقع اگر در نام URL درخواستی، ازقلم افتادگی، اشتباه و یا غیره اتفاق افتد این ماژول سعی می کنند بعد از اینکه ماژول های rewrite و alias نتوانستند URL مربوطه را شناسایی کنند که با وجود اشتباه حتی اگر میزان اشتباه زیاد باشد،

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

این ماژول در مسیرsrc/modules/standards/mod-speging.c قرار دارد ودر حالت عادی غیرفعال است.

ماژول های دیگری نیز مانند Mod-imap وmod-dir در بخش URL  Mapping وجود دارند.

۳- ماژول های Access Control

این بخش تنها یک ماژول دارد که mod-access است.

۴- User-Authentication

در واقع در این قسمت از کد های خاص برای اطمینان از اینکه پیغام و در خواست رسیده صحیح است یا صحیح به دست گیرنده پیام رسیده است یا نه استفاده می شود.

 

دیدگاه‌تان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *